Spaces:
Sleeping
Sleeping
| import { NextRequest, NextResponse } from "next/server"; | |
| import { db } from "@/lib/db"; | |
| // GET /api/admin/settings — retrieve admin notification settings | |
| export async function GET() { | |
| try { | |
| let settings = await db.adminSettings.findUnique({ | |
| where: { id: "default" }, | |
| }); | |
| if (!settings) { | |
| settings = await db.adminSettings.create({ | |
| data: { id: "default" }, | |
| }); | |
| } | |
| const { smtpPass: _, ...safeSettings } = settings; | |
| return NextResponse.json({ | |
| ...safeSettings, | |
| smtpPass: settings.smtpPass ? "••••••••" : "", | |
| hasSmtpPass: !!settings.smtpPass, | |
| }); | |
| } catch (error) { | |
| console.error("Failed to fetch admin settings:", error); | |
| return NextResponse.json( | |
| { error: "Erreur lors du chargement des paramètres" }, | |
| { status: 500 } | |
| ); | |
| } | |
| } | |
| // PUT /api/admin/settings — update admin notification settings | |
| export async function PUT(request: NextRequest) { | |
| try { | |
| const authHeader = request.headers.get("authorization"); | |
| const token = authHeader?.replace("Bearer ", ""); | |
| const adminPassword = process.env.ADMIN_PASSWORD || "ia-admin-2025"; | |
| if (token !== adminPassword) { | |
| return NextResponse.json({ error: "Non autorisé" }, { status: 401 }); | |
| } | |
| const body = await request.json(); | |
| const { | |
| notifyEmail, smtpHost, smtpPort, smtpUser, smtpPass, | |
| notifyOnCreate, notifyOnUpdate, notifyOnDelete, | |
| } = body; | |
| const existing = await db.adminSettings.findUnique({ where: { id: "default" } }); | |
| const finalSmtpPass = smtpPass === "••••••••" ? (existing?.smtpPass ?? "") : (smtpPass ?? ""); | |
| const settings = await db.adminSettings.upsert({ | |
| where: { id: "default" }, | |
| update: { | |
| ...(notifyEmail !== undefined && { notifyEmail }), | |
| ...(smtpHost !== undefined && { smtpHost }), | |
| ...(smtpPort !== undefined && { smtpPort: Number(smtpPort) || 587 }), | |
| ...(smtpUser !== undefined && { smtpUser }), | |
| ...(smtpPass !== undefined && { smtpPass: finalSmtpPass }), | |
| ...(notifyOnCreate !== undefined && { notifyOnCreate }), | |
| ...(notifyOnUpdate !== undefined && { notifyOnUpdate }), | |
| ...(notifyOnDelete !== undefined && { notifyOnDelete }), | |
| }, | |
| create: { | |
| id: "default", | |
| notifyEmail: notifyEmail ?? "", | |
| smtpHost: smtpHost ?? "", | |
| smtpPort: Number(smtpPort) || 587, | |
| smtpUser: smtpUser ?? "", | |
| smtpPass: finalSmtpPass, | |
| notifyOnCreate: notifyOnCreate ?? true, | |
| notifyOnUpdate: notifyOnUpdate ?? true, | |
| notifyOnDelete: notifyOnDelete ?? true, | |
| }, | |
| }); | |
| const { smtpPass: _, ...safeSettings } = settings; | |
| return NextResponse.json({ | |
| ...safeSettings, | |
| smtpPass: "••••••••", | |
| hasSmtpPass: !!settings.smtpPass, | |
| message: "Paramètres enregistrés avec succès", | |
| }); | |
| } catch (error) { | |
| console.error("Failed to update admin settings:", error); | |
| return NextResponse.json( | |
| { error: "Erreur lors de la mise à jour des paramètres" }, | |
| { status: 500 } | |
| ); | |
| } | |
| } | |