58 lines
2.0 KiB
TypeScript
58 lines
2.0 KiB
TypeScript
import { z } from 'zod';
|
|
|
|
export const stepOneSignupValidationSchema = z
|
|
.object({
|
|
email: z
|
|
.string({
|
|
required_error: 'Email tidak boleh kosong',
|
|
invalid_type_error: 'Email harus berupa string',
|
|
})
|
|
.min(1, 'Email tidak boleh kosong')
|
|
.email('Email harus valid'),
|
|
fullname: z
|
|
.string({
|
|
required_error: 'Nama tidak boleh kosong',
|
|
invalid_type_error: 'Nama harus berupa string',
|
|
})
|
|
.min(1, 'Nama tidak boleh kosong')
|
|
.max(50, 'Nama tidak boleh lebih dari 50 karakter'),
|
|
password: z
|
|
.string({
|
|
required_error: 'Password tidak boleh kosong',
|
|
invalid_type_error: 'Password harus berupa string',
|
|
})
|
|
.min(8, 'Password harus minimal 8 karakter')
|
|
.max(50, 'Password tidak boleh lebih dari 50 karakter')
|
|
.regex(
|
|
/^(?=.*[A-Z])(?=.*[a-z])(?=.*\d)(?=.*\W).+$/,
|
|
'Password harus mengandung setidaknya satu huruf kapital, satu huruf kecil, satu angka, dan satu karakter spesial'
|
|
),
|
|
confirm_password: z
|
|
.string({
|
|
required_error: 'Konfirmasi password tidak boleh kosong',
|
|
})
|
|
.min(8, 'Konfirmasi password harus minimal 8 karakter')
|
|
.max(50, 'Konfirmasi password tidak boleh lebih dari 50 karakter'),
|
|
phone_number: z
|
|
.string({
|
|
required_error: 'Nomor telepon tidak boleh kosong',
|
|
invalid_type_error: 'Nomor telepon harus berupa string',
|
|
})
|
|
.min(10, 'Nomor telepon tidak boleh kurang dari 10 karakter')
|
|
.max(15, 'Nomor telepon tidak boleh lebih dari 15 karakter')
|
|
.regex(/^\d+$/, 'Nomor telepon hanya boleh berisi angka'),
|
|
})
|
|
.refine((data) => data.password === data.confirm_password, {
|
|
message: 'Password dan Konfirmasi Password harus sama',
|
|
path: ['confirm_password'],
|
|
});
|
|
|
|
export const stepTwoSignupValidationSchema = z.object({
|
|
token: z.string(),
|
|
});
|
|
|
|
export const signupValidationSchema = stepOneSignupValidationSchema.and(
|
|
stepTwoSignupValidationSchema
|
|
);
|
|
export type SignupValidationSchema = z.infer<typeof signupValidationSchema>;
|