|
|
@@ -7,6 +7,7 @@ import Modal from 'react-bootstrap/es/Modal';
|
|
|
import { toastError } from '../../../util/apiNotification';
|
|
|
import { createSubscribedElement } from '../../UnstatedUtils';
|
|
|
import AppContainer from '../../../services/AppContainer';
|
|
|
+import AdminUsersContainer from '../../../services/AdminUsersContainer';
|
|
|
|
|
|
class PasswordResetModal extends React.Component {
|
|
|
|
|
|
@@ -18,13 +19,12 @@ class PasswordResetModal extends React.Component {
|
|
|
isPasswordResetDone: false,
|
|
|
};
|
|
|
|
|
|
- this.returnModalBody = this.returnModalBody.bind(this);
|
|
|
- this.returnModalFooter = this.returnModalFooter.bind(this);
|
|
|
this.resetPassword = this.resetPassword.bind(this);
|
|
|
}
|
|
|
|
|
|
async resetPassword() {
|
|
|
- const { appContainer, user } = this.props;
|
|
|
+ const { appContainer, adminUsersContainer } = this.props;
|
|
|
+ const user = adminUsersContainer.state.userForPasswordResetModal;
|
|
|
|
|
|
const res = await appContainer.apiPost('/admin/users.resetPassword', { user_id: user._id });
|
|
|
if (res.ok) {
|
|
|
@@ -35,71 +35,69 @@ class PasswordResetModal extends React.Component {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- returnModalBody() {
|
|
|
- const { t, user } = this.props;
|
|
|
+ renderModalBodyBeforeReset() {
|
|
|
+ const { t, adminUsersContainer } = this.props;
|
|
|
+ const user = adminUsersContainer.state.userForPasswordResetModal;
|
|
|
+
|
|
|
+ return (
|
|
|
+ <div>
|
|
|
+ <p className="alert alert-danger">{ t('user_management.password_reset_message') }</p>
|
|
|
+ <p>
|
|
|
+ { t('user_management.target_user') }: <code>{ user.email }</code>
|
|
|
+ </p>
|
|
|
+ <p>
|
|
|
+ { t('user_management.new_password') }: <code>{ this.state.temporaryPassword }</code>
|
|
|
+ </p>
|
|
|
+ </div>
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ returnModalBodyAfterReset() {
|
|
|
+ const { t, adminUsersContainer } = this.props;
|
|
|
+ const user = adminUsersContainer.state.userForPasswordResetModal;
|
|
|
+
|
|
|
return (
|
|
|
- this.state.isPasswordResetDone
|
|
|
- ? (
|
|
|
- <div>
|
|
|
- <p className="alert alert-danger">{ t('user_management.password_reset_message') }</p>
|
|
|
- <p>
|
|
|
- { t('user_management.target_user') }: <code>{ user.email }</code>
|
|
|
- </p>
|
|
|
- <p>
|
|
|
- { t('user_management.new_password') }: <code>{ this.state.temporaryPassword }</code>
|
|
|
- </p>
|
|
|
- </div>
|
|
|
- )
|
|
|
- : (
|
|
|
- <div>
|
|
|
- <p>
|
|
|
- { t('user_management.password_never_seen') }<br />
|
|
|
- <span className="text-danger">{ t('user_management.send_new_password') }</span>
|
|
|
- </p>
|
|
|
- <p>
|
|
|
- { t('user_management.target_user') }: <code>{ user.email }</code>
|
|
|
- </p>
|
|
|
- <button type="submit" className="btn btn-primary" onClick={this.resetPassword}>
|
|
|
- { t('user_management.reset_password')}
|
|
|
- </button>
|
|
|
- </div>
|
|
|
- )
|
|
|
+ <div>
|
|
|
+ <p>
|
|
|
+ { t('user_management.password_never_seen') }<br />
|
|
|
+ <span className="text-danger">{ t('user_management.send_new_password') }</span>
|
|
|
+ </p>
|
|
|
+ <p>
|
|
|
+ { t('user_management.target_user') }: <code>{ user.email }</code>
|
|
|
+ </p>
|
|
|
+ <button type="submit" className="btn btn-primary" onClick={this.resetPassword}>
|
|
|
+ { t('user_management.reset_password')}
|
|
|
+ </button>
|
|
|
+ </div>
|
|
|
);
|
|
|
}
|
|
|
|
|
|
returnModalFooter() {
|
|
|
return (
|
|
|
- this.state.isPasswordResetDone
|
|
|
- ? (
|
|
|
- <div>
|
|
|
- <button type="submit" className="btn btn-primary" onClick={this.props.onHideModal}>OK</button>
|
|
|
- </div>
|
|
|
- )
|
|
|
- : (
|
|
|
- ''
|
|
|
- )
|
|
|
+ <div>
|
|
|
+ <button type="submit" className="btn btn-primary" onClick={this.props.adminUsersContainer.hidePasswordResetModal}>OK</button>
|
|
|
+ </div>
|
|
|
);
|
|
|
}
|
|
|
|
|
|
|
|
|
render() {
|
|
|
- const { t } = this.props;
|
|
|
+ const { t, adminUsersContainer } = this.props;
|
|
|
|
|
|
return (
|
|
|
- <Modal show={this.props.show} onHide={this.props.onHideModal}>
|
|
|
+ <Modal show={adminUsersContainer.state.isPasswordResetModalShown} onHide={adminUsersContainer.hidePasswordResetModal}>
|
|
|
<Modal.Header className="modal-header" closeButton>
|
|
|
<Modal.Title>
|
|
|
{ t('user_management.reset_password') }
|
|
|
</Modal.Title>
|
|
|
</Modal.Header>
|
|
|
<Modal.Body>
|
|
|
- {this.returnModalBody()}
|
|
|
+ {this.state.isPasswordResetDone ? this.renderModalBodyBeforeReset() : this.returnModalBodyAfterReset()}
|
|
|
</Modal.Body>
|
|
|
<Modal.Footer>
|
|
|
- {this.returnModalFooter()}
|
|
|
+ {this.state.isPasswordResetDone && this.returnModalFooter()}
|
|
|
</Modal.Footer>
|
|
|
</Modal>
|
|
|
-
|
|
|
);
|
|
|
}
|
|
|
|
|
|
@@ -109,16 +107,13 @@ class PasswordResetModal extends React.Component {
|
|
|
* Wrapper component for using unstated
|
|
|
*/
|
|
|
const PasswordResetModalWrapper = (props) => {
|
|
|
- return createSubscribedElement(PasswordResetModal, props, [AppContainer]);
|
|
|
+ return createSubscribedElement(PasswordResetModal, props, [AppContainer, AdminUsersContainer]);
|
|
|
};
|
|
|
|
|
|
PasswordResetModal.propTypes = {
|
|
|
t: PropTypes.func.isRequired, // i18next
|
|
|
appContainer: PropTypes.instanceOf(AppContainer).isRequired,
|
|
|
-
|
|
|
- user: PropTypes.object.isRequired,
|
|
|
- show: PropTypes.bool.isRequired,
|
|
|
- onHideModal: PropTypes.func.isRequired,
|
|
|
+ adminUsersContainer: PropTypes.instanceOf(AdminUsersContainer).isRequired,
|
|
|
};
|
|
|
|
|
|
export default withTranslation()(PasswordResetModalWrapper);
|