// Copyright (c) 2017-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. import React from 'react'; import PropTypes from 'prop-types'; import {FormattedMessage, FormattedHTMLMessage} from 'react-intl'; import ManageTeamsModal from 'components/admin_console/manage_teams_modal/manage_teams_modal.jsx'; import ManageRolesModal from 'components/admin_console/manage_roles_modal'; import ManageTokensModal from 'components/admin_console/manage_tokens_modal'; import ResetPasswordModal from 'components/admin_console/reset_password_modal.jsx'; import SearchableUserList from 'components/searchable_user_list/searchable_user_list.jsx'; import store from 'stores/redux_store.jsx'; const dispatch = store.dispatch; const getState = store.getState; import {getUser} from 'mattermost-redux/actions/users'; import {Constants} from 'utils/constants.jsx'; import * as Utils from 'utils/utils.jsx'; import SystemUsersDropdown from './system_users_dropdown.jsx'; export default class SystemUsersList extends React.Component { static propTypes = { users: PropTypes.arrayOf(PropTypes.object), usersPerPage: PropTypes.number, total: PropTypes.number, nextPage: PropTypes.func, search: PropTypes.func.isRequired, focusOnMount: PropTypes.bool, renderFilterRow: PropTypes.func, teamId: PropTypes.string.isRequired, term: PropTypes.string.isRequired, onTermChange: PropTypes.func.isRequired }; constructor(props) { super(props); this.state = { page: 0, showManageTeamsModal: false, showManageRolesModal: false, showManageTokensModal: false, showPasswordModal: false, user: null }; } componentWillReceiveProps(nextProps) { if (nextProps.teamId !== this.props.teamId) { this.setState({page: 0}); } } nextPage = () => { this.setState({page: this.state.page + 1}); this.props.nextPage(this.state.page + 1); } previousPage = () => { this.setState({page: this.state.page - 1}); } search = (term) => { this.props.search(term); if (term !== '') { this.setState({page: 0}); } } doManageTeams = (user) => { this.setState({ showManageTeamsModal: true, user }); } doManageRoles = (user) => { this.setState({ showManageRolesModal: true, user }); } doManageTokens = (user) => { this.setState({ showManageTokensModal: true, user }); } doManageTeamsDismiss = () => { this.setState({ showManageTeamsModal: false, user: null }); } doManageRolesDismiss = () => { this.setState({ showManageRolesModal: false, user: null }); } doManageTokensDismiss = () => { this.setState({ showManageTokensModal: false, user: null }); } doPasswordReset = (user) => { this.setState({ showPasswordModal: true, user }); } doPasswordResetDismiss = () => { this.setState({ showPasswordModal: false, user: null }); } doPasswordResetSubmit = (user) => { getUser(user.id)(dispatch, getState); this.setState({ showPasswordModal: false, user: null }); } getInfoForUser(user) { const info = []; if (user.auth_service) { let service; if (user.auth_service === Constants.LDAP_SERVICE || user.auth_service === Constants.SAML_SERVICE) { service = user.auth_service.toUpperCase(); } else { service = Utils.toTitleCase(user.auth_service); } info.push( ); } else { info.push( ); } const mfaEnabled = global.window.mm_license.IsLicensed === 'true' && global.window.mm_license.MFA === 'true' && global.window.mm_config.EnableMultifactorAuthentication === 'true'; if (mfaEnabled) { info.push(', '); if (user.mfa_active) { info.push( ); } else { info.push( ); } } return info; } renderCount(count, total, startCount, endCount, isSearch) { if (total) { if (isSearch) { return ( ); } else if (startCount !== 0 || endCount !== total) { return ( ); } return ( ); } return null; } render() { const extraInfo = {}; if (this.props.users) { for (const user of this.props.users) { extraInfo[user.id] = this.getInfoForUser(user); } } return (
); } }