import React, { Fragment } from 'react'; import PropTypes from 'prop-types'; import { withTranslation } from 'react-i18next'; import { createSubscribedElement } from '../../UnstatedUtils'; import AppContainer from '../../../services/AppContainer'; class UserMenu extends React.Component { activateUser() { const { appContainer } = this.props; appContainer.apiPost('/admin/user/{userId}/activate'); } susupendUser() { const { appContainer } = this.props; appContainer.apiPost('/admin/user/{userId}/suspend'); } removeUser() { const { appContainer } = this.props; appContainer.apiPost('/admin/user/{user._id}/removeCompletely'); } removeFromAdmin() { const { appContainer } = this.props; appContainer.apiPost('/admin/user/{user._id}/removeFromAdmin'); } giveAdminAccess() { const { appContainer } = this.props; appContainer.apiPost('/admin/user/{user._id}/makeAdmin'); } render() { const { t, user } = this.props; const me = this.props.appContainer.me; let contentOfStatus; let adminMenu; if (user.status === 1) { contentOfStatus = ( { t('user_management.accept') } ); } if (user.status === 2) { contentOfStatus = ( user.username !== me ? ( { t('user_management.deactivate_account') } ) : (
{ t('user_management.deactivate_account') }

{ t('user_management.your_own') }

) ); } if (user.status === 3) { contentOfStatus = (
{ t('Undo') } {/* label は同じだけど、こっちは論理削除 */} { t('Delete') }
); } if (user.status === 1 || user.status === 5) { contentOfStatus = (
  • { t('Delete') }
  • ); } if (user.admin === true && user.status === 2) { adminMenu = ( user.username !== me ? ( { t('user_management.remove_admin_access') } ) : (
    { t('user_management.remove_admin_access') }

    { t('user_management.cannot_remove') }

    ) ); } if (user.admin === false && user.status === 2) { adminMenu = ( { t('user_management.give_admin_access') } ); } return (
    {/* password reset modal */}
    { t('user_management.reset_password')}

    { t('user_management.password_never_seen') }
    { t('user_management.send_new_password') }

    { t('user_management.target_user') }: { user.email }

    { t('user_management.reset_password') }

    Let the user know the new password below and strongly recommend to change another one immediately.

    Reset user:

    New password:

    ); } } const UserMenuWrapper = (props) => { return createSubscribedElement(UserMenu, props, [AppContainer]); }; UserMenu.propTypes = { t: PropTypes.func.isRequired, // i18next appContainer: PropTypes.instanceOf(AppContainer).isRequired, user: PropTypes.array, }; export default withTranslation()(UserMenuWrapper);