116 lines
3.6 KiB
Markdown
116 lines
3.6 KiB
Markdown
# Nouvelle Architecture - Installation Simplifiée
|
|
|
|
## 🎯 **Problème résolu**
|
|
|
|
L'ancienne architecture utilisait une table `admin_users` avec des politiques RLS qui créaient une **récursion infinie** lors de la vérification des permissions, rendant l'installation complexe et fragile.
|
|
|
|
## 🚀 **Nouvelle Architecture**
|
|
|
|
### **Table `user_permissions` (remplace `admin_users`)**
|
|
|
|
```sql
|
|
CREATE TABLE user_permissions (
|
|
user_id UUID PRIMARY KEY REFERENCES auth.users(id) ON DELETE CASCADE,
|
|
is_admin BOOLEAN DEFAULT false,
|
|
is_super_admin BOOLEAN DEFAULT false,
|
|
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
|
|
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
|
|
);
|
|
```
|
|
|
|
### **Politiques RLS simplifiées et non-récursives**
|
|
|
|
```sql
|
|
-- Lecture pour tous les utilisateurs connectés
|
|
CREATE POLICY "user_permissions_select" ON user_permissions
|
|
FOR SELECT USING (auth.uid() IS NOT NULL);
|
|
|
|
-- Gestion pour l'utilisateur lui-même
|
|
CREATE POLICY "user_permissions_manage_own" ON user_permissions
|
|
FOR ALL USING (auth.uid() = user_id);
|
|
```
|
|
|
|
## ✅ **Avantages de la nouvelle architecture**
|
|
|
|
### **1. Aucune récursion RLS**
|
|
- Les politiques RLS sont simples et directes
|
|
- Pas de vérification circulaire des permissions
|
|
- Installation robuste et prévisible
|
|
|
|
### **2. Installation simplifiée**
|
|
- Un seul script SQL à exécuter
|
|
- Assistant de configuration automatique
|
|
- Moins d'étapes manuelles
|
|
|
|
### **3. Sécurité maintenue**
|
|
- Vérifications côté serveur via API routes
|
|
- Politiques RLS basiques mais efficaces
|
|
- Contrôle d'accès granulaire
|
|
|
|
### **4. Architecture durable**
|
|
- Facile à comprendre et maintenir
|
|
- Évolutive pour de futures fonctionnalités
|
|
- Compatible avec toutes les instances Supabase
|
|
|
|
## 🔧 **Installation**
|
|
|
|
### **Étape 1 : Créer le projet Supabase**
|
|
1. Créer un projet sur [supabase.com](https://supabase.com)
|
|
2. Récupérer les clés d'API
|
|
|
|
### **Étape 2 : Exécuter le script SQL**
|
|
1. Aller dans l'interface Supabase > SQL Editor
|
|
2. Copier et exécuter le script depuis `database/supabase-schema.sql`
|
|
|
|
### **Étape 3 : Configuration automatique**
|
|
1. Lancer l'application
|
|
2. Suivre l'assistant de configuration sur `/setup`
|
|
3. L'application configure automatiquement tout le reste
|
|
|
|
## 🛡️ **Sécurité**
|
|
|
|
### **Pages protégées**
|
|
- `/setup` et `/debug-auth` sont automatiquement bloquées une fois l'application configurée
|
|
- Middleware de sécurité intégré
|
|
|
|
### **Vérifications de permissions**
|
|
- Côté client : Vérifications basiques pour l'UI
|
|
- Côté serveur : Vérifications complètes via API routes
|
|
- Double sécurité pour les opérations sensibles
|
|
|
|
## 🔄 **Migration depuis l'ancienne architecture**
|
|
|
|
Si vous avez une installation existante :
|
|
|
|
1. **Sauvegarder les données importantes**
|
|
2. **Exécuter le nouveau script SQL** (il supprime et recrée tout)
|
|
3. **Recréer l'administrateur** via l'assistant de configuration
|
|
4. **Reconfigurer les paramètres** si nécessaire
|
|
|
|
## 📋 **Structure des tables**
|
|
|
|
```
|
|
user_permissions (nouvelle)
|
|
├── user_id (FK vers auth.users)
|
|
├── is_admin (boolean)
|
|
├── is_super_admin (boolean)
|
|
└── timestamps
|
|
|
|
campaigns
|
|
├── created_by (FK vers user_permissions.user_id)
|
|
└── ... autres champs
|
|
|
|
propositions, participants, votes, settings
|
|
└── ... structure inchangée
|
|
```
|
|
|
|
## 🎉 **Résultat**
|
|
|
|
- ✅ **Installation en 3 étapes** au lieu de 10+
|
|
- ✅ **Aucun problème de récursion RLS**
|
|
- ✅ **Architecture robuste et durable**
|
|
- ✅ **Sécurité maintenue**
|
|
- ✅ **Facile pour les nouveaux utilisateurs**
|
|
|
|
Cette nouvelle architecture résout définitivement les problèmes d'installation et rend l'application accessible à tous !
|