5.1 KiB
5.1 KiB
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
- Connectez-vous à l'interface d'administration
- Cliquez sur le bouton "Paramètres" dans la barre d'outils
- 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
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 :
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ètresgetByCategory(category): Récupère les paramètres d'une catégoriegetByKey(key): Récupère un paramètre par sa clégetValue(key, defaultValue): Récupère la valeur d'un paramètregetBooleanValue(key, defaultValue): Récupère la valeur booléenne d'un paramètresetValue(key, value): Définit la valeur d'un paramètresetBooleanValue(key, value): Définit la valeur booléenne d'un paramètregetSmtpSettings(): Récupère tous les paramètres SMTPsetSmtpSettings(settings): Sauvegarde les paramètres SMTP avec chiffrementtestSmtpConnection(settings): Teste la connexion SMTPsendTestEmail(settings, toEmail): Envoie un email de test
Chiffrement
Le service encryptionService fournit les méthodes suivantes :
encrypt(value): Chiffre une valeur avec AES-256-GCMdecrypt(encryptedValue): Déchiffre une valeur chiffréeisEncrypted(value): Vérifie si une valeur est chiffréemask(value): Masque une valeur pour l'affichage
Utilisation dans le code
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 :
- Paramètres de base : Exécutez le script SQL dans
migration-settings.sqldans l'éditeur SQL de Supabase - 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 :
- Ajoutez l'insertion dans le script de migration
- Utilisez le service
settingsServicedans votre code - 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