improve security (change RLS, and allow table sensitive access only at server side, with supabase service key)

This commit is contained in:
Yannick Le Duc
2025-08-26 14:51:15 +02:00
parent 4119875f48
commit 0093f4edba
17 changed files with 1240 additions and 285 deletions

View File

@@ -6,8 +6,9 @@ Une application web moderne pour gérer des campagnes de budgets participatifs,
- **Frontend**: Next.js 15 avec TypeScript et App Router
- **UI/UX**: Tailwind CSS 4 + Shadcn/ui + Lucide React
- **Base de données**: PostgreSQL via Supabase
- **Authentification**: Supabase Auth
- **Base de données**: PostgreSQL via Supabase avec RLS sécurisé
- **Authentification**: Supabase Auth avec système de rôles admin/super_admin
- **Sécurité**: Row Level Security (RLS) avec politiques granulaires
- **Email**: Nodemailer avec support SMTP
- **Déploiement**: Compatible Vercel, Netlify, etc.
@@ -20,11 +21,14 @@ Une application web moderne pour gérer des campagnes de budgets participatifs,
- Design responsive avec sections Hero, Features et CTA
- Navigation vers l'espace administration sécurisé
#### 🔐 **Authentification**
- **Connexion sécurisée** : Authentification Supabase avec email/mot de passe
#### 🔐 **Authentification et Sécurité**
- **Système de rôles** : Administrateurs et Super Administrateurs
- **Authentification robuste** : Supabase Auth avec validation côté serveur
- **Politiques RLS sécurisées** : Row Level Security avec permissions granulaires
- **Protection des routes admin** : Toutes les pages d'administration sont protégées
- **Clé de service sécurisée** : Opérations sensibles côté serveur uniquement
- **Session persistante** : Maintien de la connexion entre les pages
- **Interface moderne** : Formulaire de connexion avec Shadcn/ui
- **Interface moderne** : Formulaires de connexion avec validation
#### 🛠️ **Administration complète**
- **Gestion des campagnes** : Création, modification, suppression
@@ -102,12 +106,14 @@ npm install
#### Configurer la base de données
1. Dans votre projet Supabase, allez dans l'éditeur SQL
2. Copiez et exécutez le contenu du fichier `supabase-schema.sql`
2. Copiez et exécutez le contenu du fichier `database/supabase-schema.sql`
#### Configurer l'authentification
1. Dans Supabase Dashboard > Authentication > Settings
2. Activez l'authentification par email
3. Créez un utilisateur admin via l'interface Supabase ou l'API
3. Désactivez "Enable email confirmations" pour les administrateurs
4. Créez les utilisateurs dans Authentication > Users
5. Ajoutez les administrateurs dans la table `admin_users` via l'éditeur SQL
#### Configurer les variables d'environnement
Créez un fichier `.env.local` à la racine du projet :
@@ -115,9 +121,15 @@ Créez un fichier `.env.local` à la racine du projet :
```env
NEXT_PUBLIC_SUPABASE_URL=votre_url_supabase
NEXT_PUBLIC_SUPABASE_ANON_KEY=votre_cle_anon_supabase
SUPABASE_SERVICE_ROLE_KEY=votre_cle_service_supabase
```
### 4. Lancer l'application
### 4. Configuration des administrateurs
1. **Créez les utilisateurs** dans Supabase Dashboard > Authentication > Users
2. **Ajoutez les administrateurs** dans la table `admin_users` via l'éditeur SQL
3. **Connectez-vous** avec les identifiants créés
### 5. Lancer l'application
```bash
npm run dev
```
@@ -168,6 +180,16 @@ L'application sera accessible sur `http://localhost:3000`
- `category`: Catégorie (email, general, etc.)
- `description`: Description de la configuration
## 📚 Documentation
Pour une documentation complète, consultez le dossier [docs/](docs/) :
- **[Guide de démarrage](docs/README.md)** - Vue d'ensemble de la documentation
- **[Configuration](docs/SETUP.md)** - Installation et configuration
- **[Sécurité](docs/SECURITY-SUMMARY.md)** - Résumé de la sécurisation
- **[Paramètres](docs/SETTINGS.md)** - Configuration avancée
## 🎨 Interface utilisateur
### Page d'accueil