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
+89
View File
@@ -0,0 +1,89 @@
"use client";
import { useState } from "react";
import Link from "next/link";
import { useRouter } from "next/navigation";
import { signOut, useSession } from "next-auth/react";
import { acceptTermsAction } from "@/features/auth/actions";
export function AcceptTermsForm() {
const router = useRouter();
const { update } = useSession();
const [checked, setChecked] = useState(false);
const [error, setError] = useState("");
const [loading, setLoading] = useState(false);
async function handleAccept() {
setError("");
setLoading(true);
const result = await acceptTermsAction();
if (result.error) {
setError(result.error);
setLoading(false);
return;
}
// Refresh JWT supaya middleware lihat acceptedTermsAndPrivacy=true
await update();
router.replace("/");
router.refresh();
}
return (
<div className="mt-6 rounded-2xl border border-neutral-200 bg-white p-6 shadow-sm">
{error && (
<div className="mb-4 rounded-xl bg-red-50 px-4 py-3 text-sm font-medium text-red-600">
{error}
</div>
)}
<label className="flex items-start gap-2.5 text-sm text-neutral-700">
<input
type="checkbox"
checked={checked}
onChange={(e) => setChecked(e.target.checked)}
className="mt-0.5 h-4 w-4 shrink-0 rounded border-neutral-300 text-primary-600 focus:ring-primary-500"
/>
<span>
Saya telah membaca dan menyetujui{" "}
<Link
href="/terms"
target="_blank"
rel="noopener noreferrer"
className="font-semibold text-primary-600 hover:text-primary-700"
>
Syarat &amp; Ketentuan
</Link>{" "}
dan{" "}
<Link
href="/privacy"
target="_blank"
rel="noopener noreferrer"
className="font-semibold text-primary-600 hover:text-primary-700"
>
Kebijakan Privasi
</Link>{" "}
SeTrip.
</span>
</label>
<div className="mt-5 flex flex-col gap-2 sm:flex-row">
<button
type="button"
onClick={handleAccept}
disabled={!checked || loading}
className="flex-1 rounded-xl bg-primary-600 py-2.5 text-sm font-bold text-white shadow-lg shadow-primary-600/20 transition-colors hover:bg-primary-700 disabled:opacity-50"
>
{loading ? "Memproses..." : "Setuju & Lanjutkan"}
</button>
<button
type="button"
onClick={() => signOut({ callbackUrl: "/login" })}
disabled={loading}
className="rounded-xl border border-neutral-200 bg-white px-4 py-2.5 text-sm font-medium text-neutral-600 hover:bg-neutral-50 disabled:opacity-50"
>
Keluar
</button>
</div>
</div>
);
}
+27
View File
@@ -0,0 +1,27 @@
import { redirect } from "next/navigation";
import { getServerSession } from "next-auth";
import { authOptions } from "@/lib/auth";
import { userRepo } from "@/server/repositories/user.repo";
import { AcceptTermsForm } from "./form";
export default async function AcceptTermsPage() {
const session = await getServerSession(authOptions);
if (!session?.user) redirect("/login?callbackUrl=/accept-terms");
// Source of truth = DB (token bisa stale).
const user = await userRepo.findById(session.user.id);
if (user?.acceptedTermsAndPrivacy) redirect("/");
return (
<div className="mx-auto max-w-xl px-4 py-10 sm:py-16">
<h1 className="text-2xl font-bold text-neutral-900 sm:text-3xl">
Satu langkah lagi
</h1>
<p className="mt-2 text-sm text-neutral-600">
Sebelum melanjutkan, mohon baca dan setujui Syarat &amp; Ketentuan dan
Kebijakan Privasi SeTrip.
</p>
<AcceptTermsForm />
</div>
);
}
+18 -1
View File
@@ -3,6 +3,7 @@ import { getServerSession } from "next-auth";
import { authOptions } from "@/lib/auth";
import { isAdminEmail } from "@/lib/admin";
import { organizerRepo } from "@/server/repositories/organizer.repo";
import { organizerService } from "@/server/services/organizer.service";
import { ReviewCard } from "@/features/organizer/components/review-card";
type Tab = "PENDING" | "APPROVED" | "REJECTED";
@@ -28,7 +29,23 @@ export default async function AdminVerificationsPage({ searchParams }: PageProps
const tab: Tab =
params.tab === "APPROVED" || params.tab === "REJECTED" ? params.tab : "PENDING";
const items = await organizerRepo.listByStatus(tab);
const rows = await organizerRepo.listByStatus(tab);
const items = rows.map((v) => ({
id: v.id,
fullName: v.fullName,
nik: organizerService.decryptNik(v.nikEncrypted),
birthDate: v.birthDate,
address: v.address,
bankName: v.bankName,
bankAccountNumber: v.bankAccountNumber,
bankAccountName: v.bankAccountName,
status: v.status,
rejectionReason: v.rejectionReason,
reviewedAt: v.reviewedAt,
createdAt: v.createdAt,
user: v.user,
reviewedBy: v.reviewedBy,
}));
const tabs: { key: Tab; label: string }[] = [
{ key: "PENDING", label: "Pending" },
+63
View File
@@ -0,0 +1,63 @@
import { NextRequest, NextResponse } from "next/server";
import { getServerSession } from "next-auth";
import { authOptions } from "@/lib/auth";
import { isAdminEmail } from "@/lib/admin";
import { organizerRepo } from "@/server/repositories/organizer.repo";
import {
isKycKind,
mimeFromKey,
readDecrypted,
} from "@/lib/secure-storage";
export const runtime = "nodejs";
export const dynamic = "force-dynamic";
interface RouteCtx {
params: Promise<{ id: string; kind: string }>;
}
export async function GET(_req: NextRequest, ctx: RouteCtx) {
const session = await getServerSession(authOptions);
if (!session?.user) {
return NextResponse.json({ error: "Unauthorized" }, { status: 401 });
}
const { id, kind } = await ctx.params;
if (!isKycKind(kind)) {
return NextResponse.json({ error: "Kind tidak valid" }, { status: 400 });
}
const verification = await organizerRepo.findById(id);
if (!verification) {
return NextResponse.json({ error: "Tidak ditemukan" }, { status: 404 });
}
const isOwner = verification.userId === session.user.id;
const isAdmin = isAdminEmail(session.user.email);
if (!isOwner && !isAdmin) {
return NextResponse.json({ error: "Forbidden" }, { status: 403 });
}
const key = kind === "ktp" ? verification.ktpImageKey : verification.selfieKey;
if (!key) {
return NextResponse.json({ error: "File belum diunggah" }, { status: 404 });
}
let plain: Buffer;
try {
plain = await readDecrypted(kind, key);
} catch {
return NextResponse.json({ error: "File tidak dapat dibuka" }, { status: 500 });
}
return new NextResponse(new Uint8Array(plain), {
status: 200,
headers: {
"Content-Type": mimeFromKey(key),
"Content-Length": String(plain.length),
"Cache-Control": "private, no-store",
"X-Content-Type-Options": "nosniff",
"Content-Disposition": `inline; filename="${kind}-${id}"`,
},
});
}
+54
View File
@@ -0,0 +1,54 @@
import { NextRequest, NextResponse } from "next/server";
import { getServerSession } from "next-auth";
import { authOptions } from "@/lib/auth";
import {
ALLOWED_KYC_MIME,
MAX_KYC_FILE_BYTES,
isKycKind,
saveEncrypted,
} from "@/lib/secure-storage";
export const runtime = "nodejs";
export const dynamic = "force-dynamic";
export async function POST(req: NextRequest) {
const session = await getServerSession(authOptions);
if (!session?.user) {
return NextResponse.json({ error: "Unauthorized" }, { status: 401 });
}
let form: FormData;
try {
form = await req.formData();
} catch {
return NextResponse.json({ error: "Body bukan multipart/form-data" }, { status: 400 });
}
const kind = String(form.get("kind") ?? "");
const file = form.get("file");
if (!isKycKind(kind)) {
return NextResponse.json({ error: "kind harus 'ktp' atau 'selfie'" }, { status: 400 });
}
if (!(file instanceof File)) {
return NextResponse.json({ error: "File wajib diisi" }, { status: 400 });
}
if (!ALLOWED_KYC_MIME.has(file.type)) {
return NextResponse.json(
{ error: "Hanya menerima JPG, PNG, atau WebP" },
{ status: 415 },
);
}
if (file.size > MAX_KYC_FILE_BYTES) {
return NextResponse.json({ error: "File maksimal 5MB" }, { status: 413 });
}
const buf = Buffer.from(await file.arrayBuffer());
const meta = await saveEncrypted(kind, buf, file.type);
return NextResponse.json({
key: meta.key,
mime: meta.mime,
size: meta.size,
});
}
+6
View File
@@ -22,6 +22,12 @@ export * from './enums';
*
*/
export type User = Prisma.UserModel
/**
* Model Account
* Tabel link akun OAuth pihak ketiga (Google, dst). Diisi oleh PrismaAdapter NextAuth.
* Session tidak pakai DB — kita pakai JWT, jadi Session/VerificationToken tidak perlu.
*/
export type Account = Prisma.AccountModel
/**
* Model OrganizerVerification
*
+6
View File
@@ -46,6 +46,12 @@ export { Prisma }
*
*/
export type User = Prisma.UserModel
/**
* Model Account
* Tabel link akun OAuth pihak ketiga (Google, dst). Diisi oleh PrismaAdapter NextAuth.
* Session tidak pakai DB — kita pakai JWT, jadi Session/VerificationToken tidak perlu.
*/
export type Account = Prisma.AccountModel
/**
* Model OrganizerVerification
*
+54
View File
@@ -148,6 +148,33 @@ export type DateTimeWithAggregatesFilter<$PrismaModel = never> = {
_max?: Prisma.NestedDateTimeFilter<$PrismaModel>
}
export type IntNullableFilter<$PrismaModel = never> = {
equals?: number | Prisma.IntFieldRefInput<$PrismaModel> | null
in?: number[] | Prisma.ListIntFieldRefInput<$PrismaModel> | null
notIn?: number[] | Prisma.ListIntFieldRefInput<$PrismaModel> | null
lt?: number | Prisma.IntFieldRefInput<$PrismaModel>
lte?: number | Prisma.IntFieldRefInput<$PrismaModel>
gt?: number | Prisma.IntFieldRefInput<$PrismaModel>
gte?: number | Prisma.IntFieldRefInput<$PrismaModel>
not?: Prisma.NestedIntNullableFilter<$PrismaModel> | number | null
}
export type IntNullableWithAggregatesFilter<$PrismaModel = never> = {
equals?: number | Prisma.IntFieldRefInput<$PrismaModel> | null
in?: number[] | Prisma.ListIntFieldRefInput<$PrismaModel> | null
notIn?: number[] | Prisma.ListIntFieldRefInput<$PrismaModel> | null
lt?: number | Prisma.IntFieldRefInput<$PrismaModel>
lte?: number | Prisma.IntFieldRefInput<$PrismaModel>
gt?: number | Prisma.IntFieldRefInput<$PrismaModel>
gte?: number | Prisma.IntFieldRefInput<$PrismaModel>
not?: Prisma.NestedIntNullableWithAggregatesFilter<$PrismaModel> | number | null
_count?: Prisma.NestedIntNullableFilter<$PrismaModel>
_avg?: Prisma.NestedFloatNullableFilter<$PrismaModel>
_sum?: Prisma.NestedIntNullableFilter<$PrismaModel>
_min?: Prisma.NestedIntNullableFilter<$PrismaModel>
_max?: Prisma.NestedIntNullableFilter<$PrismaModel>
}
export type EnumVerificationStatusFilter<$PrismaModel = never> = {
equals?: $Enums.VerificationStatus | Prisma.EnumVerificationStatusFieldRefInput<$PrismaModel>
in?: $Enums.VerificationStatus[] | Prisma.ListEnumVerificationStatusFieldRefInput<$PrismaModel>
@@ -373,6 +400,33 @@ export type NestedDateTimeWithAggregatesFilter<$PrismaModel = never> = {
_max?: Prisma.NestedDateTimeFilter<$PrismaModel>
}
export type NestedIntNullableWithAggregatesFilter<$PrismaModel = never> = {
equals?: number | Prisma.IntFieldRefInput<$PrismaModel> | null
in?: number[] | Prisma.ListIntFieldRefInput<$PrismaModel> | null
notIn?: number[] | Prisma.ListIntFieldRefInput<$PrismaModel> | null
lt?: number | Prisma.IntFieldRefInput<$PrismaModel>
lte?: number | Prisma.IntFieldRefInput<$PrismaModel>
gt?: number | Prisma.IntFieldRefInput<$PrismaModel>
gte?: number | Prisma.IntFieldRefInput<$PrismaModel>
not?: Prisma.NestedIntNullableWithAggregatesFilter<$PrismaModel> | number | null
_count?: Prisma.NestedIntNullableFilter<$PrismaModel>
_avg?: Prisma.NestedFloatNullableFilter<$PrismaModel>
_sum?: Prisma.NestedIntNullableFilter<$PrismaModel>
_min?: Prisma.NestedIntNullableFilter<$PrismaModel>
_max?: Prisma.NestedIntNullableFilter<$PrismaModel>
}
export type NestedFloatNullableFilter<$PrismaModel = never> = {
equals?: number | Prisma.FloatFieldRefInput<$PrismaModel> | null
in?: number[] | Prisma.ListFloatFieldRefInput<$PrismaModel> | null
notIn?: number[] | Prisma.ListFloatFieldRefInput<$PrismaModel> | null
lt?: number | Prisma.FloatFieldRefInput<$PrismaModel>
lte?: number | Prisma.FloatFieldRefInput<$PrismaModel>
gt?: number | Prisma.FloatFieldRefInput<$PrismaModel>
gte?: number | Prisma.FloatFieldRefInput<$PrismaModel>
not?: Prisma.NestedFloatNullableFilter<$PrismaModel> | number | null
}
export type NestedEnumVerificationStatusFilter<$PrismaModel = never> = {
equals?: $Enums.VerificationStatus | Prisma.EnumVerificationStatusFieldRefInput<$PrismaModel>
in?: $Enums.VerificationStatus[] | Prisma.ListEnumVerificationStatusFieldRefInput<$PrismaModel>
File diff suppressed because one or more lines are too long
+113 -18
View File
@@ -385,6 +385,7 @@ type FieldRefInputType<Model, FieldType> = Model extends never ? never : FieldRe
export const ModelName = {
User: 'User',
Account: 'Account',
OrganizerVerification: 'OrganizerVerification',
Trip: 'Trip',
TripReview: 'TripReview',
@@ -405,7 +406,7 @@ export type TypeMap<ExtArgs extends runtime.Types.Extensions.InternalArgs = runt
omit: GlobalOmitOptions
}
meta: {
modelProps: "user" | "organizerVerification" | "trip" | "tripReview" | "tripImage" | "tripParticipant"
modelProps: "user" | "account" | "organizerVerification" | "trip" | "tripReview" | "tripImage" | "tripParticipant"
txIsolationLevel: TransactionIsolationLevel
}
model: {
@@ -483,6 +484,80 @@ export type TypeMap<ExtArgs extends runtime.Types.Extensions.InternalArgs = runt
}
}
}
Account: {
payload: Prisma.$AccountPayload<ExtArgs>
fields: Prisma.AccountFieldRefs
operations: {
findUnique: {
args: Prisma.AccountFindUniqueArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$AccountPayload> | null
}
findUniqueOrThrow: {
args: Prisma.AccountFindUniqueOrThrowArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$AccountPayload>
}
findFirst: {
args: Prisma.AccountFindFirstArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$AccountPayload> | null
}
findFirstOrThrow: {
args: Prisma.AccountFindFirstOrThrowArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$AccountPayload>
}
findMany: {
args: Prisma.AccountFindManyArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$AccountPayload>[]
}
create: {
args: Prisma.AccountCreateArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$AccountPayload>
}
createMany: {
args: Prisma.AccountCreateManyArgs<ExtArgs>
result: BatchPayload
}
createManyAndReturn: {
args: Prisma.AccountCreateManyAndReturnArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$AccountPayload>[]
}
delete: {
args: Prisma.AccountDeleteArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$AccountPayload>
}
update: {
args: Prisma.AccountUpdateArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$AccountPayload>
}
deleteMany: {
args: Prisma.AccountDeleteManyArgs<ExtArgs>
result: BatchPayload
}
updateMany: {
args: Prisma.AccountUpdateManyArgs<ExtArgs>
result: BatchPayload
}
updateManyAndReturn: {
args: Prisma.AccountUpdateManyAndReturnArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$AccountPayload>[]
}
upsert: {
args: Prisma.AccountUpsertArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$AccountPayload>
}
aggregate: {
args: Prisma.AccountAggregateArgs<ExtArgs>
result: runtime.Types.Utils.Optional<Prisma.AggregateAccount>
}
groupBy: {
args: Prisma.AccountGroupByArgs<ExtArgs>
result: runtime.Types.Utils.Optional<Prisma.AccountGroupByOutputType>[]
}
count: {
args: Prisma.AccountCountArgs<ExtArgs>
result: runtime.Types.Utils.Optional<Prisma.AccountCountAggregateOutputType> | number
}
}
}
OrganizerVerification: {
payload: Prisma.$OrganizerVerificationPayload<ExtArgs>
fields: Prisma.OrganizerVerificationFieldRefs
@@ -907,15 +982,34 @@ export const UserScalarFieldEnum = {
export type UserScalarFieldEnum = (typeof UserScalarFieldEnum)[keyof typeof UserScalarFieldEnum]
export const AccountScalarFieldEnum = {
id: 'id',
userId: 'userId',
type: 'type',
provider: 'provider',
providerAccountId: 'providerAccountId',
refresh_token: 'refresh_token',
access_token: 'access_token',
expires_at: 'expires_at',
token_type: 'token_type',
scope: 'scope',
id_token: 'id_token',
session_state: 'session_state'
} as const
export type AccountScalarFieldEnum = (typeof AccountScalarFieldEnum)[keyof typeof AccountScalarFieldEnum]
export const OrganizerVerificationScalarFieldEnum = {
id: 'id',
userId: 'userId',
fullName: 'fullName',
nik: 'nik',
nikEncrypted: 'nikEncrypted',
nikHash: 'nikHash',
birthDate: 'birthDate',
address: 'address',
ktpImageUrl: 'ktpImageUrl',
selfieUrl: 'selfieUrl',
ktpImageKey: 'ktpImageKey',
selfieKey: 'selfieKey',
bankName: 'bankName',
bankAccountNumber: 'bankAccountNumber',
bankAccountName: 'bankAccountName',
@@ -1056,20 +1150,6 @@ export type ListDateTimeFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaM
/**
* Reference to a field of type 'VerificationStatus'
*/
export type EnumVerificationStatusFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'VerificationStatus'>
/**
* Reference to a field of type 'VerificationStatus[]'
*/
export type ListEnumVerificationStatusFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'VerificationStatus[]'>
/**
* Reference to a field of type 'Int'
*/
@@ -1084,6 +1164,20 @@ export type ListIntFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel,
/**
* Reference to a field of type 'VerificationStatus'
*/
export type EnumVerificationStatusFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'VerificationStatus'>
/**
* Reference to a field of type 'VerificationStatus[]'
*/
export type ListEnumVerificationStatusFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'VerificationStatus[]'>
/**
* Reference to a field of type 'TripStatus'
*/
@@ -1221,6 +1315,7 @@ export type PrismaClientOptions = ({
}
export type GlobalOmitConfig = {
user?: Prisma.UserOmit
account?: Prisma.AccountOmit
organizerVerification?: Prisma.OrganizerVerificationOmit
trip?: Prisma.TripOmit
tripReview?: Prisma.TripReviewOmit
@@ -52,6 +52,7 @@ export const AnyNull = runtime.AnyNull
export const ModelName = {
User: 'User',
Account: 'Account',
OrganizerVerification: 'OrganizerVerification',
Trip: 'Trip',
TripReview: 'TripReview',
@@ -90,15 +91,34 @@ export const UserScalarFieldEnum = {
export type UserScalarFieldEnum = (typeof UserScalarFieldEnum)[keyof typeof UserScalarFieldEnum]
export const AccountScalarFieldEnum = {
id: 'id',
userId: 'userId',
type: 'type',
provider: 'provider',
providerAccountId: 'providerAccountId',
refresh_token: 'refresh_token',
access_token: 'access_token',
expires_at: 'expires_at',
token_type: 'token_type',
scope: 'scope',
id_token: 'id_token',
session_state: 'session_state'
} as const
export type AccountScalarFieldEnum = (typeof AccountScalarFieldEnum)[keyof typeof AccountScalarFieldEnum]
export const OrganizerVerificationScalarFieldEnum = {
id: 'id',
userId: 'userId',
fullName: 'fullName',
nik: 'nik',
nikEncrypted: 'nikEncrypted',
nikHash: 'nikHash',
birthDate: 'birthDate',
address: 'address',
ktpImageUrl: 'ktpImageUrl',
selfieUrl: 'selfieUrl',
ktpImageKey: 'ktpImageKey',
selfieKey: 'selfieKey',
bankName: 'bankName',
bankAccountNumber: 'bankAccountNumber',
bankAccountName: 'bankAccountName',
+1
View File
@@ -9,6 +9,7 @@
* 🟢 You can import this file directly.
*/
export type * from './models/User'
export type * from './models/Account'
export type * from './models/OrganizerVerification'
export type * from './models/Trip'
export type * from './models/TripReview'
File diff suppressed because it is too large Load Diff
@@ -28,11 +28,12 @@ export type OrganizerVerificationMinAggregateOutputType = {
id: string | null
userId: string | null
fullName: string | null
nik: string | null
nikEncrypted: string | null
nikHash: string | null
birthDate: Date | null
address: string | null
ktpImageUrl: string | null
selfieUrl: string | null
ktpImageKey: string | null
selfieKey: string | null
bankName: string | null
bankAccountNumber: string | null
bankAccountName: string | null
@@ -49,11 +50,12 @@ export type OrganizerVerificationMaxAggregateOutputType = {
id: string | null
userId: string | null
fullName: string | null
nik: string | null
nikEncrypted: string | null
nikHash: string | null
birthDate: Date | null
address: string | null
ktpImageUrl: string | null
selfieUrl: string | null
ktpImageKey: string | null
selfieKey: string | null
bankName: string | null
bankAccountNumber: string | null
bankAccountName: string | null
@@ -70,11 +72,12 @@ export type OrganizerVerificationCountAggregateOutputType = {
id: number
userId: number
fullName: number
nik: number
nikEncrypted: number
nikHash: number
birthDate: number
address: number
ktpImageUrl: number
selfieUrl: number
ktpImageKey: number
selfieKey: number
bankName: number
bankAccountNumber: number
bankAccountName: number
@@ -93,11 +96,12 @@ export type OrganizerVerificationMinAggregateInputType = {
id?: true
userId?: true
fullName?: true
nik?: true
nikEncrypted?: true
nikHash?: true
birthDate?: true
address?: true
ktpImageUrl?: true
selfieUrl?: true
ktpImageKey?: true
selfieKey?: true
bankName?: true
bankAccountNumber?: true
bankAccountName?: true
@@ -114,11 +118,12 @@ export type OrganizerVerificationMaxAggregateInputType = {
id?: true
userId?: true
fullName?: true
nik?: true
nikEncrypted?: true
nikHash?: true
birthDate?: true
address?: true
ktpImageUrl?: true
selfieUrl?: true
ktpImageKey?: true
selfieKey?: true
bankName?: true
bankAccountNumber?: true
bankAccountName?: true
@@ -135,11 +140,12 @@ export type OrganizerVerificationCountAggregateInputType = {
id?: true
userId?: true
fullName?: true
nik?: true
nikEncrypted?: true
nikHash?: true
birthDate?: true
address?: true
ktpImageUrl?: true
selfieUrl?: true
ktpImageKey?: true
selfieKey?: true
bankName?: true
bankAccountNumber?: true
bankAccountName?: true
@@ -229,11 +235,12 @@ export type OrganizerVerificationGroupByOutputType = {
id: string
userId: string
fullName: string
nik: string
nikEncrypted: string
nikHash: string
birthDate: Date
address: string
ktpImageUrl: string
selfieUrl: string
ktpImageKey: string
selfieKey: string
bankName: string
bankAccountNumber: string
bankAccountName: string
@@ -271,11 +278,12 @@ export type OrganizerVerificationWhereInput = {
id?: Prisma.StringFilter<"OrganizerVerification"> | string
userId?: Prisma.StringFilter<"OrganizerVerification"> | string
fullName?: Prisma.StringFilter<"OrganizerVerification"> | string
nik?: Prisma.StringFilter<"OrganizerVerification"> | string
nikEncrypted?: Prisma.StringFilter<"OrganizerVerification"> | string
nikHash?: Prisma.StringFilter<"OrganizerVerification"> | string
birthDate?: Prisma.DateTimeFilter<"OrganizerVerification"> | Date | string
address?: Prisma.StringFilter<"OrganizerVerification"> | string
ktpImageUrl?: Prisma.StringFilter<"OrganizerVerification"> | string
selfieUrl?: Prisma.StringFilter<"OrganizerVerification"> | string
ktpImageKey?: Prisma.StringFilter<"OrganizerVerification"> | string
selfieKey?: Prisma.StringFilter<"OrganizerVerification"> | string
bankName?: Prisma.StringFilter<"OrganizerVerification"> | string
bankAccountNumber?: Prisma.StringFilter<"OrganizerVerification"> | string
bankAccountName?: Prisma.StringFilter<"OrganizerVerification"> | string
@@ -294,11 +302,12 @@ export type OrganizerVerificationOrderByWithRelationInput = {
id?: Prisma.SortOrder
userId?: Prisma.SortOrder
fullName?: Prisma.SortOrder
nik?: Prisma.SortOrder
nikEncrypted?: Prisma.SortOrder
nikHash?: Prisma.SortOrder
birthDate?: Prisma.SortOrder
address?: Prisma.SortOrder
ktpImageUrl?: Prisma.SortOrder
selfieUrl?: Prisma.SortOrder
ktpImageKey?: Prisma.SortOrder
selfieKey?: Prisma.SortOrder
bankName?: Prisma.SortOrder
bankAccountNumber?: Prisma.SortOrder
bankAccountName?: Prisma.SortOrder
@@ -316,15 +325,16 @@ export type OrganizerVerificationOrderByWithRelationInput = {
export type OrganizerVerificationWhereUniqueInput = Prisma.AtLeast<{
id?: string
userId?: string
nik?: string
nikHash?: string
AND?: Prisma.OrganizerVerificationWhereInput | Prisma.OrganizerVerificationWhereInput[]
OR?: Prisma.OrganizerVerificationWhereInput[]
NOT?: Prisma.OrganizerVerificationWhereInput | Prisma.OrganizerVerificationWhereInput[]
fullName?: Prisma.StringFilter<"OrganizerVerification"> | string
nikEncrypted?: Prisma.StringFilter<"OrganizerVerification"> | string
birthDate?: Prisma.DateTimeFilter<"OrganizerVerification"> | Date | string
address?: Prisma.StringFilter<"OrganizerVerification"> | string
ktpImageUrl?: Prisma.StringFilter<"OrganizerVerification"> | string
selfieUrl?: Prisma.StringFilter<"OrganizerVerification"> | string
ktpImageKey?: Prisma.StringFilter<"OrganizerVerification"> | string
selfieKey?: Prisma.StringFilter<"OrganizerVerification"> | string
bankName?: Prisma.StringFilter<"OrganizerVerification"> | string
bankAccountNumber?: Prisma.StringFilter<"OrganizerVerification"> | string
bankAccountName?: Prisma.StringFilter<"OrganizerVerification"> | string
@@ -337,17 +347,18 @@ export type OrganizerVerificationWhereUniqueInput = Prisma.AtLeast<{
updatedAt?: Prisma.DateTimeFilter<"OrganizerVerification"> | Date | string
user?: Prisma.XOR<Prisma.UserScalarRelationFilter, Prisma.UserWhereInput>
reviewedBy?: Prisma.XOR<Prisma.UserNullableScalarRelationFilter, Prisma.UserWhereInput> | null
}, "id" | "userId" | "nik">
}, "id" | "userId" | "nikHash">
export type OrganizerVerificationOrderByWithAggregationInput = {
id?: Prisma.SortOrder
userId?: Prisma.SortOrder
fullName?: Prisma.SortOrder
nik?: Prisma.SortOrder
nikEncrypted?: Prisma.SortOrder
nikHash?: Prisma.SortOrder
birthDate?: Prisma.SortOrder
address?: Prisma.SortOrder
ktpImageUrl?: Prisma.SortOrder
selfieUrl?: Prisma.SortOrder
ktpImageKey?: Prisma.SortOrder
selfieKey?: Prisma.SortOrder
bankName?: Prisma.SortOrder
bankAccountNumber?: Prisma.SortOrder
bankAccountName?: Prisma.SortOrder
@@ -370,11 +381,12 @@ export type OrganizerVerificationScalarWhereWithAggregatesInput = {
id?: Prisma.StringWithAggregatesFilter<"OrganizerVerification"> | string
userId?: Prisma.StringWithAggregatesFilter<"OrganizerVerification"> | string
fullName?: Prisma.StringWithAggregatesFilter<"OrganizerVerification"> | string
nik?: Prisma.StringWithAggregatesFilter<"OrganizerVerification"> | string
nikEncrypted?: Prisma.StringWithAggregatesFilter<"OrganizerVerification"> | string
nikHash?: Prisma.StringWithAggregatesFilter<"OrganizerVerification"> | string
birthDate?: Prisma.DateTimeWithAggregatesFilter<"OrganizerVerification"> | Date | string
address?: Prisma.StringWithAggregatesFilter<"OrganizerVerification"> | string
ktpImageUrl?: Prisma.StringWithAggregatesFilter<"OrganizerVerification"> | string
selfieUrl?: Prisma.StringWithAggregatesFilter<"OrganizerVerification"> | string
ktpImageKey?: Prisma.StringWithAggregatesFilter<"OrganizerVerification"> | string
selfieKey?: Prisma.StringWithAggregatesFilter<"OrganizerVerification"> | string
bankName?: Prisma.StringWithAggregatesFilter<"OrganizerVerification"> | string
bankAccountNumber?: Prisma.StringWithAggregatesFilter<"OrganizerVerification"> | string
bankAccountName?: Prisma.StringWithAggregatesFilter<"OrganizerVerification"> | string
@@ -390,11 +402,12 @@ export type OrganizerVerificationScalarWhereWithAggregatesInput = {
export type OrganizerVerificationCreateInput = {
id?: string
fullName: string
nik: string
nikEncrypted: string
nikHash: string
birthDate: Date | string
address: string
ktpImageUrl: string
selfieUrl: string
ktpImageKey: string
selfieKey: string
bankName: string
bankAccountNumber: string
bankAccountName: string
@@ -412,11 +425,12 @@ export type OrganizerVerificationUncheckedCreateInput = {
id?: string
userId: string
fullName: string
nik: string
nikEncrypted: string
nikHash: string
birthDate: Date | string
address: string
ktpImageUrl: string
selfieUrl: string
ktpImageKey: string
selfieKey: string
bankName: string
bankAccountNumber: string
bankAccountName: string
@@ -432,11 +446,12 @@ export type OrganizerVerificationUncheckedCreateInput = {
export type OrganizerVerificationUpdateInput = {
id?: Prisma.StringFieldUpdateOperationsInput | string
fullName?: Prisma.StringFieldUpdateOperationsInput | string
nik?: Prisma.StringFieldUpdateOperationsInput | string
nikEncrypted?: Prisma.StringFieldUpdateOperationsInput | string
nikHash?: Prisma.StringFieldUpdateOperationsInput | string
birthDate?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
address?: Prisma.StringFieldUpdateOperationsInput | string
ktpImageUrl?: Prisma.StringFieldUpdateOperationsInput | string
selfieUrl?: Prisma.StringFieldUpdateOperationsInput | string
ktpImageKey?: Prisma.StringFieldUpdateOperationsInput | string
selfieKey?: Prisma.StringFieldUpdateOperationsInput | string
bankName?: Prisma.StringFieldUpdateOperationsInput | string
bankAccountNumber?: Prisma.StringFieldUpdateOperationsInput | string
bankAccountName?: Prisma.StringFieldUpdateOperationsInput | string
@@ -454,11 +469,12 @@ export type OrganizerVerificationUncheckedUpdateInput = {
id?: Prisma.StringFieldUpdateOperationsInput | string
userId?: Prisma.StringFieldUpdateOperationsInput | string
fullName?: Prisma.StringFieldUpdateOperationsInput | string
nik?: Prisma.StringFieldUpdateOperationsInput | string
nikEncrypted?: Prisma.StringFieldUpdateOperationsInput | string
nikHash?: Prisma.StringFieldUpdateOperationsInput | string
birthDate?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
address?: Prisma.StringFieldUpdateOperationsInput | string
ktpImageUrl?: Prisma.StringFieldUpdateOperationsInput | string
selfieUrl?: Prisma.StringFieldUpdateOperationsInput | string
ktpImageKey?: Prisma.StringFieldUpdateOperationsInput | string
selfieKey?: Prisma.StringFieldUpdateOperationsInput | string
bankName?: Prisma.StringFieldUpdateOperationsInput | string
bankAccountNumber?: Prisma.StringFieldUpdateOperationsInput | string
bankAccountName?: Prisma.StringFieldUpdateOperationsInput | string
@@ -475,11 +491,12 @@ export type OrganizerVerificationCreateManyInput = {
id?: string
userId: string
fullName: string
nik: string
nikEncrypted: string
nikHash: string
birthDate: Date | string
address: string
ktpImageUrl: string
selfieUrl: string
ktpImageKey: string
selfieKey: string
bankName: string
bankAccountNumber: string
bankAccountName: string
@@ -495,11 +512,12 @@ export type OrganizerVerificationCreateManyInput = {
export type OrganizerVerificationUpdateManyMutationInput = {
id?: Prisma.StringFieldUpdateOperationsInput | string
fullName?: Prisma.StringFieldUpdateOperationsInput | string
nik?: Prisma.StringFieldUpdateOperationsInput | string
nikEncrypted?: Prisma.StringFieldUpdateOperationsInput | string
nikHash?: Prisma.StringFieldUpdateOperationsInput | string
birthDate?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
address?: Prisma.StringFieldUpdateOperationsInput | string
ktpImageUrl?: Prisma.StringFieldUpdateOperationsInput | string
selfieUrl?: Prisma.StringFieldUpdateOperationsInput | string
ktpImageKey?: Prisma.StringFieldUpdateOperationsInput | string
selfieKey?: Prisma.StringFieldUpdateOperationsInput | string
bankName?: Prisma.StringFieldUpdateOperationsInput | string
bankAccountNumber?: Prisma.StringFieldUpdateOperationsInput | string
bankAccountName?: Prisma.StringFieldUpdateOperationsInput | string
@@ -515,11 +533,12 @@ export type OrganizerVerificationUncheckedUpdateManyInput = {
id?: Prisma.StringFieldUpdateOperationsInput | string
userId?: Prisma.StringFieldUpdateOperationsInput | string
fullName?: Prisma.StringFieldUpdateOperationsInput | string
nik?: Prisma.StringFieldUpdateOperationsInput | string
nikEncrypted?: Prisma.StringFieldUpdateOperationsInput | string
nikHash?: Prisma.StringFieldUpdateOperationsInput | string
birthDate?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
address?: Prisma.StringFieldUpdateOperationsInput | string
ktpImageUrl?: Prisma.StringFieldUpdateOperationsInput | string
selfieUrl?: Prisma.StringFieldUpdateOperationsInput | string
ktpImageKey?: Prisma.StringFieldUpdateOperationsInput | string
selfieKey?: Prisma.StringFieldUpdateOperationsInput | string
bankName?: Prisma.StringFieldUpdateOperationsInput | string
bankAccountNumber?: Prisma.StringFieldUpdateOperationsInput | string
bankAccountName?: Prisma.StringFieldUpdateOperationsInput | string
@@ -551,11 +570,12 @@ export type OrganizerVerificationCountOrderByAggregateInput = {
id?: Prisma.SortOrder
userId?: Prisma.SortOrder
fullName?: Prisma.SortOrder
nik?: Prisma.SortOrder
nikEncrypted?: Prisma.SortOrder
nikHash?: Prisma.SortOrder
birthDate?: Prisma.SortOrder
address?: Prisma.SortOrder
ktpImageUrl?: Prisma.SortOrder
selfieUrl?: Prisma.SortOrder
ktpImageKey?: Prisma.SortOrder
selfieKey?: Prisma.SortOrder
bankName?: Prisma.SortOrder
bankAccountNumber?: Prisma.SortOrder
bankAccountName?: Prisma.SortOrder
@@ -572,11 +592,12 @@ export type OrganizerVerificationMaxOrderByAggregateInput = {
id?: Prisma.SortOrder
userId?: Prisma.SortOrder
fullName?: Prisma.SortOrder
nik?: Prisma.SortOrder
nikEncrypted?: Prisma.SortOrder
nikHash?: Prisma.SortOrder
birthDate?: Prisma.SortOrder
address?: Prisma.SortOrder
ktpImageUrl?: Prisma.SortOrder
selfieUrl?: Prisma.SortOrder
ktpImageKey?: Prisma.SortOrder
selfieKey?: Prisma.SortOrder
bankName?: Prisma.SortOrder
bankAccountNumber?: Prisma.SortOrder
bankAccountName?: Prisma.SortOrder
@@ -593,11 +614,12 @@ export type OrganizerVerificationMinOrderByAggregateInput = {
id?: Prisma.SortOrder
userId?: Prisma.SortOrder
fullName?: Prisma.SortOrder
nik?: Prisma.SortOrder
nikEncrypted?: Prisma.SortOrder
nikHash?: Prisma.SortOrder
birthDate?: Prisma.SortOrder
address?: Prisma.SortOrder
ktpImageUrl?: Prisma.SortOrder
selfieUrl?: Prisma.SortOrder
ktpImageKey?: Prisma.SortOrder
selfieKey?: Prisma.SortOrder
bankName?: Prisma.SortOrder
bankAccountNumber?: Prisma.SortOrder
bankAccountName?: Prisma.SortOrder
@@ -691,11 +713,12 @@ export type EnumVerificationStatusFieldUpdateOperationsInput = {
export type OrganizerVerificationCreateWithoutUserInput = {
id?: string
fullName: string
nik: string
nikEncrypted: string
nikHash: string
birthDate: Date | string
address: string
ktpImageUrl: string
selfieUrl: string
ktpImageKey: string
selfieKey: string
bankName: string
bankAccountNumber: string
bankAccountName: string
@@ -711,11 +734,12 @@ export type OrganizerVerificationCreateWithoutUserInput = {
export type OrganizerVerificationUncheckedCreateWithoutUserInput = {
id?: string
fullName: string
nik: string
nikEncrypted: string
nikHash: string
birthDate: Date | string
address: string
ktpImageUrl: string
selfieUrl: string
ktpImageKey: string
selfieKey: string
bankName: string
bankAccountNumber: string
bankAccountName: string
@@ -736,11 +760,12 @@ export type OrganizerVerificationCreateOrConnectWithoutUserInput = {
export type OrganizerVerificationCreateWithoutReviewedByInput = {
id?: string
fullName: string
nik: string
nikEncrypted: string
nikHash: string
birthDate: Date | string
address: string
ktpImageUrl: string
selfieUrl: string
ktpImageKey: string
selfieKey: string
bankName: string
bankAccountNumber: string
bankAccountName: string
@@ -757,11 +782,12 @@ export type OrganizerVerificationUncheckedCreateWithoutReviewedByInput = {
id?: string
userId: string
fullName: string
nik: string
nikEncrypted: string
nikHash: string
birthDate: Date | string
address: string
ktpImageUrl: string
selfieUrl: string
ktpImageKey: string
selfieKey: string
bankName: string
bankAccountNumber: string
bankAccountName: string
@@ -797,11 +823,12 @@ export type OrganizerVerificationUpdateToOneWithWhereWithoutUserInput = {
export type OrganizerVerificationUpdateWithoutUserInput = {
id?: Prisma.StringFieldUpdateOperationsInput | string
fullName?: Prisma.StringFieldUpdateOperationsInput | string
nik?: Prisma.StringFieldUpdateOperationsInput | string
nikEncrypted?: Prisma.StringFieldUpdateOperationsInput | string
nikHash?: Prisma.StringFieldUpdateOperationsInput | string
birthDate?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
address?: Prisma.StringFieldUpdateOperationsInput | string
ktpImageUrl?: Prisma.StringFieldUpdateOperationsInput | string
selfieUrl?: Prisma.StringFieldUpdateOperationsInput | string
ktpImageKey?: Prisma.StringFieldUpdateOperationsInput | string
selfieKey?: Prisma.StringFieldUpdateOperationsInput | string
bankName?: Prisma.StringFieldUpdateOperationsInput | string
bankAccountNumber?: Prisma.StringFieldUpdateOperationsInput | string
bankAccountName?: Prisma.StringFieldUpdateOperationsInput | string
@@ -817,11 +844,12 @@ export type OrganizerVerificationUpdateWithoutUserInput = {
export type OrganizerVerificationUncheckedUpdateWithoutUserInput = {
id?: Prisma.StringFieldUpdateOperationsInput | string
fullName?: Prisma.StringFieldUpdateOperationsInput | string
nik?: Prisma.StringFieldUpdateOperationsInput | string
nikEncrypted?: Prisma.StringFieldUpdateOperationsInput | string
nikHash?: Prisma.StringFieldUpdateOperationsInput | string
birthDate?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
address?: Prisma.StringFieldUpdateOperationsInput | string
ktpImageUrl?: Prisma.StringFieldUpdateOperationsInput | string
selfieUrl?: Prisma.StringFieldUpdateOperationsInput | string
ktpImageKey?: Prisma.StringFieldUpdateOperationsInput | string
selfieKey?: Prisma.StringFieldUpdateOperationsInput | string
bankName?: Prisma.StringFieldUpdateOperationsInput | string
bankAccountNumber?: Prisma.StringFieldUpdateOperationsInput | string
bankAccountName?: Prisma.StringFieldUpdateOperationsInput | string
@@ -857,11 +885,12 @@ export type OrganizerVerificationScalarWhereInput = {
id?: Prisma.StringFilter<"OrganizerVerification"> | string
userId?: Prisma.StringFilter<"OrganizerVerification"> | string
fullName?: Prisma.StringFilter<"OrganizerVerification"> | string
nik?: Prisma.StringFilter<"OrganizerVerification"> | string
nikEncrypted?: Prisma.StringFilter<"OrganizerVerification"> | string
nikHash?: Prisma.StringFilter<"OrganizerVerification"> | string
birthDate?: Prisma.DateTimeFilter<"OrganizerVerification"> | Date | string
address?: Prisma.StringFilter<"OrganizerVerification"> | string
ktpImageUrl?: Prisma.StringFilter<"OrganizerVerification"> | string
selfieUrl?: Prisma.StringFilter<"OrganizerVerification"> | string
ktpImageKey?: Prisma.StringFilter<"OrganizerVerification"> | string
selfieKey?: Prisma.StringFilter<"OrganizerVerification"> | string
bankName?: Prisma.StringFilter<"OrganizerVerification"> | string
bankAccountNumber?: Prisma.StringFilter<"OrganizerVerification"> | string
bankAccountName?: Prisma.StringFilter<"OrganizerVerification"> | string
@@ -878,11 +907,12 @@ export type OrganizerVerificationCreateManyReviewedByInput = {
id?: string
userId: string
fullName: string
nik: string
nikEncrypted: string
nikHash: string
birthDate: Date | string
address: string
ktpImageUrl: string
selfieUrl: string
ktpImageKey: string
selfieKey: string
bankName: string
bankAccountNumber: string
bankAccountName: string
@@ -897,11 +927,12 @@ export type OrganizerVerificationCreateManyReviewedByInput = {
export type OrganizerVerificationUpdateWithoutReviewedByInput = {
id?: Prisma.StringFieldUpdateOperationsInput | string
fullName?: Prisma.StringFieldUpdateOperationsInput | string
nik?: Prisma.StringFieldUpdateOperationsInput | string
nikEncrypted?: Prisma.StringFieldUpdateOperationsInput | string
nikHash?: Prisma.StringFieldUpdateOperationsInput | string
birthDate?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
address?: Prisma.StringFieldUpdateOperationsInput | string
ktpImageUrl?: Prisma.StringFieldUpdateOperationsInput | string
selfieUrl?: Prisma.StringFieldUpdateOperationsInput | string
ktpImageKey?: Prisma.StringFieldUpdateOperationsInput | string
selfieKey?: Prisma.StringFieldUpdateOperationsInput | string
bankName?: Prisma.StringFieldUpdateOperationsInput | string
bankAccountNumber?: Prisma.StringFieldUpdateOperationsInput | string
bankAccountName?: Prisma.StringFieldUpdateOperationsInput | string
@@ -918,11 +949,12 @@ export type OrganizerVerificationUncheckedUpdateWithoutReviewedByInput = {
id?: Prisma.StringFieldUpdateOperationsInput | string
userId?: Prisma.StringFieldUpdateOperationsInput | string
fullName?: Prisma.StringFieldUpdateOperationsInput | string
nik?: Prisma.StringFieldUpdateOperationsInput | string
nikEncrypted?: Prisma.StringFieldUpdateOperationsInput | string
nikHash?: Prisma.StringFieldUpdateOperationsInput | string
birthDate?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
address?: Prisma.StringFieldUpdateOperationsInput | string
ktpImageUrl?: Prisma.StringFieldUpdateOperationsInput | string
selfieUrl?: Prisma.StringFieldUpdateOperationsInput | string
ktpImageKey?: Prisma.StringFieldUpdateOperationsInput | string
selfieKey?: Prisma.StringFieldUpdateOperationsInput | string
bankName?: Prisma.StringFieldUpdateOperationsInput | string
bankAccountNumber?: Prisma.StringFieldUpdateOperationsInput | string
bankAccountName?: Prisma.StringFieldUpdateOperationsInput | string
@@ -938,11 +970,12 @@ export type OrganizerVerificationUncheckedUpdateManyWithoutReviewedByInput = {
id?: Prisma.StringFieldUpdateOperationsInput | string
userId?: Prisma.StringFieldUpdateOperationsInput | string
fullName?: Prisma.StringFieldUpdateOperationsInput | string
nik?: Prisma.StringFieldUpdateOperationsInput | string
nikEncrypted?: Prisma.StringFieldUpdateOperationsInput | string
nikHash?: Prisma.StringFieldUpdateOperationsInput | string
birthDate?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
address?: Prisma.StringFieldUpdateOperationsInput | string
ktpImageUrl?: Prisma.StringFieldUpdateOperationsInput | string
selfieUrl?: Prisma.StringFieldUpdateOperationsInput | string
ktpImageKey?: Prisma.StringFieldUpdateOperationsInput | string
selfieKey?: Prisma.StringFieldUpdateOperationsInput | string
bankName?: Prisma.StringFieldUpdateOperationsInput | string
bankAccountNumber?: Prisma.StringFieldUpdateOperationsInput | string
bankAccountName?: Prisma.StringFieldUpdateOperationsInput | string
@@ -960,11 +993,12 @@ export type OrganizerVerificationSelect<ExtArgs extends runtime.Types.Extensions
id?: boolean
userId?: boolean
fullName?: boolean
nik?: boolean
nikEncrypted?: boolean
nikHash?: boolean
birthDate?: boolean
address?: boolean
ktpImageUrl?: boolean
selfieUrl?: boolean
ktpImageKey?: boolean
selfieKey?: boolean
bankName?: boolean
bankAccountNumber?: boolean
bankAccountName?: boolean
@@ -983,11 +1017,12 @@ export type OrganizerVerificationSelectCreateManyAndReturn<ExtArgs extends runti
id?: boolean
userId?: boolean
fullName?: boolean
nik?: boolean
nikEncrypted?: boolean
nikHash?: boolean
birthDate?: boolean
address?: boolean
ktpImageUrl?: boolean
selfieUrl?: boolean
ktpImageKey?: boolean
selfieKey?: boolean
bankName?: boolean
bankAccountNumber?: boolean
bankAccountName?: boolean
@@ -1006,11 +1041,12 @@ export type OrganizerVerificationSelectUpdateManyAndReturn<ExtArgs extends runti
id?: boolean
userId?: boolean
fullName?: boolean
nik?: boolean
nikEncrypted?: boolean
nikHash?: boolean
birthDate?: boolean
address?: boolean
ktpImageUrl?: boolean
selfieUrl?: boolean
ktpImageKey?: boolean
selfieKey?: boolean
bankName?: boolean
bankAccountNumber?: boolean
bankAccountName?: boolean
@@ -1029,11 +1065,12 @@ export type OrganizerVerificationSelectScalar = {
id?: boolean
userId?: boolean
fullName?: boolean
nik?: boolean
nikEncrypted?: boolean
nikHash?: boolean
birthDate?: boolean
address?: boolean
ktpImageUrl?: boolean
selfieUrl?: boolean
ktpImageKey?: boolean
selfieKey?: boolean
bankName?: boolean
bankAccountNumber?: boolean
bankAccountName?: boolean
@@ -1046,7 +1083,7 @@ export type OrganizerVerificationSelectScalar = {
updatedAt?: boolean
}
export type OrganizerVerificationOmit<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetOmit<"id" | "userId" | "fullName" | "nik" | "birthDate" | "address" | "ktpImageUrl" | "selfieUrl" | "bankName" | "bankAccountNumber" | "bankAccountName" | "status" | "rejectionReason" | "reviewedAt" | "reviewedById" | "verifiedAt" | "createdAt" | "updatedAt", ExtArgs["result"]["organizerVerification"]>
export type OrganizerVerificationOmit<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetOmit<"id" | "userId" | "fullName" | "nikEncrypted" | "nikHash" | "birthDate" | "address" | "ktpImageKey" | "selfieKey" | "bankName" | "bankAccountNumber" | "bankAccountName" | "status" | "rejectionReason" | "reviewedAt" | "reviewedById" | "verifiedAt" | "createdAt" | "updatedAt", ExtArgs["result"]["organizerVerification"]>
export type OrganizerVerificationInclude<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
user?: boolean | Prisma.UserDefaultArgs<ExtArgs>
reviewedBy?: boolean | Prisma.OrganizerVerification$reviewedByArgs<ExtArgs>
@@ -1074,19 +1111,23 @@ export type $OrganizerVerificationPayload<ExtArgs extends runtime.Types.Extensio
*/
fullName: string
/**
* Nomor Induk Kependudukan (PII — perlakukan sensitif)
* NIK terenkripsi (AES-256-GCM, base64). Plaintext tidak disimpan.
*/
nik: string
nikEncrypted: string
/**
* HMAC-SHA256(NIK + pepper) untuk uniqueness lookup tanpa membuka plaintext.
*/
nikHash: string
birthDate: Date
address: string
/**
* URL foto KTP (untuk MVP pakai hosting; pindah ke storage privat untuk produksi)
* Storage key foto KTP (mis. `ktp/<id>.jpg`). File disimpan terenkripsi di luar /public.
*/
ktpImageUrl: string
ktpImageKey: string
/**
* URL selfie memegang KTP
* Storage key selfie memegang KTP.
*/
selfieUrl: string
selfieKey: string
bankName: string
bankAccountNumber: string
bankAccountName: string
@@ -1525,11 +1566,12 @@ export interface OrganizerVerificationFieldRefs {
readonly id: Prisma.FieldRef<"OrganizerVerification", 'String'>
readonly userId: Prisma.FieldRef<"OrganizerVerification", 'String'>
readonly fullName: Prisma.FieldRef<"OrganizerVerification", 'String'>
readonly nik: Prisma.FieldRef<"OrganizerVerification", 'String'>
readonly nikEncrypted: Prisma.FieldRef<"OrganizerVerification", 'String'>
readonly nikHash: Prisma.FieldRef<"OrganizerVerification", 'String'>
readonly birthDate: Prisma.FieldRef<"OrganizerVerification", 'DateTime'>
readonly address: Prisma.FieldRef<"OrganizerVerification", 'String'>
readonly ktpImageUrl: Prisma.FieldRef<"OrganizerVerification", 'String'>
readonly selfieUrl: Prisma.FieldRef<"OrganizerVerification", 'String'>
readonly ktpImageKey: Prisma.FieldRef<"OrganizerVerification", 'String'>
readonly selfieKey: Prisma.FieldRef<"OrganizerVerification", 'String'>
readonly bankName: Prisma.FieldRef<"OrganizerVerification", 'String'>
readonly bankAccountNumber: Prisma.FieldRef<"OrganizerVerification", 'String'>
readonly bankAccountName: Prisma.FieldRef<"OrganizerVerification", 'String'>
+200 -35
View File
@@ -175,7 +175,7 @@ export type UserGroupByOutputType = {
id: string
name: string
email: string
password: string
password: string | null
image: string | null
acceptedTermsAndPrivacy: boolean
acceptedAt: Date | null
@@ -208,12 +208,13 @@ export type UserWhereInput = {
id?: Prisma.StringFilter<"User"> | string
name?: Prisma.StringFilter<"User"> | string
email?: Prisma.StringFilter<"User"> | string
password?: Prisma.StringFilter<"User"> | string
password?: Prisma.StringNullableFilter<"User"> | string | null
image?: Prisma.StringNullableFilter<"User"> | string | null
acceptedTermsAndPrivacy?: Prisma.BoolFilter<"User"> | boolean
acceptedAt?: Prisma.DateTimeNullableFilter<"User"> | Date | string | null
createdAt?: Prisma.DateTimeFilter<"User"> | Date | string
updatedAt?: Prisma.DateTimeFilter<"User"> | Date | string
accounts?: Prisma.AccountListRelationFilter
trips?: Prisma.TripListRelationFilter
participations?: Prisma.TripParticipantListRelationFilter
tripReviews?: Prisma.TripReviewListRelationFilter
@@ -225,12 +226,13 @@ export type UserOrderByWithRelationInput = {
id?: Prisma.SortOrder
name?: Prisma.SortOrder
email?: Prisma.SortOrder
password?: Prisma.SortOrder
password?: Prisma.SortOrderInput | Prisma.SortOrder
image?: Prisma.SortOrderInput | Prisma.SortOrder
acceptedTermsAndPrivacy?: Prisma.SortOrder
acceptedAt?: Prisma.SortOrderInput | Prisma.SortOrder
createdAt?: Prisma.SortOrder
updatedAt?: Prisma.SortOrder
accounts?: Prisma.AccountOrderByRelationAggregateInput
trips?: Prisma.TripOrderByRelationAggregateInput
participations?: Prisma.TripParticipantOrderByRelationAggregateInput
tripReviews?: Prisma.TripReviewOrderByRelationAggregateInput
@@ -245,12 +247,13 @@ export type UserWhereUniqueInput = Prisma.AtLeast<{
OR?: Prisma.UserWhereInput[]
NOT?: Prisma.UserWhereInput | Prisma.UserWhereInput[]
name?: Prisma.StringFilter<"User"> | string
password?: Prisma.StringFilter<"User"> | string
password?: Prisma.StringNullableFilter<"User"> | string | null
image?: Prisma.StringNullableFilter<"User"> | string | null
acceptedTermsAndPrivacy?: Prisma.BoolFilter<"User"> | boolean
acceptedAt?: Prisma.DateTimeNullableFilter<"User"> | Date | string | null
createdAt?: Prisma.DateTimeFilter<"User"> | Date | string
updatedAt?: Prisma.DateTimeFilter<"User"> | Date | string
accounts?: Prisma.AccountListRelationFilter
trips?: Prisma.TripListRelationFilter
participations?: Prisma.TripParticipantListRelationFilter
tripReviews?: Prisma.TripReviewListRelationFilter
@@ -262,7 +265,7 @@ export type UserOrderByWithAggregationInput = {
id?: Prisma.SortOrder
name?: Prisma.SortOrder
email?: Prisma.SortOrder
password?: Prisma.SortOrder
password?: Prisma.SortOrderInput | Prisma.SortOrder
image?: Prisma.SortOrderInput | Prisma.SortOrder
acceptedTermsAndPrivacy?: Prisma.SortOrder
acceptedAt?: Prisma.SortOrderInput | Prisma.SortOrder
@@ -280,7 +283,7 @@ export type UserScalarWhereWithAggregatesInput = {
id?: Prisma.StringWithAggregatesFilter<"User"> | string
name?: Prisma.StringWithAggregatesFilter<"User"> | string
email?: Prisma.StringWithAggregatesFilter<"User"> | string
password?: Prisma.StringWithAggregatesFilter<"User"> | string
password?: Prisma.StringNullableWithAggregatesFilter<"User"> | string | null
image?: Prisma.StringNullableWithAggregatesFilter<"User"> | string | null
acceptedTermsAndPrivacy?: Prisma.BoolWithAggregatesFilter<"User"> | boolean
acceptedAt?: Prisma.DateTimeNullableWithAggregatesFilter<"User"> | Date | string | null
@@ -292,12 +295,13 @@ export type UserCreateInput = {
id?: string
name: string
email: string
password: string
password?: string | null
image?: string | null
acceptedTermsAndPrivacy?: boolean
acceptedAt?: Date | string | null
createdAt?: Date | string
updatedAt?: Date | string
accounts?: Prisma.AccountCreateNestedManyWithoutUserInput
trips?: Prisma.TripCreateNestedManyWithoutOrganizerInput
participations?: Prisma.TripParticipantCreateNestedManyWithoutUserInput
tripReviews?: Prisma.TripReviewCreateNestedManyWithoutUserInput
@@ -309,12 +313,13 @@ export type UserUncheckedCreateInput = {
id?: string
name: string
email: string
password: string
password?: string | null
image?: string | null
acceptedTermsAndPrivacy?: boolean
acceptedAt?: Date | string | null
createdAt?: Date | string
updatedAt?: Date | string
accounts?: Prisma.AccountUncheckedCreateNestedManyWithoutUserInput
trips?: Prisma.TripUncheckedCreateNestedManyWithoutOrganizerInput
participations?: Prisma.TripParticipantUncheckedCreateNestedManyWithoutUserInput
tripReviews?: Prisma.TripReviewUncheckedCreateNestedManyWithoutUserInput
@@ -326,12 +331,13 @@ export type UserUpdateInput = {
id?: Prisma.StringFieldUpdateOperationsInput | string
name?: Prisma.StringFieldUpdateOperationsInput | string
email?: Prisma.StringFieldUpdateOperationsInput | string
password?: Prisma.StringFieldUpdateOperationsInput | string
password?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
image?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
acceptedTermsAndPrivacy?: Prisma.BoolFieldUpdateOperationsInput | boolean
acceptedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
accounts?: Prisma.AccountUpdateManyWithoutUserNestedInput
trips?: Prisma.TripUpdateManyWithoutOrganizerNestedInput
participations?: Prisma.TripParticipantUpdateManyWithoutUserNestedInput
tripReviews?: Prisma.TripReviewUpdateManyWithoutUserNestedInput
@@ -343,12 +349,13 @@ export type UserUncheckedUpdateInput = {
id?: Prisma.StringFieldUpdateOperationsInput | string
name?: Prisma.StringFieldUpdateOperationsInput | string
email?: Prisma.StringFieldUpdateOperationsInput | string
password?: Prisma.StringFieldUpdateOperationsInput | string
password?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
image?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
acceptedTermsAndPrivacy?: Prisma.BoolFieldUpdateOperationsInput | boolean
acceptedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
accounts?: Prisma.AccountUncheckedUpdateManyWithoutUserNestedInput
trips?: Prisma.TripUncheckedUpdateManyWithoutOrganizerNestedInput
participations?: Prisma.TripParticipantUncheckedUpdateManyWithoutUserNestedInput
tripReviews?: Prisma.TripReviewUncheckedUpdateManyWithoutUserNestedInput
@@ -360,7 +367,7 @@ export type UserCreateManyInput = {
id?: string
name: string
email: string
password: string
password?: string | null
image?: string | null
acceptedTermsAndPrivacy?: boolean
acceptedAt?: Date | string | null
@@ -372,7 +379,7 @@ export type UserUpdateManyMutationInput = {
id?: Prisma.StringFieldUpdateOperationsInput | string
name?: Prisma.StringFieldUpdateOperationsInput | string
email?: Prisma.StringFieldUpdateOperationsInput | string
password?: Prisma.StringFieldUpdateOperationsInput | string
password?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
image?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
acceptedTermsAndPrivacy?: Prisma.BoolFieldUpdateOperationsInput | boolean
acceptedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
@@ -384,7 +391,7 @@ export type UserUncheckedUpdateManyInput = {
id?: Prisma.StringFieldUpdateOperationsInput | string
name?: Prisma.StringFieldUpdateOperationsInput | string
email?: Prisma.StringFieldUpdateOperationsInput | string
password?: Prisma.StringFieldUpdateOperationsInput | string
password?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
image?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
acceptedTermsAndPrivacy?: Prisma.BoolFieldUpdateOperationsInput | boolean
acceptedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
@@ -458,6 +465,20 @@ export type DateTimeFieldUpdateOperationsInput = {
set?: Date | string
}
export type UserCreateNestedOneWithoutAccountsInput = {
create?: Prisma.XOR<Prisma.UserCreateWithoutAccountsInput, Prisma.UserUncheckedCreateWithoutAccountsInput>
connectOrCreate?: Prisma.UserCreateOrConnectWithoutAccountsInput
connect?: Prisma.UserWhereUniqueInput
}
export type UserUpdateOneRequiredWithoutAccountsNestedInput = {
create?: Prisma.XOR<Prisma.UserCreateWithoutAccountsInput, Prisma.UserUncheckedCreateWithoutAccountsInput>
connectOrCreate?: Prisma.UserCreateOrConnectWithoutAccountsInput
upsert?: Prisma.UserUpsertWithoutAccountsInput
connect?: Prisma.UserWhereUniqueInput
update?: Prisma.XOR<Prisma.XOR<Prisma.UserUpdateToOneWithWhereWithoutAccountsInput, Prisma.UserUpdateWithoutAccountsInput>, Prisma.UserUncheckedUpdateWithoutAccountsInput>
}
export type UserCreateNestedOneWithoutOrganizerVerificationInput = {
create?: Prisma.XOR<Prisma.UserCreateWithoutOrganizerVerificationInput, Prisma.UserUncheckedCreateWithoutOrganizerVerificationInput>
connectOrCreate?: Prisma.UserCreateOrConnectWithoutOrganizerVerificationInput
@@ -530,11 +551,11 @@ export type UserUpdateOneRequiredWithoutParticipationsNestedInput = {
update?: Prisma.XOR<Prisma.XOR<Prisma.UserUpdateToOneWithWhereWithoutParticipationsInput, Prisma.UserUpdateWithoutParticipationsInput>, Prisma.UserUncheckedUpdateWithoutParticipationsInput>
}
export type UserCreateWithoutOrganizerVerificationInput = {
export type UserCreateWithoutAccountsInput = {
id?: string
name: string
email: string
password: string
password?: string | null
image?: string | null
acceptedTermsAndPrivacy?: boolean
acceptedAt?: Date | string | null
@@ -543,6 +564,91 @@ export type UserCreateWithoutOrganizerVerificationInput = {
trips?: Prisma.TripCreateNestedManyWithoutOrganizerInput
participations?: Prisma.TripParticipantCreateNestedManyWithoutUserInput
tripReviews?: Prisma.TripReviewCreateNestedManyWithoutUserInput
organizerVerification?: Prisma.OrganizerVerificationCreateNestedOneWithoutUserInput
reviewedVerifications?: Prisma.OrganizerVerificationCreateNestedManyWithoutReviewedByInput
}
export type UserUncheckedCreateWithoutAccountsInput = {
id?: string
name: string
email: string
password?: string | null
image?: string | null
acceptedTermsAndPrivacy?: boolean
acceptedAt?: Date | string | null
createdAt?: Date | string
updatedAt?: Date | string
trips?: Prisma.TripUncheckedCreateNestedManyWithoutOrganizerInput
participations?: Prisma.TripParticipantUncheckedCreateNestedManyWithoutUserInput
tripReviews?: Prisma.TripReviewUncheckedCreateNestedManyWithoutUserInput
organizerVerification?: Prisma.OrganizerVerificationUncheckedCreateNestedOneWithoutUserInput
reviewedVerifications?: Prisma.OrganizerVerificationUncheckedCreateNestedManyWithoutReviewedByInput
}
export type UserCreateOrConnectWithoutAccountsInput = {
where: Prisma.UserWhereUniqueInput
create: Prisma.XOR<Prisma.UserCreateWithoutAccountsInput, Prisma.UserUncheckedCreateWithoutAccountsInput>
}
export type UserUpsertWithoutAccountsInput = {
update: Prisma.XOR<Prisma.UserUpdateWithoutAccountsInput, Prisma.UserUncheckedUpdateWithoutAccountsInput>
create: Prisma.XOR<Prisma.UserCreateWithoutAccountsInput, Prisma.UserUncheckedCreateWithoutAccountsInput>
where?: Prisma.UserWhereInput
}
export type UserUpdateToOneWithWhereWithoutAccountsInput = {
where?: Prisma.UserWhereInput
data: Prisma.XOR<Prisma.UserUpdateWithoutAccountsInput, Prisma.UserUncheckedUpdateWithoutAccountsInput>
}
export type UserUpdateWithoutAccountsInput = {
id?: Prisma.StringFieldUpdateOperationsInput | string
name?: Prisma.StringFieldUpdateOperationsInput | string
email?: Prisma.StringFieldUpdateOperationsInput | string
password?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
image?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
acceptedTermsAndPrivacy?: Prisma.BoolFieldUpdateOperationsInput | boolean
acceptedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
trips?: Prisma.TripUpdateManyWithoutOrganizerNestedInput
participations?: Prisma.TripParticipantUpdateManyWithoutUserNestedInput
tripReviews?: Prisma.TripReviewUpdateManyWithoutUserNestedInput
organizerVerification?: Prisma.OrganizerVerificationUpdateOneWithoutUserNestedInput
reviewedVerifications?: Prisma.OrganizerVerificationUpdateManyWithoutReviewedByNestedInput
}
export type UserUncheckedUpdateWithoutAccountsInput = {
id?: Prisma.StringFieldUpdateOperationsInput | string
name?: Prisma.StringFieldUpdateOperationsInput | string
email?: Prisma.StringFieldUpdateOperationsInput | string
password?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
image?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
acceptedTermsAndPrivacy?: Prisma.BoolFieldUpdateOperationsInput | boolean
acceptedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
trips?: Prisma.TripUncheckedUpdateManyWithoutOrganizerNestedInput
participations?: Prisma.TripParticipantUncheckedUpdateManyWithoutUserNestedInput
tripReviews?: Prisma.TripReviewUncheckedUpdateManyWithoutUserNestedInput
organizerVerification?: Prisma.OrganizerVerificationUncheckedUpdateOneWithoutUserNestedInput
reviewedVerifications?: Prisma.OrganizerVerificationUncheckedUpdateManyWithoutReviewedByNestedInput
}
export type UserCreateWithoutOrganizerVerificationInput = {
id?: string
name: string
email: string
password?: string | null
image?: string | null
acceptedTermsAndPrivacy?: boolean
acceptedAt?: Date | string | null
createdAt?: Date | string
updatedAt?: Date | string
accounts?: Prisma.AccountCreateNestedManyWithoutUserInput
trips?: Prisma.TripCreateNestedManyWithoutOrganizerInput
participations?: Prisma.TripParticipantCreateNestedManyWithoutUserInput
tripReviews?: Prisma.TripReviewCreateNestedManyWithoutUserInput
reviewedVerifications?: Prisma.OrganizerVerificationCreateNestedManyWithoutReviewedByInput
}
@@ -550,12 +656,13 @@ export type UserUncheckedCreateWithoutOrganizerVerificationInput = {
id?: string
name: string
email: string
password: string
password?: string | null
image?: string | null
acceptedTermsAndPrivacy?: boolean
acceptedAt?: Date | string | null
createdAt?: Date | string
updatedAt?: Date | string
accounts?: Prisma.AccountUncheckedCreateNestedManyWithoutUserInput
trips?: Prisma.TripUncheckedCreateNestedManyWithoutOrganizerInput
participations?: Prisma.TripParticipantUncheckedCreateNestedManyWithoutUserInput
tripReviews?: Prisma.TripReviewUncheckedCreateNestedManyWithoutUserInput
@@ -571,12 +678,13 @@ export type UserCreateWithoutReviewedVerificationsInput = {
id?: string
name: string
email: string
password: string
password?: string | null
image?: string | null
acceptedTermsAndPrivacy?: boolean
acceptedAt?: Date | string | null
createdAt?: Date | string
updatedAt?: Date | string
accounts?: Prisma.AccountCreateNestedManyWithoutUserInput
trips?: Prisma.TripCreateNestedManyWithoutOrganizerInput
participations?: Prisma.TripParticipantCreateNestedManyWithoutUserInput
tripReviews?: Prisma.TripReviewCreateNestedManyWithoutUserInput
@@ -587,12 +695,13 @@ export type UserUncheckedCreateWithoutReviewedVerificationsInput = {
id?: string
name: string
email: string
password: string
password?: string | null
image?: string | null
acceptedTermsAndPrivacy?: boolean
acceptedAt?: Date | string | null
createdAt?: Date | string
updatedAt?: Date | string
accounts?: Prisma.AccountUncheckedCreateNestedManyWithoutUserInput
trips?: Prisma.TripUncheckedCreateNestedManyWithoutOrganizerInput
participations?: Prisma.TripParticipantUncheckedCreateNestedManyWithoutUserInput
tripReviews?: Prisma.TripReviewUncheckedCreateNestedManyWithoutUserInput
@@ -619,12 +728,13 @@ export type UserUpdateWithoutOrganizerVerificationInput = {
id?: Prisma.StringFieldUpdateOperationsInput | string
name?: Prisma.StringFieldUpdateOperationsInput | string
email?: Prisma.StringFieldUpdateOperationsInput | string
password?: Prisma.StringFieldUpdateOperationsInput | string
password?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
image?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
acceptedTermsAndPrivacy?: Prisma.BoolFieldUpdateOperationsInput | boolean
acceptedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
accounts?: Prisma.AccountUpdateManyWithoutUserNestedInput
trips?: Prisma.TripUpdateManyWithoutOrganizerNestedInput
participations?: Prisma.TripParticipantUpdateManyWithoutUserNestedInput
tripReviews?: Prisma.TripReviewUpdateManyWithoutUserNestedInput
@@ -635,12 +745,13 @@ export type UserUncheckedUpdateWithoutOrganizerVerificationInput = {
id?: Prisma.StringFieldUpdateOperationsInput | string
name?: Prisma.StringFieldUpdateOperationsInput | string
email?: Prisma.StringFieldUpdateOperationsInput | string
password?: Prisma.StringFieldUpdateOperationsInput | string
password?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
image?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
acceptedTermsAndPrivacy?: Prisma.BoolFieldUpdateOperationsInput | boolean
acceptedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
accounts?: Prisma.AccountUncheckedUpdateManyWithoutUserNestedInput
trips?: Prisma.TripUncheckedUpdateManyWithoutOrganizerNestedInput
participations?: Prisma.TripParticipantUncheckedUpdateManyWithoutUserNestedInput
tripReviews?: Prisma.TripReviewUncheckedUpdateManyWithoutUserNestedInput
@@ -662,12 +773,13 @@ export type UserUpdateWithoutReviewedVerificationsInput = {
id?: Prisma.StringFieldUpdateOperationsInput | string
name?: Prisma.StringFieldUpdateOperationsInput | string
email?: Prisma.StringFieldUpdateOperationsInput | string
password?: Prisma.StringFieldUpdateOperationsInput | string
password?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
image?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
acceptedTermsAndPrivacy?: Prisma.BoolFieldUpdateOperationsInput | boolean
acceptedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
accounts?: Prisma.AccountUpdateManyWithoutUserNestedInput
trips?: Prisma.TripUpdateManyWithoutOrganizerNestedInput
participations?: Prisma.TripParticipantUpdateManyWithoutUserNestedInput
tripReviews?: Prisma.TripReviewUpdateManyWithoutUserNestedInput
@@ -678,12 +790,13 @@ export type UserUncheckedUpdateWithoutReviewedVerificationsInput = {
id?: Prisma.StringFieldUpdateOperationsInput | string
name?: Prisma.StringFieldUpdateOperationsInput | string
email?: Prisma.StringFieldUpdateOperationsInput | string
password?: Prisma.StringFieldUpdateOperationsInput | string
password?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
image?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
acceptedTermsAndPrivacy?: Prisma.BoolFieldUpdateOperationsInput | boolean
acceptedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
accounts?: Prisma.AccountUncheckedUpdateManyWithoutUserNestedInput
trips?: Prisma.TripUncheckedUpdateManyWithoutOrganizerNestedInput
participations?: Prisma.TripParticipantUncheckedUpdateManyWithoutUserNestedInput
tripReviews?: Prisma.TripReviewUncheckedUpdateManyWithoutUserNestedInput
@@ -694,12 +807,13 @@ export type UserCreateWithoutTripsInput = {
id?: string
name: string
email: string
password: string
password?: string | null
image?: string | null
acceptedTermsAndPrivacy?: boolean
acceptedAt?: Date | string | null
createdAt?: Date | string
updatedAt?: Date | string
accounts?: Prisma.AccountCreateNestedManyWithoutUserInput
participations?: Prisma.TripParticipantCreateNestedManyWithoutUserInput
tripReviews?: Prisma.TripReviewCreateNestedManyWithoutUserInput
organizerVerification?: Prisma.OrganizerVerificationCreateNestedOneWithoutUserInput
@@ -710,12 +824,13 @@ export type UserUncheckedCreateWithoutTripsInput = {
id?: string
name: string
email: string
password: string
password?: string | null
image?: string | null
acceptedTermsAndPrivacy?: boolean
acceptedAt?: Date | string | null
createdAt?: Date | string
updatedAt?: Date | string
accounts?: Prisma.AccountUncheckedCreateNestedManyWithoutUserInput
participations?: Prisma.TripParticipantUncheckedCreateNestedManyWithoutUserInput
tripReviews?: Prisma.TripReviewUncheckedCreateNestedManyWithoutUserInput
organizerVerification?: Prisma.OrganizerVerificationUncheckedCreateNestedOneWithoutUserInput
@@ -742,12 +857,13 @@ export type UserUpdateWithoutTripsInput = {
id?: Prisma.StringFieldUpdateOperationsInput | string
name?: Prisma.StringFieldUpdateOperationsInput | string
email?: Prisma.StringFieldUpdateOperationsInput | string
password?: Prisma.StringFieldUpdateOperationsInput | string
password?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
image?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
acceptedTermsAndPrivacy?: Prisma.BoolFieldUpdateOperationsInput | boolean
acceptedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
accounts?: Prisma.AccountUpdateManyWithoutUserNestedInput
participations?: Prisma.TripParticipantUpdateManyWithoutUserNestedInput
tripReviews?: Prisma.TripReviewUpdateManyWithoutUserNestedInput
organizerVerification?: Prisma.OrganizerVerificationUpdateOneWithoutUserNestedInput
@@ -758,12 +874,13 @@ export type UserUncheckedUpdateWithoutTripsInput = {
id?: Prisma.StringFieldUpdateOperationsInput | string
name?: Prisma.StringFieldUpdateOperationsInput | string
email?: Prisma.StringFieldUpdateOperationsInput | string
password?: Prisma.StringFieldUpdateOperationsInput | string
password?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
image?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
acceptedTermsAndPrivacy?: Prisma.BoolFieldUpdateOperationsInput | boolean
acceptedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
accounts?: Prisma.AccountUncheckedUpdateManyWithoutUserNestedInput
participations?: Prisma.TripParticipantUncheckedUpdateManyWithoutUserNestedInput
tripReviews?: Prisma.TripReviewUncheckedUpdateManyWithoutUserNestedInput
organizerVerification?: Prisma.OrganizerVerificationUncheckedUpdateOneWithoutUserNestedInput
@@ -774,12 +891,13 @@ export type UserCreateWithoutTripReviewsInput = {
id?: string
name: string
email: string
password: string
password?: string | null
image?: string | null
acceptedTermsAndPrivacy?: boolean
acceptedAt?: Date | string | null
createdAt?: Date | string
updatedAt?: Date | string
accounts?: Prisma.AccountCreateNestedManyWithoutUserInput
trips?: Prisma.TripCreateNestedManyWithoutOrganizerInput
participations?: Prisma.TripParticipantCreateNestedManyWithoutUserInput
organizerVerification?: Prisma.OrganizerVerificationCreateNestedOneWithoutUserInput
@@ -790,12 +908,13 @@ export type UserUncheckedCreateWithoutTripReviewsInput = {
id?: string
name: string
email: string
password: string
password?: string | null
image?: string | null
acceptedTermsAndPrivacy?: boolean
acceptedAt?: Date | string | null
createdAt?: Date | string
updatedAt?: Date | string
accounts?: Prisma.AccountUncheckedCreateNestedManyWithoutUserInput
trips?: Prisma.TripUncheckedCreateNestedManyWithoutOrganizerInput
participations?: Prisma.TripParticipantUncheckedCreateNestedManyWithoutUserInput
organizerVerification?: Prisma.OrganizerVerificationUncheckedCreateNestedOneWithoutUserInput
@@ -822,12 +941,13 @@ export type UserUpdateWithoutTripReviewsInput = {
id?: Prisma.StringFieldUpdateOperationsInput | string
name?: Prisma.StringFieldUpdateOperationsInput | string
email?: Prisma.StringFieldUpdateOperationsInput | string
password?: Prisma.StringFieldUpdateOperationsInput | string
password?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
image?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
acceptedTermsAndPrivacy?: Prisma.BoolFieldUpdateOperationsInput | boolean
acceptedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
accounts?: Prisma.AccountUpdateManyWithoutUserNestedInput
trips?: Prisma.TripUpdateManyWithoutOrganizerNestedInput
participations?: Prisma.TripParticipantUpdateManyWithoutUserNestedInput
organizerVerification?: Prisma.OrganizerVerificationUpdateOneWithoutUserNestedInput
@@ -838,12 +958,13 @@ export type UserUncheckedUpdateWithoutTripReviewsInput = {
id?: Prisma.StringFieldUpdateOperationsInput | string
name?: Prisma.StringFieldUpdateOperationsInput | string
email?: Prisma.StringFieldUpdateOperationsInput | string
password?: Prisma.StringFieldUpdateOperationsInput | string
password?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
image?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
acceptedTermsAndPrivacy?: Prisma.BoolFieldUpdateOperationsInput | boolean
acceptedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
accounts?: Prisma.AccountUncheckedUpdateManyWithoutUserNestedInput
trips?: Prisma.TripUncheckedUpdateManyWithoutOrganizerNestedInput
participations?: Prisma.TripParticipantUncheckedUpdateManyWithoutUserNestedInput
organizerVerification?: Prisma.OrganizerVerificationUncheckedUpdateOneWithoutUserNestedInput
@@ -854,12 +975,13 @@ export type UserCreateWithoutParticipationsInput = {
id?: string
name: string
email: string
password: string
password?: string | null
image?: string | null
acceptedTermsAndPrivacy?: boolean
acceptedAt?: Date | string | null
createdAt?: Date | string
updatedAt?: Date | string
accounts?: Prisma.AccountCreateNestedManyWithoutUserInput
trips?: Prisma.TripCreateNestedManyWithoutOrganizerInput
tripReviews?: Prisma.TripReviewCreateNestedManyWithoutUserInput
organizerVerification?: Prisma.OrganizerVerificationCreateNestedOneWithoutUserInput
@@ -870,12 +992,13 @@ export type UserUncheckedCreateWithoutParticipationsInput = {
id?: string
name: string
email: string
password: string
password?: string | null
image?: string | null
acceptedTermsAndPrivacy?: boolean
acceptedAt?: Date | string | null
createdAt?: Date | string
updatedAt?: Date | string
accounts?: Prisma.AccountUncheckedCreateNestedManyWithoutUserInput
trips?: Prisma.TripUncheckedCreateNestedManyWithoutOrganizerInput
tripReviews?: Prisma.TripReviewUncheckedCreateNestedManyWithoutUserInput
organizerVerification?: Prisma.OrganizerVerificationUncheckedCreateNestedOneWithoutUserInput
@@ -902,12 +1025,13 @@ export type UserUpdateWithoutParticipationsInput = {
id?: Prisma.StringFieldUpdateOperationsInput | string
name?: Prisma.StringFieldUpdateOperationsInput | string
email?: Prisma.StringFieldUpdateOperationsInput | string
password?: Prisma.StringFieldUpdateOperationsInput | string
password?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
image?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
acceptedTermsAndPrivacy?: Prisma.BoolFieldUpdateOperationsInput | boolean
acceptedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
accounts?: Prisma.AccountUpdateManyWithoutUserNestedInput
trips?: Prisma.TripUpdateManyWithoutOrganizerNestedInput
tripReviews?: Prisma.TripReviewUpdateManyWithoutUserNestedInput
organizerVerification?: Prisma.OrganizerVerificationUpdateOneWithoutUserNestedInput
@@ -918,12 +1042,13 @@ export type UserUncheckedUpdateWithoutParticipationsInput = {
id?: Prisma.StringFieldUpdateOperationsInput | string
name?: Prisma.StringFieldUpdateOperationsInput | string
email?: Prisma.StringFieldUpdateOperationsInput | string
password?: Prisma.StringFieldUpdateOperationsInput | string
password?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
image?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
acceptedTermsAndPrivacy?: Prisma.BoolFieldUpdateOperationsInput | boolean
acceptedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
accounts?: Prisma.AccountUncheckedUpdateManyWithoutUserNestedInput
trips?: Prisma.TripUncheckedUpdateManyWithoutOrganizerNestedInput
tripReviews?: Prisma.TripReviewUncheckedUpdateManyWithoutUserNestedInput
organizerVerification?: Prisma.OrganizerVerificationUncheckedUpdateOneWithoutUserNestedInput
@@ -936,6 +1061,7 @@ export type UserUncheckedUpdateWithoutParticipationsInput = {
*/
export type UserCountOutputType = {
accounts: number
trips: number
participations: number
tripReviews: number
@@ -943,6 +1069,7 @@ export type UserCountOutputType = {
}
export type UserCountOutputTypeSelect<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
accounts?: boolean | UserCountOutputTypeCountAccountsArgs
trips?: boolean | UserCountOutputTypeCountTripsArgs
participations?: boolean | UserCountOutputTypeCountParticipationsArgs
tripReviews?: boolean | UserCountOutputTypeCountTripReviewsArgs
@@ -959,6 +1086,13 @@ export type UserCountOutputTypeDefaultArgs<ExtArgs extends runtime.Types.Extensi
select?: Prisma.UserCountOutputTypeSelect<ExtArgs> | null
}
/**
* UserCountOutputType without action
*/
export type UserCountOutputTypeCountAccountsArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
where?: Prisma.AccountWhereInput
}
/**
* UserCountOutputType without action
*/
@@ -998,6 +1132,7 @@ export type UserSelect<ExtArgs extends runtime.Types.Extensions.InternalArgs = r
acceptedAt?: boolean
createdAt?: boolean
updatedAt?: boolean
accounts?: boolean | Prisma.User$accountsArgs<ExtArgs>
trips?: boolean | Prisma.User$tripsArgs<ExtArgs>
participations?: boolean | Prisma.User$participationsArgs<ExtArgs>
tripReviews?: boolean | Prisma.User$tripReviewsArgs<ExtArgs>
@@ -1044,6 +1179,7 @@ export type UserSelectScalar = {
export type UserOmit<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetOmit<"id" | "name" | "email" | "password" | "image" | "acceptedTermsAndPrivacy" | "acceptedAt" | "createdAt" | "updatedAt", ExtArgs["result"]["user"]>
export type UserInclude<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
accounts?: boolean | Prisma.User$accountsArgs<ExtArgs>
trips?: boolean | Prisma.User$tripsArgs<ExtArgs>
participations?: boolean | Prisma.User$participationsArgs<ExtArgs>
tripReviews?: boolean | Prisma.User$tripReviewsArgs<ExtArgs>
@@ -1057,6 +1193,7 @@ export type UserIncludeUpdateManyAndReturn<ExtArgs extends runtime.Types.Extensi
export type $UserPayload<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
name: "User"
objects: {
accounts: Prisma.$AccountPayload<ExtArgs>[]
trips: Prisma.$TripPayload<ExtArgs>[]
participations: Prisma.$TripParticipantPayload<ExtArgs>[]
tripReviews: Prisma.$TripReviewPayload<ExtArgs>[]
@@ -1067,7 +1204,10 @@ export type $UserPayload<ExtArgs extends runtime.Types.Extensions.InternalArgs =
id: string
name: string
email: string
password: string
/**
* Hash bcrypt. Null untuk user yang sign-in via OAuth (mis. Google).
*/
password: string | null
image: string | null
/**
* Apakah user telah menyetujui Syarat & Ketentuan dan Kebijakan Privasi
@@ -1473,6 +1613,7 @@ readonly fields: UserFieldRefs;
*/
export interface Prisma__UserClient<T, Null = never, ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs, GlobalOmitOptions = {}> extends Prisma.PrismaPromise<T> {
readonly [Symbol.toStringTag]: "PrismaPromise"
accounts<T extends Prisma.User$accountsArgs<ExtArgs> = {}>(args?: Prisma.Subset<T, Prisma.User$accountsArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$AccountPayload<ExtArgs>, T, "findMany", GlobalOmitOptions> | Null>
trips<T extends Prisma.User$tripsArgs<ExtArgs> = {}>(args?: Prisma.Subset<T, Prisma.User$tripsArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$TripPayload<ExtArgs>, T, "findMany", GlobalOmitOptions> | Null>
participations<T extends Prisma.User$participationsArgs<ExtArgs> = {}>(args?: Prisma.Subset<T, Prisma.User$participationsArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$TripParticipantPayload<ExtArgs>, T, "findMany", GlobalOmitOptions> | Null>
tripReviews<T extends Prisma.User$tripReviewsArgs<ExtArgs> = {}>(args?: Prisma.Subset<T, Prisma.User$tripReviewsArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$TripReviewPayload<ExtArgs>, T, "findMany", GlobalOmitOptions> | Null>
@@ -1908,6 +2049,30 @@ export type UserDeleteManyArgs<ExtArgs extends runtime.Types.Extensions.Internal
limit?: number
}
/**
* User.accounts
*/
export type User$accountsArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
/**
* Select specific fields to fetch from the Account
*/
select?: Prisma.AccountSelect<ExtArgs> | null
/**
* Omit specific fields from the Account
*/
omit?: Prisma.AccountOmit<ExtArgs> | null
/**
* Choose, which related nodes to fetch as well
*/
include?: Prisma.AccountInclude<ExtArgs> | null
where?: Prisma.AccountWhereInput
orderBy?: Prisma.AccountOrderByWithRelationInput | Prisma.AccountOrderByWithRelationInput[]
cursor?: Prisma.AccountWhereUniqueInput
take?: number
skip?: number
distinct?: Prisma.AccountScalarFieldEnum | Prisma.AccountScalarFieldEnum[]
}
/**
* User.trips
*/
+9
View File
@@ -5,6 +5,7 @@ import { signIn } from "next-auth/react";
import { useRouter, useSearchParams } from "next/navigation";
import Link from "next/link";
import Image from "next/image";
import { GoogleSignInButton } from "@/components/shared/google-sign-in-button";
function safeInternalPath(raw: string | null): string {
if (!raw || !raw.startsWith("/") || raw.startsWith("//")) return "/";
@@ -84,6 +85,14 @@ function LoginForm() {
</div>
)}
<GoogleSignInButton callbackUrl={safeInternalPath(searchParams.get("callbackUrl"))} />
<div className="my-4 flex items-center gap-3 text-xs text-neutral-400">
<span className="h-px flex-1 bg-neutral-200" />
<span>atau</span>
<span className="h-px flex-1 bg-neutral-200" />
</div>
<form onSubmit={handleSubmit} className="space-y-4">
<div>
<label htmlFor="email" className="mb-1.5 block text-sm font-semibold text-neutral-700">
+9
View File
@@ -6,6 +6,7 @@ import { signIn } from "next-auth/react";
import Link from "next/link";
import Image from "next/image";
import { registerAction } from "@/features/auth/actions";
import { GoogleSignInButton } from "@/components/shared/google-sign-in-button";
export default function RegisterPage() {
const router = useRouter();
@@ -83,6 +84,14 @@ export default function RegisterPage() {
</div>
)}
<GoogleSignInButton label="Daftar dengan Google" />
<div className="my-4 flex items-center gap-3 text-xs text-neutral-400">
<span className="h-px flex-1 bg-neutral-200" />
<span>atau</span>
<span className="h-px flex-1 bg-neutral-200" />
</div>
<form onSubmit={handleSubmit} className="space-y-4">
<div>
<label htmlFor="name" className="mb-1.5 block text-sm font-semibold text-neutral-700">
+15 -1
View File
@@ -14,6 +14,20 @@ export default async function VerifyPage() {
const verification = await organizerService.getStatusForUser(session.user.id);
const initial = verification
? {
fullName: verification.fullName,
nik: organizerService.decryptNik(verification.nikEncrypted),
birthDate: verification.birthDate,
address: verification.address,
ktpImageKey: verification.ktpImageKey,
selfieKey: verification.selfieKey,
bankName: verification.bankName,
bankAccountNumber: verification.bankAccountNumber,
bankAccountName: verification.bankAccountName,
}
: null;
return (
<div className="mx-auto max-w-2xl px-4 py-8 sm:py-12">
<div className="mb-6">
@@ -66,7 +80,7 @@ export default async function VerifyPage() {
)}
{verification?.status !== "APPROVED" && verification?.status !== "PENDING" && (
<VerifyForm initial={verification ?? null} />
<VerifyForm initial={initial} />
)}
<p className="mt-6 text-center text-sm text-neutral-500">