From 47dbe94b02b142ae4d7014195fb59502f96131d5 Mon Sep 17 00:00:00 2001 From: Julien Martin Date: Fri, 28 Nov 2025 16:19:46 +0100 Subject: [PATCH] =?UTF-8?q?feat(bdd):=20ajout=20table=20configuration=20sy?= =?UTF-8?q?st=C3=A8me=20(#4)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ajout de la table configuration pour la gestion dynamique de la configuration on-premise de l'application. Structure : - Table configuration (clé/valeur avec types) - Index sur cle et categorie pour performance - Contrainte UNIQUE sur cle - Référence vers utilisateurs pour traçabilité Données initiales (seed) : - Configuration Email (SMTP) : 8 paramètres - Configuration Application : 4 paramètres - Configuration Sécurité : 4 paramètres Types supportés : - string : chaînes de caractères - number : nombres entiers/décimaux - boolean : true/false - json : objets JSON - encrypted : valeurs chiffrées AES-256 Catégories : - email : Configuration SMTP - app : Paramètres application - security : Paramètres de sécurité Base de données recréée et testée ✅ 16 configurations insérées par défaut ✅ Ref: #4 --- database/BDD.sql | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/database/BDD.sql b/database/BDD.sql index d07905f..920aae3 100644 --- a/database/BDD.sql +++ b/database/BDD.sql @@ -245,3 +245,45 @@ CREATE TABLE validations ( cree_le TIMESTAMPTZ DEFAULT now(), modifie_le TIMESTAMPTZ DEFAULT now() ); + +-- ========================================================== +-- Table : configuration +-- ========================================================== +CREATE TABLE configuration ( + id UUID PRIMARY KEY DEFAULT gen_random_uuid(), + cle VARCHAR(100) UNIQUE NOT NULL, + valeur TEXT, + type VARCHAR(50) NOT NULL, + categorie VARCHAR(50), + description TEXT, + modifie_le TIMESTAMPTZ DEFAULT now(), + modifie_par UUID REFERENCES utilisateurs(id) +); + +-- Index pour performance +CREATE INDEX idx_configuration_cle ON configuration(cle); +CREATE INDEX idx_configuration_categorie ON configuration(categorie); + +-- Seed initial de configuration +INSERT INTO configuration (cle, valeur, type, categorie, description) VALUES +-- === Configuration Email (SMTP) === +('smtp_host', 'localhost', 'string', 'email', 'Serveur SMTP (ex: mail.mairie-bezons.fr, smtp.gmail.com)'), +('smtp_port', '25', 'number', 'email', 'Port SMTP (25, 465, 587)'), +('smtp_secure', 'false', 'boolean', 'email', 'Utiliser SSL/TLS (true pour port 465)'), +('smtp_auth_required', 'false', 'boolean', 'email', 'Authentification SMTP requise'), +('smtp_user', '', 'string', 'email', 'Utilisateur SMTP (si authentification requise)'), +('smtp_password', '', 'encrypted', 'email', 'Mot de passe SMTP (chiffré en AES-256)'), +('email_from_name', 'P''titsPas', 'string', 'email', 'Nom de l''expéditeur affiché dans les emails'), +('email_from_address', 'no-reply@ptits-pas.fr', 'string', 'email', 'Adresse email de l''expéditeur'), + +-- === Configuration Application === +('app_name', 'P''titsPas', 'string', 'app', 'Nom de l''application (affiché dans l''interface)'), +('app_url', 'https://app.ptits-pas.fr', 'string', 'app', 'URL publique de l''application (pour les liens dans emails)'), +('app_logo_url', '/assets/logo.png', 'string', 'app', 'URL du logo de l''application'), +('setup_completed', 'false', 'boolean', 'app', 'Configuration initiale terminée'), + +-- === Configuration Sécurité === +('password_reset_token_expiry_days', '7', 'number', 'security', 'Durée de validité des tokens de création/réinitialisation de mot de passe (en jours)'), +('jwt_expiry_hours', '24', 'number', 'security', 'Durée de validité des sessions JWT (en heures)'), +('max_upload_size_mb', '5', 'number', 'security', 'Taille maximale des fichiers uploadés (en MB)'), +('bcrypt_rounds', '12', 'number', 'security', 'Nombre de rounds bcrypt pour le hachage des mots de passe'); -- 2.47.2