Files
2025-09-16 13:41:32 +02:00

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

  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 :

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

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