fonctionnalité majeure : setup ultra simplifié (installation/configuration des infos supabase directement du web)
This commit is contained in:
115
docs/NEW-ARCHITECTURE.md
Normal file
115
docs/NEW-ARCHITECTURE.md
Normal file
@@ -0,0 +1,115 @@
|
||||
# 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 !
|
||||
@@ -104,7 +104,6 @@ mes-budgets-participatifs/
|
||||
|
||||
#### `votes`
|
||||
- `id` (UUID) - Identifiant unique
|
||||
- `campaign_id` (UUID) - Référence vers la campagne
|
||||
- `participant_id` (UUID) - Référence vers le participant
|
||||
- `proposition_id` (UUID) - Référence vers la proposition
|
||||
- `amount` (INTEGER) - Montant voté
|
||||
|
||||
Reference in New Issue
Block a user