Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x | /**
* Authentication Validation Schemas
*
* Schemas for login, signup, password reset, and related auth operations.
*/
import { z } from 'zod';
import { emailSchema, passwordSchema, simplePasswordSchema, nameSchema } from '../schemas';
// ============================================================================
// LOGIN
// ============================================================================
/**
* Login request schema
*/
export const loginSchema = z.object({
email: emailSchema,
password: simplePasswordSchema,
rememberMe: z.boolean().optional().default(false),
});
export type LoginInput = z.infer<typeof loginSchema>;
// ============================================================================
// SIGNUP
// ============================================================================
/**
* Signup request schema
*/
export const signupSchema = z.object({
email: emailSchema,
password: passwordSchema,
confirmPassword: z.string().min(1, 'Please confirm your password'),
firstName: nameSchema,
lastName: nameSchema,
acceptTerms: z.boolean().refine((val) => val === true, {
message: 'You must accept the terms and conditions',
}),
}).refine((data) => data.password === data.confirmPassword, {
message: 'Passwords do not match',
path: ['confirmPassword'],
});
export type SignupInput = z.infer<typeof signupSchema>;
// ============================================================================
// PASSWORD RESET
// ============================================================================
/**
* Forgot password request schema
*/
export const forgotPasswordSchema = z.object({
email: emailSchema,
});
export type ForgotPasswordInput = z.infer<typeof forgotPasswordSchema>;
/**
* Reset password schema
*/
export const resetPasswordSchema = z.object({
token: z.string().min(1, 'Reset token is required'),
password: passwordSchema,
confirmPassword: z.string().min(1, 'Please confirm your password'),
}).refine((data) => data.password === data.confirmPassword, {
message: 'Passwords do not match',
path: ['confirmPassword'],
});
export type ResetPasswordInput = z.infer<typeof resetPasswordSchema>;
// ============================================================================
// PASSWORD CHANGE
// ============================================================================
/**
* Change password schema (for authenticated users)
*/
export const changePasswordSchema = z.object({
currentPassword: simplePasswordSchema,
newPassword: passwordSchema,
confirmPassword: z.string().min(1, 'Please confirm your password'),
}).refine((data) => data.newPassword === data.confirmPassword, {
message: 'Passwords do not match',
path: ['confirmPassword'],
}).refine((data) => data.currentPassword !== data.newPassword, {
message: 'New password must be different from current password',
path: ['newPassword'],
});
export type ChangePasswordInput = z.infer<typeof changePasswordSchema>;
// ============================================================================
// EMAIL VERIFICATION
// ============================================================================
/**
* Email verification schema
*/
export const verifyEmailSchema = z.object({
token: z.string().min(1, 'Verification token is required'),
});
export type VerifyEmailInput = z.infer<typeof verifyEmailSchema>;
/**
* Resend verification email schema
*/
export const resendVerificationSchema = z.object({
email: emailSchema,
});
export type ResendVerificationInput = z.infer<typeof resendVerificationSchema>;
|