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

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

  1. Créer un projet sur 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 !