Files
mes-budgets-participatifs/docs/ADMIN-MANAGEMENT.md

3.6 KiB

👥 Gestion des Administrateurs - Mes Budgets Participatifs

🔐 Approche Sécurisée

La gestion des utilisateurs et administrateurs se fait uniquement via l'interface Supabase pour une sécurité maximale. L'application ne permet pas la création d'utilisateurs.

📋 Étapes de Configuration

1. Créer un utilisateur dans Supabase

  1. Allez dans votre projet Supabase
  2. Authentication > Users
  3. Cliquez sur "Add user"
  4. Remplissez :
    • Email : admin@example.com
    • Password : Mot de passe sécurisé
    • Email confirm : (cochez pour confirmer l'email)
  5. Cliquez sur "Create user"

2. Ajouter l'utilisateur comme administrateur

  1. Allez dans SQL Editor
  2. Exécutez cette requête pour ajouter un admin :
-- Ajouter un administrateur
INSERT INTO admin_users (id, email, role) 
VALUES (
    'USER_ID_FROM_SUPABASE', 
    'admin@example.com', 
    'admin'
);

-- Ou pour un super administrateur
INSERT INTO admin_users (id, email, role) 
VALUES (
    'USER_ID_FROM_SUPABASE', 
    'admin@example.com', 
    'super_admin'
);

Pour obtenir l'USER_ID :

  • Allez dans Authentication > Users
  • Trouvez votre utilisateur
  • Copiez l'ID (format UUID)

3. Vérifier la configuration

Exécutez cette requête pour vérifier :

SELECT * FROM admin_users;

🔧 Gestion des Rôles

Rôles disponibles :

  • admin : Gestion des campagnes, propositions, participants
  • super_admin : Toutes les permissions admin + gestion des autres administrateurs

Changer le rôle d'un administrateur :

-- Promouvoir en super admin
UPDATE admin_users 
SET role = 'super_admin' 
WHERE email = 'admin@example.com';

-- Rétrograder en admin
UPDATE admin_users 
SET role = 'admin' 
WHERE email = 'admin@example.com';

Supprimer un administrateur :

-- Supprimer de la table admin_users
DELETE FROM admin_users 
WHERE email = 'admin@example.com';

-- Note : L'utilisateur reste dans auth.users
-- Pour le supprimer complètement, allez dans Authentication > Users

🛡️ Sécurité

Avantages de cette approche :

  • Aucune création d'utilisateur depuis l'application
  • Gestion centralisée via Supabase
  • Audit complet des utilisateurs
  • Politiques RLS strictes
  • Pas de clé de service exposée dans l'app

Bonnes pratiques :

  1. Utilisez des mots de passe forts
  2. Limitez le nombre de super admins
  3. Auditez régulièrement la liste des administrateurs
  4. Supprimez les comptes inactifs
  5. Utilisez des emails professionnels

🔍 Vérification

Tester la connexion :

  1. Lancez l'application : npm run dev
  2. Allez sur /admin
  3. Connectez-vous avec les identifiants créés
  4. Vérifiez que vous avez accès aux fonctionnalités

Tester les permissions :

-- Vérifier les admins actuels
SELECT id, email, role, created_at 
FROM admin_users 
ORDER BY created_at DESC;

🚨 Dépannage

Problème : "Accès refusé"

  • Vérifiez que l'utilisateur existe dans auth.users
  • Vérifiez qu'il est bien dans admin_users
  • Vérifiez le rôle (admin ou super_admin)

Problème : "Utilisateur non trouvé"

  • Vérifiez l'email dans auth.users
  • Vérifiez l'ID utilisé dans admin_users

Problème : "Permissions insuffisantes"

  • Vérifiez le rôle dans admin_users
  • Les super admins ont plus de permissions

Note : Cette approche garantit une sécurité maximale en centralisant la gestion des utilisateurs dans Supabase.