diff --git a/packages/components-faraday/src/components/Admin/AddEditUser.js b/packages/components-faraday/src/components/Admin/AddEditUser.js index 45454fbd8e06f202d4776d3ad3f6c51c68cad6d7..74e235305cf16a343bb2871a0352536d8bd3aa7d 100644 --- a/packages/components-faraday/src/components/Admin/AddEditUser.js +++ b/packages/components-faraday/src/components/Admin/AddEditUser.js @@ -18,8 +18,15 @@ import { getRoleOptions, setAdmin, parseUpdateUser } from './utils' const onSubmit = (values, dispatch, { isEdit, history }) => { if (!isEdit) { const newValues = setAdmin(values) - return create('/users/invite', newValues) - .then(() => history.push('/admin/users')) + return create('/users', newValues) + .then(r => { + history.push('/admin/users') + create(`/emails`, { + email: r.email, + type: 'invite', + role: values.role, + }) + }) .catch(error => { const err = get(error, 'response') if (err) { diff --git a/packages/components-faraday/src/components/Admin/utils.js b/packages/components-faraday/src/components/Admin/utils.js index eb9b5cec9493be46809ba4bddafabf961eba5db9..5c761760feaff1b80d4096055dbc4121ef310b9a 100644 --- a/packages/components-faraday/src/components/Admin/utils.js +++ b/packages/components-faraday/src/components/Admin/utils.js @@ -1,4 +1,11 @@ -import { pick, map } from 'lodash' +import { pick, map, omit } from 'lodash' + +const generatePasswordHash = () => + Array.from({ length: 4 }, () => + Math.random() + .toString(36) + .slice(4), + ).join('') export const getRoleOptions = journal => map(journal.roles, (value, key) => ({ label: value, value: key })) @@ -11,7 +18,15 @@ export const setAdmin = values => { newValues.admin = false } - return newValues + return { + ...omit(newValues, ['role']), + username: newValues.email, + isConfirmed: false, + passwordResetToken: generatePasswordHash(), + password: 'defaultpass', + editorInChief: newValues.role === 'editorInChief', + handlingEditor: newValues.role === 'handlingEditor', + } } export const parseUpdateUser = values => { @@ -22,7 +37,6 @@ export const parseUpdateUser = values => { 'affiliation', 'title', 'roles', - 'rev', 'editorInChief', 'handlingEditor', ] diff --git a/packages/components-faraday/src/components/SignUp/SignUpInvitationPage.js b/packages/components-faraday/src/components/SignUp/SignUpInvitationPage.js index 5699888919716ae1dca12dc72f1984ac073be373..c78509321c5dc27f5fbd051e4406537c65a84fe6 100644 --- a/packages/components-faraday/src/components/SignUp/SignUpInvitationPage.js +++ b/packages/components-faraday/src/components/SignUp/SignUpInvitationPage.js @@ -31,7 +31,7 @@ const login = (dispatch, values, history) => const confirmUser = (email, token, history) => (values, dispatch) => { const request = { ...values, email, token } if (values) { - return create('/users/invite/password/reset', request) + return create('/users/reset-password', request) .then(r => { const { username } = r const { password } = values @@ -52,6 +52,7 @@ const confirmUser = (email, token, history) => (values, dispatch) => { export default compose( withJournal, withState('step', 'changeStep', 0), + withState('initialValues', 'setInitialValues', {}), withProps(({ location }) => { const params = new URLSearchParams(location.search) const email = params.get('email') @@ -66,11 +67,11 @@ export default compose( }), lifecycle({ componentDidMount() { - const { email, token } = this.props - const encodedUri = `?email=${encodeURIComponent(email)}&token=${token}` - request(`/users/invite${encodedUri}`) + const { setInitialValues, token } = this.props + const encodedUri = `?passwordResetToken=${token}` + request(`/users/${encodedUri}`) .then(res => { - this.setState({ initialValues: res }) + setInitialValues(v => res.users[0]) }) .catch(err => { this.setState({ error: err.response })