feat: secure KYC storage, Google OAuth, terms gating

This commit is contained in:
arifal
2026-04-28 23:10:21 +07:00
parent 58da4608ac
commit 05d0929f7a
41 changed files with 3087 additions and 262 deletions
+4 -8
View File
@@ -22,18 +22,14 @@ export const submitVerificationSchema = z.object({
.trim()
.min(5, "Alamat minimal 5 karakter")
.max(LIMITS.MAX_ADDRESS_LENGTH, `Alamat maksimal ${LIMITS.MAX_ADDRESS_LENGTH} karakter`),
ktpImageUrl: z
ktpImageKey: z
.string()
.trim()
.min(1, "Foto KTP wajib diisi")
.max(LIMITS.MAX_URL_LENGTH, "URL foto KTP terlalu panjang")
.pipe(z.url("URL foto KTP tidak valid")),
selfieUrl: z
.regex(/^ktp\/[A-Za-z0-9_-]+\.(jpg|png|webp)$/, "Foto KTP wajib diunggah"),
selfieKey: z
.string()
.trim()
.min(1, "Foto selfie dengan KTP wajib diisi")
.max(LIMITS.MAX_URL_LENGTH, "URL foto selfie terlalu panjang")
.pipe(z.url("URL foto selfie tidak valid")),
.regex(/^selfie\/[A-Za-z0-9_-]+\.(jpg|png|webp)$/, "Foto selfie wajib diunggah"),
bankName: z
.string()
.trim()