summaryrefslogtreecommitdiffstats
path: root/webapp/components/admin_console/system_users/system_users_dropdown.jsx
diff options
context:
space:
mode:
Diffstat (limited to 'webapp/components/admin_console/system_users/system_users_dropdown.jsx')
-rw-r--r--webapp/components/admin_console/system_users/system_users_dropdown.jsx529
1 files changed, 0 insertions, 529 deletions
diff --git a/webapp/components/admin_console/system_users/system_users_dropdown.jsx b/webapp/components/admin_console/system_users/system_users_dropdown.jsx
deleted file mode 100644
index 79ccc8b31..000000000
--- a/webapp/components/admin_console/system_users/system_users_dropdown.jsx
+++ /dev/null
@@ -1,529 +0,0 @@
-// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
-// See License.txt for license information.
-
-import ConfirmModal from 'components/confirm_modal.jsx';
-
-import TeamStore from 'stores/team_store.jsx';
-import UserStore from 'stores/user_store.jsx';
-
-import Constants from 'utils/constants.jsx';
-import * as Utils from 'utils/utils.jsx';
-import {updateActive} from 'actions/user_actions.jsx';
-import {adminResetMfa} from 'actions/admin_actions.jsx';
-import * as UserUtils from 'mattermost-redux/utils/user_utils';
-
-import {FormattedMessage} from 'react-intl';
-
-import PropTypes from 'prop-types';
-
-import React from 'react';
-
-export default class SystemUsersDropdown extends React.Component {
- static propTypes = {
-
- /*
- * User to manage with dropdown
- */
- user: PropTypes.object.isRequired,
-
- /*
- * Function to open password reset, takes user as an argument
- */
- doPasswordReset: PropTypes.func.isRequired,
-
- /*
- * Function to open manage teams, takes user as an argument
- */
- doManageTeams: PropTypes.func.isRequired,
-
- /*
- * Function to open manage roles, takes user as an argument
- */
- doManageRoles: PropTypes.func.isRequired,
-
- /*
- * Function to open manage tokens, takes user as an argument
- */
- doManageTokens: PropTypes.func.isRequired
- };
-
- constructor(props) {
- super(props);
-
- this.state = {
- serverError: null,
- showDemoteModal: false,
- showDeactivateMemberModal: false,
- user: null,
- role: null
- };
- }
-
- handleMakeActive = (e) => {
- e.preventDefault();
- updateActive(this.props.user.id, true, null,
- (err) => {
- this.setState({serverError: err.message});
- }
- );
- }
-
- handleManageTeams = (e) => {
- e.preventDefault();
-
- this.props.doManageTeams(this.props.user);
- }
-
- handleManageRoles = (e) => {
- e.preventDefault();
-
- this.props.doManageRoles(this.props.user);
- }
-
- handleManageTokens = (e) => {
- e.preventDefault();
-
- this.props.doManageTokens(this.props.user);
- }
-
- handleResetPassword = (e) => {
- e.preventDefault();
- this.props.doPasswordReset(this.props.user);
- }
-
- handleResetMfa = (e) => {
- e.preventDefault();
-
- adminResetMfa(this.props.user.id,
- null,
- (err) => {
- this.setState({serverError: err.message});
- }
- );
- }
-
- handleDemoteSystemAdmin = (user, role) => {
- this.setState({
- serverError: this.state.serverError,
- showDemoteModal: true,
- user,
- role
- });
- }
-
- handleDemoteCancel = () => {
- this.setState({
- serverError: null,
- showDemoteModal: false,
- user: null,
- role: null
- });
- }
-
- handleDemoteSubmit = () => {
- if (this.state.role === 'member') {
- this.doMakeMember();
- }
-
- const teamUrl = TeamStore.getCurrentTeamUrl();
- if (teamUrl) {
- // the channel is added to the URL cause endless loading not being fully fixed
- window.location.href = teamUrl + '/channels/town-square';
- } else {
- window.location.href = '/';
- }
- }
-
- handleShowDeactivateMemberModal = (e) => {
- e.preventDefault();
-
- this.setState({showDeactivateMemberModal: true});
- }
-
- handleDeactivateMember = () => {
- updateActive(this.props.user.id, false, null,
- (err) => {
- this.setState({serverError: err.message});
- }
- );
-
- this.setState({showDeactivateMemberModal: false});
- }
-
- handleDeactivateCancel = () => {
- this.setState({showDeactivateMemberModal: false});
- }
-
- renderDeactivateMemberModal = () => {
- const title = (
- <FormattedMessage
- id='deactivate_member_modal.title'
- defaultMessage='Deactivate {username}'
- values={{
- username: this.props.user.username
- }}
- />
- );
-
- const message = (
- <FormattedMessage
- id='deactivate_member_modal.desc'
- defaultMessage='This action deactivates {username}. They will be logged out and not have access to any teams or channels on this system. Are you sure you want to deactivate {username}?'
- values={{
- username: this.props.user.username
- }}
- />
- );
-
- const confirmButtonClass = 'btn btn-danger';
- const deactivateMemberButton = (
- <FormattedMessage
- id='deactivate_member_modal.deactivate'
- defaultMessage='Deactivate'
- />
- );
-
- return (
- <ConfirmModal
- show={this.state.showDeactivateMemberModal}
- title={title}
- message={message}
- confirmButtonClass={confirmButtonClass}
- confirmButtonText={deactivateMemberButton}
- onConfirm={this.handleDeactivateMember}
- onCancel={this.handleDeactivateCancel}
- />
- );
- }
-
- renderAccessToken = () => {
- const userAccessTokensEnabled = global.window.mm_config.EnableUserAccessTokens === 'true';
- if (!userAccessTokensEnabled) {
- return null;
- }
-
- const user = this.props.user;
- const hasPostAllRole = UserUtils.hasPostAllRole(user.roles);
- const hasPostAllPublicRole = UserUtils.hasPostAllPublicRole(user.roles);
- const hasUserAccessTokenRole = UserUtils.hasUserAccessTokenRole(user.roles);
- const isSystemAdmin = UserUtils.isSystemAdmin(user.roles);
-
- let messageId = '';
- if (hasUserAccessTokenRole || isSystemAdmin) {
- if (hasPostAllRole) {
- messageId = 'admin.user_item.userAccessTokenPostAll';
- } else if (hasPostAllPublicRole) {
- messageId = 'admin.user_item.userAccessTokenPostAllPublic';
- } else {
- messageId = 'admin.user_item.userAccessTokenYes';
- }
- }
-
- if (!messageId) {
- return null;
- }
-
- return (
- <div className='light margin-top half'>
- <FormattedMessage
- key='admin.user_item.userAccessToken'
- id={messageId}
- />
- </div>
- );
- }
-
- render() {
- let serverError = null;
- if (this.state.serverError) {
- serverError = (
- <div className='has-error'>
- <label className='has-error control-label'>{this.state.serverError}</label>
- </div>
- );
- }
-
- const user = this.props.user;
- if (!user) {
- return <div/>;
- }
- let currentRoles = (
- <FormattedMessage
- id='admin.user_item.member'
- defaultMessage='Member'
- />
- );
-
- if (user.roles.length > 0 && Utils.isSystemAdmin(user.roles)) {
- currentRoles = (
- <FormattedMessage
- id='team_members_dropdown.systemAdmin'
- defaultMessage='System Admin'
- />
- );
- }
-
- const me = UserStore.getCurrentUser();
- let showMakeActive = false;
- let showMakeNotActive = !Utils.isSystemAdmin(user.roles);
- let showManageTeams = true;
- const mfaEnabled = global.window.mm_license.IsLicensed === 'true' && global.window.mm_license.MFA === 'true' && global.window.mm_config.EnableMultifactorAuthentication === 'true';
- const showMfaReset = mfaEnabled && user.mfa_active;
-
- if (user.delete_at > 0) {
- currentRoles = (
- <FormattedMessage
- id='admin.user_item.inactive'
- defaultMessage='Inactive'
- />
- );
- showMakeActive = true;
- showMakeNotActive = false;
- showManageTeams = false;
- }
-
- let disableActivationToggle = false;
- if (user.auth_service === Constants.LDAP_SERVICE) {
- disableActivationToggle = true;
- }
-
- let menuClass = '';
- if (disableActivationToggle) {
- menuClass = 'disabled';
- }
-
- let makeActive = null;
- if (showMakeActive) {
- makeActive = (
- <li
- role='presentation'
- className={menuClass}
- >
- <a
- id='activate'
- role='menuitem'
- href='#'
- onClick={this.handleMakeActive}
- >
- <FormattedMessage
- id='admin.user_item.makeActive'
- defaultMessage='Activate'
- />
- </a>
- </li>
- );
- }
-
- let makeNotActive = null;
- if (showMakeNotActive) {
- makeNotActive = (
- <li
- role='presentation'
- className={menuClass}
- >
- <a
- id='deactivate'
- role='menuitem'
- href='#'
- onClick={this.handleShowDeactivateMemberModal}
- >
- <FormattedMessage
- id='admin.user_item.makeInactive'
- defaultMessage='Deactivate'
- />
- </a>
- </li>
- );
- }
-
- let manageTeams = null;
- if (showManageTeams) {
- manageTeams = (
- <li role='presentation'>
- <a
- id='manageTeams'
- role='menuitem'
- href='#'
- onClick={this.handleManageTeams}
- >
- <FormattedMessage
- id='admin.user_item.manageTeams'
- defaultMessage='Manage Teams'
- />
- </a>
- </li>
- );
- }
-
- let mfaReset = null;
- if (showMfaReset) {
- mfaReset = (
- <li role='presentation'>
- <a
- id='removeMFA'
- role='menuitem'
- href='#'
- onClick={this.handleResetMfa}
- >
- <FormattedMessage
- id='admin.user_item.resetMfa'
- defaultMessage='Remove MFA'
- />
- </a>
- </li>
- );
- }
-
- let passwordReset;
- if (user.auth_service) {
- passwordReset = (
- <li role='presentation'>
- <a
- id='switchEmailPassword'
- role='menuitem'
- href='#'
- onClick={this.handleResetPassword}
- >
- <FormattedMessage
- id='admin.user_item.switchToEmail'
- defaultMessage='Switch to Email/Password'
- />
- </a>
- </li>
- );
- } else {
- passwordReset = (
- <li role='presentation'>
- <a
- id='resetPassword'
- role='menuitem'
- href='#'
- onClick={this.handleResetPassword}
- >
- <FormattedMessage
- id='admin.user_item.resetPwd'
- defaultMessage='Reset Password'
- />
- </a>
- </li>
- );
- }
-
- let manageTokens;
- if (global.window.mm_config.EnableUserAccessTokens === 'true') {
- manageTokens = (
- <li role='presentation'>
- <a
- id='manageTokens'
- role='menuitem'
- href='#'
- onClick={this.handleManageTokens}
- >
- <FormattedMessage
- id='admin.user_item.manageTokens'
- defaultMessage='Manage Tokens'
- />
- </a>
- </li>
- );
- }
-
- let makeDemoteModal = null;
- if (this.props.user.id === me.id) {
- const title = (
- <FormattedMessage
- id='admin.user_item.confirmDemoteRoleTitle'
- defaultMessage='Confirm demotion from System Admin role'
- />
- );
-
- const message = (
- <div>
- <FormattedMessage
- id='admin.user_item.confirmDemoteDescription'
- defaultMessage="If you demote yourself from the System Admin role and there is not another user with System Admin privileges, you'll need to re-assign a System Admin by accessing the Mattermost server through a terminal and running the following command."
- />
- <br/>
- <br/>
- <FormattedMessage
- id='admin.user_item.confirmDemotionCmd'
- defaultMessage='platform roles system_admin {username}'
- values={{
- username: me.username
- }}
- />
- {serverError}
- </div>
- );
-
- const confirmButton = (
- <FormattedMessage
- id='admin.user_item.confirmDemotion'
- defaultMessage='Confirm Demotion'
- />
- );
-
- makeDemoteModal = (
- <ConfirmModal
- show={this.state.showDemoteModal}
- title={title}
- message={message}
- confirmButtonText={confirmButton}
- onConfirm={this.handleDemoteSubmit}
- onCancel={this.handleDemoteCancel}
- />
- );
- }
-
- const deactivateMemberModal = this.renderDeactivateMemberModal();
-
- let displayedName = Utils.getDisplayName(user);
- if (displayedName !== user.username) {
- displayedName += ' (@' + user.username + ')';
- }
-
- return (
- <div className='dropdown member-drop text-right'>
- <a
- id='memberDropdown'
- href='#'
- className='dropdown-toggle theme'
- type='button'
- data-toggle='dropdown'
- aria-expanded='true'
- >
- <span>{currentRoles} </span>
- <span className='caret'/>
- </a>
- {this.renderAccessToken()}
- <ul
- className='dropdown-menu member-menu'
- role='menu'
- >
- {makeActive}
- {makeNotActive}
- <li role='presentation'>
- <a
- id='manageRoles'
- role='menuitem'
- href='#'
- onClick={this.handleManageRoles}
- >
- <FormattedMessage
- id='admin.user_item.manageRoles'
- defaultMessage='Manage Roles'
- />
- </a>
- </li>
- {manageTeams}
- {manageTokens}
- {mfaReset}
- {passwordReset}
- </ul>
- {makeDemoteModal}
- {deactivateMemberModal}
- {serverError}
- </div>
- );
- }
-}