src/app/api/admin/prefs/route.ts

route·app·2.2 KB · 63 lignes· Voir l'itinéraire
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.

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 });
}