import { Box, FieldError, FieldLabel, FieldRow, PasswordInput, ToggleSwitch } from '@rocket.chat/fuselage'; import { PasswordVerifier, useValidatePassword } from '@rocket.chat/ui-client'; import { useSetting } from '@rocket.chat/ui-contexts'; import { useId } from 'react'; import type { Control, FieldErrors } from 'react-hook-form'; import { Controller } from 'react-hook-form'; import { useTranslation } from 'react-i18next'; import type { UserFormProps } from './AdminUserForm'; type AdminUserSetRandomPasswordContentProps = { control: Control; setRandomPassword: boolean | undefined; isNewUserPage: boolean; passwordId: string; errors: FieldErrors; password: string; }; const AdminUserSetRandomPasswordContent = ({ control, setRandomPassword, isNewUserPage, passwordId, errors, password, }: AdminUserSetRandomPasswordContentProps) => { const { t } = useTranslation(); const passwordConfirmationId = useId(); const requirePasswordChangeId = useId(); const passwordVerifierId = useId(); const requiresPasswordConfirmation = useSetting('Accounts_RequirePasswordConfirmation', true); const passwordPlaceholder = useSetting('Accounts_PasswordPlaceholder', ''); const passwordConfirmationPlaceholder = useSetting('Accounts_ConfirmPasswordPlaceholder', ''); const passwordIsValid = useValidatePassword(password); return ( <> {t('Require_password_change')} ( )} /> (password?.length && !passwordIsValid ? t('Password_must_meet_the_complexity_requirements') : true), required: isNewUserPage && t('Required_field', { field: t('Password') }), }} render={({ field }) => ( )} /> {errors?.password && ( {errors.password.message} )} {requiresPasswordConfirmation && ( (password !== confirmationPassword ? t('Invalid_confirm_pass') : true), }} render={({ field }) => ( )} /> )} {errors?.passwordConfirmation && ( {errors.passwordConfirmation.message} )} ); }; export default AdminUserSetRandomPasswordContent;