Files
mes-budgets-participatifs/docs/NEW-ARCHITECTURE.md

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 !