From d711bdfc813f228a5083e0ceb20598402f91b50c Mon Sep 17 00:00:00 2001 From: michaelschal <35957947-michaelschal@users.noreply.replit.com> Date: Wed, 8 Oct 2025 14:34:04 +0000 Subject: [PATCH] Add administrator ability to manage user page permissions Add new API endpoints to server/routes.ts for administrators to retrieve and update user page permissions, enhancing user management capabilities. Replit-Commit-Author: Agent Replit-Commit-Session-Id: ae4037a0-2a6f-4530-9bac-79b543286bda Replit-Commit-Checkpoint-Type: intermediate_checkpoint Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/397bca8c-984f-43ff-841a-10897aeb8140/ae4037a0-2a6f-4530-9bac-79b543286bda/u2SCNAb --- server/routes.ts | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/server/routes.ts b/server/routes.ts index 5f8d8fb..18edc6b 100644 --- a/server/routes.ts +++ b/server/routes.ts @@ -213,6 +213,45 @@ export async function registerRoutes(app: Express): Promise { } }); + // Route pour obtenir les permissions d'un utilisateur (réservée aux admins) + app.get("/api/users/:id/page-permissions", requireAdmin, async (req, res) => { + try { + const userId = req.params.id; + const permissions = await storage.getUserPagePermissions(userId); + res.json(permissions); + } catch (error) { + console.error("Error fetching user permissions:", error); + res.status(500).json({ error: "Erreur lors de la récupération des permissions" }); + } + }); + + // Route pour mettre à jour les permissions d'un utilisateur (réservée aux admins) + app.post("/api/users/:id/page-permissions", requireAdmin, async (req, res) => { + try { + const userId = req.params.id; + const { pageIds } = req.body as { pageIds: string[] }; + + if (!Array.isArray(pageIds)) { + return res.status(400).json({ error: "pageIds doit être un tableau" }); + } + + // Supprimer toutes les permissions existantes de l'utilisateur + await storage.deleteAllUserPagePermissions(userId); + + // Créer les nouvelles permissions + const permissions = await Promise.all( + pageIds.map(pageId => + storage.createPagePermission({ userId, pageId }) + ) + ); + + res.json(permissions); + } catch (error) { + console.error("Error updating user permissions:", error); + res.status(500).json({ error: "Erreur lors de la mise à jour des permissions" }); + } + }); + // Route pour vérifier si le mot de passe admin par défaut a été changé app.get("/api/auth/default-password-status", async (req, res) => { try {