feat: secure KYC storage, Google OAuth, terms gating
This commit is contained in:
@@ -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 & 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>
|
||||
);
|
||||
}
|
||||
@@ -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 & Ketentuan dan
|
||||
Kebijakan Privasi SeTrip.
|
||||
</p>
|
||||
<AcceptTermsForm />
|
||||
</div>
|
||||
);
|
||||
}
|
||||
@@ -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" },
|
||||
|
||||
@@ -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}"`,
|
||||
},
|
||||
});
|
||||
}
|
||||
@@ -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,
|
||||
});
|
||||
}
|
||||
@@ -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
|
||||
*
|
||||
|
||||
@@ -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
|
||||
*
|
||||
|
||||
@@ -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
@@ -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',
|
||||
|
||||
@@ -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'>
|
||||
|
||||
@@ -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
|
||||
*/
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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
@@ -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">
|
||||
|
||||
Reference in New Issue
Block a user