Skip to content
Snippets Groups Projects
Commit f86946d2 authored by Anca Ursachi's avatar Anca Ursachi
Browse files

fix(changePassword): Make password validation work after we want to change the password.

parent b5c32e55
No related branches found
No related tags found
3 merge requests!196S25 - EiC submit revision,!189S25,!183Hin 961 strong password
......@@ -19,7 +19,7 @@ import {
const PasswordField = input => <TextField {...input} type="password" />
const PasswordConfirmation = ({
const PasswordValidation = ({
formName,
formLabel,
minLength,
......@@ -45,7 +45,7 @@ const PasswordConfirmation = ({
<Label required>Retype Password</Label>
<ValidatedField
component={PasswordField}
name="confirmPassword"
name="confirmNewPassword"
validate={[required]}
/>
</Item>
......@@ -94,7 +94,7 @@ const PasswordConfirmation = ({
</Row>
</Fragment>
)
PasswordConfirmation.propTypes = {
PasswordValidation.propTypes = {
/** Name of the redux form. */
formName: PropTypes.string,
/** Label name for password input */
......@@ -102,17 +102,17 @@ PasswordConfirmation.propTypes = {
/** If the password requirements are not fulfilled it will return true. */
submitFailed: PropTypes.bool,
/** If the password's length is greater or equal than the minimum value, it will return true. */
minLength: PropTypes.func,
minLength: PropTypes.bool,
/** If the password has at least one digit it will return true. */
atLeastOneDigit: PropTypes.func,
atLeastOneDigit: PropTypes.bool,
/** If the password has at least one uppercase it will return true. */
atLeastOneUppercase: PropTypes.func,
atLeastOneUppercase: PropTypes.bool,
/** If the password has at least one lowercase it will return true. */
atLeastOneLowerrcase: PropTypes.func,
atLeastOneLowerrcase: PropTypes.bool,
/** If the password has at least one punctuation it will return true. */
atLeastOnePunctuation: PropTypes.func,
atLeastOnePunctuation: PropTypes.bool,
}
PasswordConfirmation.defaultProps = {
PasswordValidation.defaultProps = {
formName: undefined,
formLabel: undefined,
submitFailed: false,
......@@ -137,7 +137,7 @@ export default compose(
get(formValues, 'password', ''),
),
})),
)(PasswordConfirmation)
)(PasswordValidation)
const RulesTitle = styled.p`
margin: 0px;
......
......@@ -3,7 +3,7 @@ const React = require('react')
const reduxForm = require('redux-form').reduxForm;
const PasswordField = () => (
<PasswordConfirmation formLabel="Password" formName="signUpInvitation" />
<PasswordValidation formLabel="Password" formName="signUpInvitation" />
)
const Form = reduxForm({
......
......@@ -19,8 +19,7 @@ export const atLeastOnePunctuation = value => {
export const passwordValidator = values => {
const errors = {}
const { password, confirmPassword } = values
const { password, confirmNewPassword } = values
if (
!(
minLength(password, 6) &&
......@@ -35,10 +34,10 @@ export const passwordValidator = values => {
if (!password) {
errors.password = 'Required'
}
if (!confirmPassword) {
errors.confirmPassword = 'Required'
} else if (confirmPassword !== password) {
errors.confirmPassword = "Passwords don't match."
if (!confirmNewPassword) {
errors.confirmNewPassword = 'Required'
} else if (confirmNewPassword !== password) {
errors.confirmNewPassword = "Passwords don't match."
}
return errors
......
......@@ -48,7 +48,7 @@ export { default as WizardFiles } from './WizardFiles'
export { default as TextTooltip } from './TextTooltip'
export { default as EditorialReportCard } from './EditorialReportCard'
export { default as ReviewerReportAuthor } from './ReviewerReportAuthor'
export { default as PasswordConfirmation } from './PasswordConfirmation'
export { default as PasswordValidation } from './PasswordValidation'
export { SubmitRevision } from './submissionRevision'
......
......@@ -3,11 +3,10 @@ const { token } = require('pubsweet-server/src/authentication')
const { passwordStrengthRegex } = require('config')
module.exports = models => async (req, res) => {
const { password, newPassword } = req.body
if (!services.checkForUndefinedParams(password, newPassword))
const { currentPassword, password } = req.body
if (!services.checkForUndefinedParams(currentPassword, password))
return res.status(400).json({ error: 'Missing required params.' })
if (!passwordStrengthRegex.test(newPassword))
if (!passwordStrengthRegex.test(password))
return res.status(400).json({
error: 'Password is too weak. Please check password requirements.',
})
......@@ -16,10 +15,10 @@ module.exports = models => async (req, res) => {
try {
user = await models.User.find(req.user)
if (!await user.validPassword(password)) {
if (!await user.validPassword(currentPassword)) {
return res.status(400).json({ error: 'Wrong username or password.' })
}
user.password = newPassword
user.password = password
user = await user.save()
return res.status(200).json({
......
......@@ -15,7 +15,8 @@ import {
withFetching,
} from 'pubsweet-component-faraday-ui'
import { redirectToError, passwordValidator } from '../utils'
import { redirectToError } from '../utils'
import { passwordValidator } from '../../../../component-faraday-ui/src/Utils'
import { reviewerDecision, setReviewerPassword } from '../../redux/reviewers'
const agreeText = `You have been invited to review a manuscript on the Hindawi platform. Please set a password and proceed to the manuscript.`
......
......@@ -7,7 +7,7 @@ import {
Item,
Label,
Text,
PasswordConfirmation,
PasswordValidation,
} from 'pubsweet-component-faraday-ui'
import { emailValidator } from '../utils'
......@@ -27,12 +27,12 @@ const SignUpForm = () => (
/>
</Item>
</Row>
<PasswordConfirmation formLabel="Password" formName="signUpInvitation" />
<PasswordValidation formLabel="Password" formName="signUpInvitation" />
</Fragment>
)
const InviteForm = () => (
<PasswordConfirmation formLabel="Password" formName="signUpInvitation" />
<PasswordValidation formLabel="Password" formName="signUpInvitation" />
)
const ForgotEmailForm = () => (
......
......@@ -11,13 +11,11 @@ import {
Text,
Label,
ShadowedBox,
PasswordConfirmation,
PasswordValidation,
} from 'pubsweet-component-faraday-ui'
import {
changePasswordValidator,
onSubmitChangePassword as onSubmit,
} from '../utils'
import { changePasswordValidator } from '../../../../component-faraday-ui/src/Utils'
import { onSubmitChangePassword as onSubmit } from '../utils'
const PasswordField = input => <TextField {...input} type="password" />
......@@ -40,7 +38,7 @@ const ChangePassword = ({ history, handleSubmit, error }) => (
/>
</Item>
</Row>
<PasswordConfirmation formLabel="New Password" formName="changePassword" />
<PasswordValidation formLabel="New Password" formName="changePassword" />
{error && (
<Row mt={1}>
<Item>
......
......@@ -146,11 +146,11 @@ export const saveUserDetails = (userId, values) => dispatch =>
})
export const onSubmitChangePassword = (
{ password, newPassword },
{ currentPassword, password },
dispatch,
{ history },
) =>
create(`/users/change-password`, { password, newPassword })
create(`/users/change-password`, { currentPassword, password })
.then(() => {
history.goBack()
})
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment