[FIX] Password error should not be shown when selecting set random password #21181

pull/24093/head
Yash Rajpal 4 years ago committed by GitHub
parent 20b6116b00
commit 7ee8c4bc9d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 3
      client/hooks/useForm.ts
  2. 22
      client/views/admin/users/AddUser.js

@ -175,12 +175,13 @@ export const useForm = <
initialValue,
value: newValue,
key: name,
values: state.values,
});
},
}),
{},
),
[onChange, state.fields],
[onChange, state.fields, state.values],
);
return {

@ -33,15 +33,20 @@ export function AddUser({ roles, onReload, ...props }) {
...errors,
email: !email.trim().length ? t('The_field_is_required', t('email')) : undefined,
})),
password: (password) =>
password: (password, values) =>
setErrors((errors) => ({
...errors,
password: !password.trim().length ? t('The_field_is_required', t('password')) : undefined,
password: !password.trim().length && !values.setRandomPassword ? t('The_field_is_required', t('password')) : undefined,
})),
setRandomPassword: (setRandomPassword, values) =>
setErrors((errors) => ({
...errors,
password: !values.password.trim().length && !setRandomPassword ? t('The_field_is_required', t('password')) : undefined,
})),
};
const validateForm = ({ key, value }) => {
validationKeys[key] && validationKeys[key](value);
const validateForm = ({ key, value, values }) => {
validationKeys[key] && validationKeys[key](value, values);
};
const { values, handlers, reset, hasUnsavedChanges } = useForm(
@ -77,11 +82,14 @@ export function AddUser({ roles, onReload, ...props }) {
const handleSave = useMutableCallback(async () => {
Object.entries(values).forEach(([key, value]) => {
validateForm({ key, value });
validateForm({ key, value, values });
});
const { name, username, password, email } = values;
if (name === '' || username === '' || password === '' || email === '') {
const { name, username, password, email, setRandomPassword } = values;
if (name === '' || username === '' || email === '') {
return false;
}
if (password === '' && setRandomPassword === false) {
return false;
}

Loading…
Cancel
Save