From 4f7f9947bdf24bae72a0cef26caf73d1ea43899c Mon Sep 17 00:00:00 2001 From: Henry Date: Sat, 31 May 2025 23:36:34 +0100 Subject: [PATCH] standardize password criteria --- packages/server/src/enterprise/Interface.Enterprise.ts | 8 ++++++-- packages/server/src/enterprise/utils/validation.util.ts | 2 +- packages/ui/src/utils/validation.js | 2 +- packages/ui/src/views/account/UserProfile.jsx | 2 +- packages/ui/src/views/account/index.jsx | 2 +- packages/ui/src/views/auth/register.jsx | 2 +- packages/ui/src/views/auth/resetPassword.jsx | 2 +- packages/ui/src/views/organization/index.jsx | 4 ++-- 8 files changed, 14 insertions(+), 10 deletions(-) diff --git a/packages/server/src/enterprise/Interface.Enterprise.ts b/packages/server/src/enterprise/Interface.Enterprise.ts index 0e0482d93..d7ddfc393 100644 --- a/packages/server/src/enterprise/Interface.Enterprise.ts +++ b/packages/server/src/enterprise/Interface.Enterprise.ts @@ -104,8 +104,10 @@ export const OrgSetupSchema = z password: z .string() .min(8, 'Password must be at least 8 characters') + .regex(/[a-z]/, 'Password must contain at least one lowercase letter') .regex(/[A-Z]/, 'Password must contain at least one uppercase letter') - .regex(/[!@#$%^&*]/, 'Password must contain at least one special character'), + .regex(/\d/, 'Password must contain at least one digit') + .regex(/[^a-zA-Z0-9]/, 'Password must contain at least one special character'), confirmPassword: z.string().min(1, 'Confirm Password is required') }) .refine((data) => data.password === data.confirmPassword, { @@ -122,8 +124,10 @@ export const RegisterUserSchema = z password: z .string() .min(8, 'Password must be at least 8 characters') + .regex(/[a-z]/, 'Password must contain at least one lowercase letter') .regex(/[A-Z]/, 'Password must contain at least one uppercase letter') - .regex(/[!@#$%^&*]/, 'Password must contain at least one special character'), + .regex(/\d/, 'Password must contain at least one digit') + .regex(/[^a-zA-Z0-9]/, 'Password must contain at least one special character'), confirmPassword: z.string().min(1, 'Confirm Password is required'), token: z.string().min(1, 'Invite Code is required') }) diff --git a/packages/server/src/enterprise/utils/validation.util.ts b/packages/server/src/enterprise/utils/validation.util.ts index c22abb1b5..96015ee68 100644 --- a/packages/server/src/enterprise/utils/validation.util.ts +++ b/packages/server/src/enterprise/utils/validation.util.ts @@ -18,6 +18,6 @@ export function isInvalidDateTime(dateTime: unknown): boolean { } export function isInvalidPassword(password: unknown): boolean { - const regexPassword = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&-])[A-Za-z\d@$!%*?&-]{8,}$/ + const regexPassword = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[^a-zA-Z0-9]).{8,}$/ return !password || typeof password !== 'string' || !regexPassword.test(password) } diff --git a/packages/ui/src/utils/validation.js b/packages/ui/src/utils/validation.js index a889919cf..077f4723d 100644 --- a/packages/ui/src/utils/validation.js +++ b/packages/ui/src/utils/validation.js @@ -6,7 +6,7 @@ export const passwordSchema = z .regex(/[a-z]/, 'Password must contain at least one lowercase letter') .regex(/[A-Z]/, 'Password must contain at least one uppercase letter') .regex(/\d/, 'Password must contain at least one digit') - .regex(/[@$!%*?&-]/, 'Password must contain at least one special character (@$!%*?&-)') + .regex(/[^a-zA-Z0-9]/, 'Password must contain at least one special character') export const validatePassword = (password) => { const result = passwordSchema.safeParse(password) diff --git a/packages/ui/src/views/account/UserProfile.jsx b/packages/ui/src/views/account/UserProfile.jsx index 560aafbae..1b26d05cc 100644 --- a/packages/ui/src/views/account/UserProfile.jsx +++ b/packages/ui/src/views/account/UserProfile.jsx @@ -257,7 +257,7 @@ const UserProfile = () => { Password must be at least 8 characters long and contain at least one lowercase letter, one - uppercase letter, one digit, and one special character (@$!%*?&-). + uppercase letter, one digit, and one special character. diff --git a/packages/ui/src/views/account/index.jsx b/packages/ui/src/views/account/index.jsx index 24d460aef..5e5f30612 100644 --- a/packages/ui/src/views/account/index.jsx +++ b/packages/ui/src/views/account/index.jsx @@ -791,7 +791,7 @@ const AccountSettings = () => { Password must be at least 8 characters long and contain at least one lowercase letter, - one uppercase letter, one digit, and one special character (@$!%*?&-). + one uppercase letter, one digit, and one special character. diff --git a/packages/ui/src/views/auth/register.jsx b/packages/ui/src/views/auth/register.jsx index f7352056d..7ac0cc979 100644 --- a/packages/ui/src/views/auth/register.jsx +++ b/packages/ui/src/views/auth/register.jsx @@ -359,7 +359,7 @@ const RegisterPage = () => { Password must be at least 8 characters long and contain at least one lowercase letter, one uppercase - letter, one digit, and one special character (@$!%*?&-). + letter, one digit, and one special character. diff --git a/packages/ui/src/views/auth/resetPassword.jsx b/packages/ui/src/views/auth/resetPassword.jsx index 685b32663..3ca33f8cd 100644 --- a/packages/ui/src/views/auth/resetPassword.jsx +++ b/packages/ui/src/views/auth/resetPassword.jsx @@ -220,7 +220,7 @@ const ResetPasswordPage = () => { Password must be at least 8 characters long and contain at least one lowercase letter, one uppercase - letter, one digit, and one special character (@$!%*?&-). + letter, one digit, and one special character. diff --git a/packages/ui/src/views/organization/index.jsx b/packages/ui/src/views/organization/index.jsx index 5956ea58b..a53682e2d 100644 --- a/packages/ui/src/views/organization/index.jsx +++ b/packages/ui/src/views/organization/index.jsx @@ -172,7 +172,7 @@ const OrganizationSetupPage = () => { if (isEnterpriseLicensed) { finalErrMessage = `Error in registering organization. Please contact your administrator. (${errMessage})` } else { - finalErrMessage = `Error in registering account.` + finalErrMessage = `Error in registering account: ${errMessage}` } setAuthError(finalErrMessage) setLoading(false) @@ -396,7 +396,7 @@ const OrganizationSetupPage = () => { Password must be at least 8 characters long and contain at least one lowercase letter, one uppercase - letter, one digit, and one special character (@$!%*?&-). + letter, one digit, and one special character.