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');