From 7ee8c4bc9dc20366acfc305e93e47bab4e85780b Mon Sep 17 00:00:00 2001 From: Yash Rajpal <58601732+yash-rajpal@users.noreply.github.com> Date: Fri, 7 Jan 2022 00:52:32 +0530 Subject: [PATCH] [FIX] Password error should not be shown when selecting set random password #21181 --- client/hooks/useForm.ts | 3 ++- client/views/admin/users/AddUser.js | 22 +++++++++++++++------- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/client/hooks/useForm.ts b/client/hooks/useForm.ts index 5db76c03f6f..9e22dc921ab 100644 --- a/client/hooks/useForm.ts +++ b/client/hooks/useForm.ts @@ -175,12 +175,13 @@ export const useForm = < initialValue, value: newValue, key: name, + values: state.values, }); }, }), {}, ), - [onChange, state.fields], + [onChange, state.fields, state.values], ); return { diff --git a/client/views/admin/users/AddUser.js b/client/views/admin/users/AddUser.js index 075f9582b8a..d8c0c13f314 100644 --- a/client/views/admin/users/AddUser.js +++ b/client/views/admin/users/AddUser.js @@ -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; }