3.6 KiB
3.6 KiB
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)
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
-- 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
- Créer un projet sur supabase.com
- Récupérer les clés d'API
Étape 2 : Exécuter le script SQL
- Aller dans l'interface Supabase > SQL Editor
- Copier et exécuter le script depuis
database/supabase-schema.sql
Étape 3 : Configuration automatique
- Lancer l'application
- Suivre l'assistant de configuration sur
/setup - L'application configure automatiquement tout le reste
🛡️ Sécurité
Pages protégées
/setupet/debug-authsont 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 :
- Sauvegarder les données importantes
- Exécuter le nouveau script SQL (il supprime et recrée tout)
- Recréer l'administrateur via l'assistant de configuration
- 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 !