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

142 lines
3.6 KiB
Markdown

# 👥 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 :
```sql
-- 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 :
```sql
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 :**
```sql
-- 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 :**
```sql
-- 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 :**
```sql
-- 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.