feat(admin): add admin panel with user management, daily puzzle CRUD, and activity graph

- Add admin page at /admin (restricted to ADMIN_EMAIL via proxy)
- Implement user ban/unban and deletion
- Add daily puzzle creation, modification, deletion
- Include 14-day activity chart with hover details
- Add User.banned field to schema and migrate database
- Block banned users from logging in
- Add ADMIN_EMAIL to .env.local configuration
- Update Prisma client after schema changes
This commit is contained in:
jessy-david-dev
2026-04-11 15:10:08 +02:00
parent 5d8f7eae45
commit 8ff64b3470
22 changed files with 899 additions and 122 deletions
+19
View File
@@ -0,0 +1,19 @@
import { NextResponse } from "next/server";
import { prisma } from "../../../../../lib/prisma";
type Params = { params: Promise<{ id: string }> };
// DELETE /api/admin/users/[id] — supprimer un utilisateur
export async function DELETE(_req: Request, { params }: Params) {
const { id } = await params;
await prisma.user.delete({ where: { id } });
return NextResponse.json({ ok: true });
}
// PATCH /api/admin/users/[id] — ban/unban
export async function PATCH(req: Request, { params }: Params) {
const { id } = await params;
const { banned } = await req.json() as { banned: boolean };
const user = await prisma.user.update({ where: { id }, data: { banned } });
return NextResponse.json({ id: user.id, banned: user.banned });
}