Fix rejected Apple:

Penambahan fitur checklist terms of service dan penambahan database blockuser

Add:
- prisma/migrations/20251124061947_add_terms_of_service_accepted/
- prisma/migrations/20251124081155_add_blocked_user_and_menu_feature/
- prisma/migrations/20251124083155_fix_master_kategori_app_and_delete_menu_feature/
- public/terms-of-service.html
- src/app/api/auth/term-service/

Fix:
- prisma/schema.prisma
- src/app/api/auth/register/route.ts
- src/app/api/auth/validasi/route.ts
- src/app_modules/_global/fun/generate_seeder.ts
- src/bin/seeder/master/master_kategori_app.json
- src/bin/seeder/user_seeder.json
- src/middleware.tsx

### No Issue
This commit is contained in:
2025-11-24 16:44:00 +08:00
parent 38734cda8c
commit 09be7739d5
12 changed files with 255 additions and 16 deletions

View File

@@ -14,6 +14,8 @@ export async function POST(req: Request) {
try {
const { data } = await req.json();
console.log("data >>", data);
const cekUsername = await prisma.user.findUnique({
where: {
username: data.username,
@@ -26,11 +28,20 @@ export async function POST(req: Request) {
message: "Username sudah digunakan",
});
// ✅ Validasi wajib setuju Terms
if (data.termsOfServiceAccepted !== true) {
return NextResponse.json({
success: false,
message: "You must agree to the Terms of Service",
});
}
const createUser = await prisma.user.create({
data: {
username: data.username,
nomor: data.nomor,
active: false,
termsOfServiceAccepted: data.termsOfServiceAccepted,
},
});
@@ -51,7 +62,7 @@ export async function POST(req: Request) {
success: true,
message: "Registrasi Berhasil, Anda Sedang Login",
token: token,
// data: createUser,
// data: createUser,x
},
{ status: 201 }
);
@@ -65,7 +76,5 @@ export async function POST(req: Request) {
},
{ status: 500 }
);
} finally {
await prisma.$disconnect();
}
}

View File

@@ -0,0 +1,29 @@
import { NextResponse } from "next/server";
import prisma from "@/lib/prisma";
export async function POST(req: Request) {
try {
const { data } = await req.json();
console.log("data >>", data);
const updateTermService = await prisma.user.update({
where: {
id: data.id,
},
data: {
termsOfServiceAccepted: data.termsOfServiceAccepted,
},
});
return NextResponse.json({
success: true,
message: "Berhasil",
});
} catch (error) {
console.log("error >>", error);
return NextResponse.json({
success: false,
message: "Gagal",
});
}
}

View File

@@ -24,6 +24,7 @@ export async function POST(req: Request) {
username: true,
active: true,
masterUserRoleId: true,
termsOfServiceAccepted: true,
},
});
@@ -52,6 +53,7 @@ export async function POST(req: Request) {
message: "Berhasil Login",
roleId: dataUser.masterUserRoleId,
active: dataUser.active,
termsOfServiceAccepted: dataUser.termsOfServiceAccepted,
token: token,
},
{ status: 200 }
@@ -76,7 +78,5 @@ export async function POST(req: Request) {
},
{ status: 500 }
);
} finally {
await prisma.$disconnect();
}
}

View File

@@ -60,12 +60,14 @@ async function seederUser() {
username: i.name,
masterUserRoleId: i.masterUserRoleId,
active: i.active,
termsOfServiceAccepted: i.termsOfServiceAccepted,
},
update: {
nomor: i.nomor,
username: i.name,
masterUserRoleId: i.masterUserRoleId,
active: i.active,
termsOfServiceAccepted: i.termsOfServiceAccepted,
},
});
}
@@ -564,10 +566,12 @@ async function masterKategoriApp() {
create: {
id: a.id,
name: a.name,
value: a.value,
},
update: {
id: a.id,
name: a.name,
value: a.value,
},
});
}

View File

@@ -1,30 +1,37 @@
[
{
"id": "1",
"name": "Event"
"name": "Event",
"value": "event"
},
{
"id": "2",
"name": "Job"
"name": "Job",
"value": "job"
},
{
"id": "3",
"name": "Voting"
"name": "Voting",
"value": "voting"
},
{
"id": "4",
"name": "Donasi"
"name": "Donasi",
"value": "donasi"
},
{
"id": "5",
"name": "Investasi"
"name": "Investasi",
"value": "investasi"
},
{
"id": "6",
"name": "Forum"
"name": "Forum",
"value": "forum"
},
{
"id": "7",
"name": "Collaboration"
"name": "Collaboration",
"value": "collaboration"
}
]

View File

@@ -3,12 +3,14 @@
"name": "bagas_admin",
"nomor": "6282340374412",
"masterUserRoleId": "3",
"active": true
"active": true,
"termsOfServiceAccepted": true
},
{
"name": "fahmi_admin",
"nomor": "628123833845",
"masterUserRoleId": "2",
"active": true
"active": true,
"termsOfServiceAccepted": true
}
]

View File

@@ -19,6 +19,7 @@ const CONFIG: MiddlewareConfig = {
publicRoutes: [
"/",
"/.well-known/*",
"/terms-of-service.html",
"/privacy-policy.html",
"/api/helper/*",
"/api/not-user/*",