diff --git a/packages/shared/src/schemas.ts b/packages/shared/src/schemas.ts index 38fdf48..f149ed1 100644 --- a/packages/shared/src/schemas.ts +++ b/packages/shared/src/schemas.ts @@ -7,14 +7,17 @@ export const usernameSchema = z .toLowerCase() .regex(/^[a-z0-9_]{3,32}$/, 'Username must be 3-32 characters: letters, numbers, underscores'); +// Trim before validating: iOS keyboards often append a space after autocompleting an email. +const emailSchema = z.string().trim().toLowerCase().pipe(z.email()); + export const registerSchema = z.object({ username: usernameSchema, - email: z.email().trim().toLowerCase(), + email: emailSchema, password: z.string().min(8, 'Password must be at least 8 characters').max(200), }); export const loginSchema = z.object({ - email: z.email().trim().toLowerCase(), + email: emailSchema, password: z.string().min(1).max(200), });