145 lines
5.1 KiB
Markdown
145 lines
5.1 KiB
Markdown
# Paramètres de l'Application
|
|
|
|
## Vue d'ensemble
|
|
|
|
L'application dispose maintenant d'un système de paramètres global qui permet de configurer le comportement de l'application. Les paramètres sont organisés par catégories pour une meilleure organisation.
|
|
|
|
## Accès aux paramètres
|
|
|
|
1. Connectez-vous à l'interface d'administration
|
|
2. Cliquez sur le bouton "Paramètres" dans la barre d'outils
|
|
3. Vous accédez à la page de configuration des paramètres
|
|
|
|
## Catégories de paramètres
|
|
|
|
### Affichage
|
|
|
|
Cette catégorie contient les paramètres liés à l'affichage de l'interface utilisateur.
|
|
|
|
#### Ordre aléatoire des propositions
|
|
|
|
- **Clé** : `randomize_propositions`
|
|
- **Type** : Booléen (true/false)
|
|
- **Valeur par défaut** : `true`
|
|
- **Description** : Lorsque activé, les propositions sont affichées dans un ordre aléatoire pour chaque participant lors du vote.
|
|
|
|
**Comportement :**
|
|
- **Désactivé (Off)** : Les propositions sont affichées dans l'ordre chronologique de création
|
|
- **Activé (On)** : Les propositions sont mélangées aléatoirement pour chaque participant
|
|
|
|
**Impact :**
|
|
- Ce paramètre affecte uniquement la page de vote (`/campaigns/[id]/vote/[participantId]`)
|
|
- L'ordre aléatoire est appliqué à chaque chargement de la page
|
|
- Chaque participant voit un ordre différent, ce qui peut réduire les biais liés à l'ordre d'affichage
|
|
|
|
### Email
|
|
|
|
Cette catégorie contient les paramètres de configuration SMTP pour l'envoi d'emails automatiques.
|
|
|
|
#### Configuration SMTP
|
|
|
|
- **smtp_host** : Serveur SMTP (ex: smtp.gmail.com)
|
|
- **smtp_port** : Port SMTP (ex: 587 pour TLS, 465 pour SSL)
|
|
- **smtp_username** : Nom d'utilisateur SMTP
|
|
- **smtp_password** : Mot de passe SMTP (chiffré automatiquement)
|
|
- **smtp_secure** : Connexion sécurisée SSL/TLS (booléen)
|
|
- **smtp_from_email** : Adresse email d'expédition
|
|
- **smtp_from_name** : Nom d'expédition
|
|
|
|
**Sécurité :**
|
|
- Le mot de passe SMTP est automatiquement chiffré avec AES-256-GCM avant stockage
|
|
- La clé de chiffrement est dérivée de `SUPABASE_ANON_KEY`
|
|
- Seules les personnes ayant accès à la clé peuvent déchiffrer le mot de passe
|
|
|
|
**Fonctionnalités :**
|
|
- Test de connexion SMTP intégré
|
|
- Envoi d'email de test avec template HTML
|
|
- Validation des paramètres avant sauvegarde
|
|
- Interface avec masquage du mot de passe
|
|
- Sauvegarde automatique avec feedback visuel
|
|
|
|
## Structure technique
|
|
|
|
### Base de données
|
|
|
|
La table `settings` contient les paramètres :
|
|
|
|
```sql
|
|
CREATE TABLE settings (
|
|
id UUID DEFAULT gen_random_uuid() PRIMARY KEY,
|
|
key TEXT NOT NULL UNIQUE,
|
|
value TEXT NOT NULL,
|
|
category TEXT NOT NULL,
|
|
description TEXT,
|
|
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
|
|
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
|
|
);
|
|
```
|
|
|
|
### Services
|
|
|
|
Le service `settingsService` fournit les méthodes suivantes :
|
|
|
|
- `getAll()` : Récupère tous les paramètres
|
|
- `getByCategory(category)` : Récupère les paramètres d'une catégorie
|
|
- `getByKey(key)` : Récupère un paramètre par sa clé
|
|
- `getValue(key, defaultValue)` : Récupère la valeur d'un paramètre
|
|
- `getBooleanValue(key, defaultValue)` : Récupère la valeur booléenne d'un paramètre
|
|
- `setValue(key, value)` : Définit la valeur d'un paramètre
|
|
- `setBooleanValue(key, value)` : Définit la valeur booléenne d'un paramètre
|
|
- `getSmtpSettings()` : Récupère tous les paramètres SMTP
|
|
- `setSmtpSettings(settings)` : Sauvegarde les paramètres SMTP avec chiffrement
|
|
- `testSmtpConnection(settings)` : Teste la connexion SMTP
|
|
- `sendTestEmail(settings, toEmail)` : Envoie un email de test
|
|
|
|
### Chiffrement
|
|
|
|
Le service `encryptionService` fournit les méthodes suivantes :
|
|
|
|
- `encrypt(value)` : Chiffre une valeur avec AES-256-GCM
|
|
- `decrypt(encryptedValue)` : Déchiffre une valeur chiffrée
|
|
- `isEncrypted(value)` : Vérifie si une valeur est chiffrée
|
|
- `mask(value)` : Masque une valeur pour l'affichage
|
|
|
|
### Utilisation dans le code
|
|
|
|
```typescript
|
|
import { settingsService } from '@/lib/services';
|
|
|
|
// Récupérer un paramètre booléen
|
|
const randomizePropositions = await settingsService.getBooleanValue('randomize_propositions', false);
|
|
|
|
// Utiliser le paramètre
|
|
if (randomizePropositions) {
|
|
// Mélanger les propositions
|
|
propositions.sort(() => Math.random() - 0.5);
|
|
}
|
|
|
|
// Récupérer les paramètres SMTP
|
|
const smtpSettings = await settingsService.getSmtpSettings();
|
|
|
|
// Envoyer un email de test
|
|
const result = await settingsService.sendTestEmail(smtpSettings, 'test@exemple.com');
|
|
```
|
|
|
|
## Migration
|
|
|
|
Pour ajouter la table des paramètres à une base de données existante :
|
|
|
|
1. **Paramètres de base** : Exécutez le script SQL dans `migration-settings.sql` dans l'éditeur SQL de Supabase
|
|
2. **Paramètres SMTP** : Exécutez ensuite le script SQL dans `migration-smtp-settings.sql`
|
|
|
|
## Ajout de nouveaux paramètres
|
|
|
|
Pour ajouter un nouveau paramètre :
|
|
|
|
1. Ajoutez l'insertion dans le script de migration
|
|
2. Utilisez le service `settingsService` dans votre code
|
|
3. Mettez à jour cette documentation
|
|
|
|
## Sécurité
|
|
|
|
- Tous les paramètres sont accessibles en lecture publique
|
|
- Seuls les administrateurs peuvent modifier les paramètres via l'interface d'administration
|
|
- Les paramètres sont protégés par l'AuthGuard
|