src/app/api/admin/prefs/route.ts
Annotation non disponible
Lance npm run annotate (nécessite ANTHROPIC_API_KEY dans .env.local) pour générer une annotation française par Claude Haiku 4.5.
Concepts détectés — comprends la théorie
ORM Prisma
4 occurrencesCe fichier accède à la base de données via Prisma. Prisma est l'ORM utilisé côté backend pour les requêtes typées sur PostgreSQL.
Voir l'article général
Route API Next.js
3 occurrencesCe fichier est une route API Next.js (App Router). Voir le contrat API complet pour les conventions de réponse et d'auth.
Voir l'article général
2 exports
GETPUT
Code source· typescript
import { NextResponse } from "next/server";
import { getSession } from "@/lib/auth/session";
import { prisma } from "@/lib/prisma/client";
const RACCOURCIS_DEFAUT_PAR_MODULE: Record<string, string[]> = {
catalogue: ["dashboard", "catalogue", "commandes", "clientes"],
services: ["dashboard", "services", "commandes", "clientes"],
galerie: ["dashboard", "medias", "commandes", "clientes"],
};
function getRaccourcisDefaut(modulesActifs: string[]): string[] {
for (const mod of ["catalogue", "services", "galerie"]) {
if (modulesActifs.includes(mod)) return RACCOURCIS_DEFAUT_PAR_MODULE[mod];
}
return ["dashboard", "commandes", "clientes", "parametres"];
}
export async function GET() {
const session = await getSession();
if (!session || session.role !== "TENANT_ADMIN" || !session.tenantId) {
return NextResponse.json({ error: "Non autorisé" }, { status: 401 });
}
const prefs = await prisma.adminPrefs.findUnique({
where: { tenantId: session.tenantId },
});
if (!prefs) {
// Pas encore de prefs — calculer les défauts selon modules actifs
const modules = await prisma.tenantModule.findMany({
where: { tenantId: session.tenantId, actif: true },
select: { nom: true },
});
const modulesActifs = modules.map((m) => m.nom);
const raccourcis = getRaccourcisDefaut(modulesActifs);
return NextResponse.json({ raccourcis });
}
return NextResponse.json({ raccourcis: prefs.raccourcis });
}
export async function PUT(req: Request) {
const session = await getSession();
if (!session || session.role !== "TENANT_ADMIN" || !session.tenantId) {
return NextResponse.json({ error: "Non autorisé" }, { status: 401 });
}
const body = await req.json();
const raccourcis = body.raccourcis;
if (!Array.isArray(raccourcis) || raccourcis.length < 1 || raccourcis.length > 5) {
return NextResponse.json({ error: "Entre 1 et 5 raccourcis" }, { status: 400 });
}
const prefs = await prisma.adminPrefs.upsert({
where: { tenantId: session.tenantId },
update: { raccourcis },
create: { tenantId: session.tenantId, raccourcis },
});
return NextResponse.json({ success: true, raccourcis: prefs.raccourcis });
}
import { NextResponse } from "next/server";
import { getSession } from "@/lib/auth/session";
import { prisma } from "@/lib/prisma/client";
const RACCOURCIS_DEFAUT_PAR_MODULE: Record<string, string[]> = {
catalogue: ["dashboard", "catalogue", "commandes", "clientes"],
services: ["dashboard", "services", "commandes", "clientes"],
galerie: ["dashboard", "medias", "commandes", "clientes"],
};
function getRaccourcisDefaut(modulesActifs: string[]): string[] {
for (const mod of ["catalogue", "services", "galerie"]) {
if (modulesActifs.includes(mod)) return RACCOURCIS_DEFAUT_PAR_MODULE[mod];
}
return ["dashboard", "commandes", "clientes", "parametres"];
}
export async function GET() {
const session = await getSession();
if (!session || session.role !== "TENANT_ADMIN" || !session.tenantId) {
return NextResponse.json({ error: "Non autorisé" }, { status: 401 });
}
const prefs = await prisma.adminPrefs.findUnique({
where: { tenantId: session.tenantId },
});
if (!prefs) {
// Pas encore de prefs — calculer les défauts selon modules actifs
const modules = await prisma.tenantModule.findMany({
where: { tenantId: session.tenantId, actif: true },
select: { nom: true },
});
const modulesActifs = modules.map((m) => m.nom);
const raccourcis = getRaccourcisDefaut(modulesActifs);
return NextResponse.json({ raccourcis });
}
return NextResponse.json({ raccourcis: prefs.raccourcis });
}
export async function PUT(req: Request) {
const session = await getSession();
if (!session || session.role !== "TENANT_ADMIN" || !session.tenantId) {
return NextResponse.json({ error: "Non autorisé" }, { status: 401 });
}
const body = await req.json();
const raccourcis = body.raccourcis;
if (!Array.isArray(raccourcis) || raccourcis.length < 1 || raccourcis.length > 5) {
return NextResponse.json({ error: "Entre 1 et 5 raccourcis" }, { status: 400 });
}
const prefs = await prisma.adminPrefs.upsert({
where: { tenantId: session.tenantId },
update: { raccourcis },
create: { tenantId: session.tenantId, raccourcis },
});
return NextResponse.json({ success: true, raccourcis: prefs.raccourcis });
}