"use server"; import { revalidatePath } from "next/cache"; import { auth } from "@/lib/auth"; import { sitePreferencesService } from "@/services/preferences/site-preferences.service"; import { Role } from "@/prisma/generated/prisma/client"; function checkAdminAccess() { return async () => { const session = await auth(); if (!session?.user || session.user.role !== Role.ADMIN) { throw new Error("Accès refusé"); } return session; }; } export async function updateSitePreferences(data: { homeBackground?: string | null; eventsBackground?: string | null; leaderboardBackground?: string | null; }) { try { await checkAdminAccess()(); const preferences = await sitePreferencesService.updateSitePreferences({ homeBackground: data.homeBackground, eventsBackground: data.eventsBackground, leaderboardBackground: data.leaderboardBackground, }); revalidatePath("/admin"); revalidatePath("/"); revalidatePath("/events"); revalidatePath("/leaderboard"); return { success: true, data: preferences }; } catch (error) { console.error("Error updating admin preferences:", error); if (error instanceof Error && error.message === "Accès refusé") { return { success: false, error: "Accès refusé" }; } return { success: false, error: "Erreur lors de la mise à jour des préférences", }; } }