From c70da5136f03f977a0fe84e68d5d391f3d09bf06 Mon Sep 17 00:00:00 2001 From: michaelschal <35957947-michaelschal@users.noreply.replit.com> Date: Wed, 8 Oct 2025 14:36:27 +0000 Subject: [PATCH] Add an admin-only endpoint to migrate existing user page permissions Introduced a new POST endpoint `/api/admin/migrate-permissions` to iterate through all users and their associated social pages, creating new page permissions for any missing entries. This ensures proper access control is established for existing data. 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 | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/server/routes.ts b/server/routes.ts index 69c74bd..1e18e45 100644 --- a/server/routes.ts +++ b/server/routes.ts @@ -252,6 +252,41 @@ export async function registerRoutes(app: Express): Promise { } }); + // Route pour migrer les permissions existantes (réservée aux admins) + app.post("/api/admin/migrate-permissions", requireAdmin, async (req, res) => { + try { + // Récupérer tous les utilisateurs + const allUsers = await storage.getAllUsers(); + let migratedCount = 0; + + for (const user of allUsers) { + // Récupérer toutes les pages créées par cet utilisateur + const userPages = await storage.getSocialPages(user.id); + + for (const page of userPages) { + // Vérifier si une permission existe déjà + const existingPermissions = await storage.getUserPagePermissions(user.id); + const hasPermission = existingPermissions.some(p => p.pageId === page.id); + + if (!hasPermission) { + // Créer la permission + await storage.createPagePermission({ userId: user.id, pageId: page.id }); + migratedCount++; + } + } + } + + res.json({ + success: true, + message: `${migratedCount} permissions migrées avec succès`, + migratedCount + }); + } catch (error) { + console.error("Error migrating permissions:", error); + res.status(500).json({ error: "Erreur lors de la migration 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 {