Paramètres in-app
Cette fiche décrit l'écran Paramètres de TimePick : les réglages qui vivent en base de données (table app_config) et se modifient uniquement depuis l'application, jamais dans un fichier. Elle ne couvre ni le pas-à-pas d'installation (voir Variables d'environnement) ni le choix d'un fournisseur SMTP (voir SMTP — Fournisseurs) ni le détail de l'éditeur de modèles d'email ou de l'identité visuelle, traités dans leurs propres fiches.
Où se trouvent ces réglages
Instantané juillet 2026 : la table app_config compte 14 clés au total. Cette fiche couvre les onze clés modifiables depuis les onglets Calendrier, Authentification et Serveur d'email — fréquence de rafraîchissement du calendrier, durées de vie des liens de connexion et des sessions, connexion SMTP. Toutes se modifient à chaud, sans redémarrage du serveur — voir la distinction infrastructure / applicatif dans Variables d'environnement.
L'écran Paramètres est réservé aux administrateurs : un utilisateur non-admin en est redirigé automatiquement, et le serveur applique la même restriction côté API (middleware requireAdmin), indépendamment de ce que montre l'interface. Il comporte quatre onglets — Serveur d'email, Modèle d'email, Calendrier, Authentification. Les onglets de réglage disposent de boutons Réinitialiser (revient aux valeurs actuellement enregistrées en base, pas aux valeurs d'usine) et Sauvegarder ; l'onglet Modèle d'email a ses propres actions, décrites plus bas.
Accès à l'écran
Le menu de l'interface d'administration comporte une entrée Paramètres qui se déplie en quatre liens directs, un par onglet :
| Lien du menu | URL |
|---|---|
| Serveur d'email | /admin/settings?tab=email |
| Modèle d'email | /admin/settings?tab=email-template |
| Calendrier | /admin/settings?tab=calendar |
| Authentification | /admin/settings?tab=auth |
Ces URL peuvent se partager ou se mettre en favori pour ouvrir directement l'onglet voulu.
Serveur d'email
L'onglet Serveur d'email configure la connexion SMTP utilisée pour tous les envois (magic links, invitations, notifications). Il correspond à sept des 14 clés app_config : smtp_host, smtp_port, smtp_secure, smtp_user, smtp_password, smtp_from_name, smtp_from_email.
Champs du formulaire :
| Champ | Clé app_config | Détail |
|---|---|---|
| Hôte SMTP | smtp_host | Nom d'hôte du serveur SMTP |
| Port | smtp_port | Entre 1 et 65535 |
| Connexion SSL directe | smtp_secure | Interrupteur : Activé = SSL/TLS direct (port 465) ; Désactivé = STARTTLS, chiffrement négocié automatiquement (port 587) |
| Nom d'utilisateur | smtp_user | Identifiant SMTP |
| Mot de passe | smtp_password | Masqué par défaut (bouton œil pour l'afficher) ; laisser le champ tel quel pour conserver le mot de passe déjà enregistré |
| Nom de l'expéditeur | smtp_from_name | Défaut : TimePick |
| Email de l'expéditeur | smtp_from_email | Adresse affichée comme expéditeur des emails envoyés |
Un badge en tête de panneau reflète l'état de la configuration : Non configuré, Vérification…, Opérationnel, Non joignable, ou Statut inconnu si la vérification dépasse 15 secondes.
Quatre actions sont disponibles :
- Tester la connexion — envoie un email de test avec les valeurs actuellement saisies dans le formulaire (sans forcément les avoir sauvegardées), et affiche succès ou échec.
- Sauvegarder — enregistre les champs en base ; un hôte laissé vide déclenche la suppression de la configuration.
- Réinitialiser — revient aux dernières valeurs enregistrées.
- Désactiver SMTP — visible uniquement lorsqu'une configuration est enregistrée en base ; supprime la configuration après confirmation, et les emails sont alors désactivés en production jusqu'à l'ajout d'une nouvelle configuration.
À confirmer
Le bouton Tester la connexion et l'ensemble du flux d'envoi ont été vérifiés de bout en bout avec MailHog sur l'instance de référence. Leur comportement avec un fournisseur SMTP externe réel (Gmail, Brevo, OVH…) n'a pas encore été validé avec un vrai compte — voir SMTP — Fournisseurs.
Le mot de passe est chiffré en base (AES, via la variable ENCRYPTION_KEY du serveur) avant stockage — voir Variables d'environnement. Au premier démarrage, si les variables SMTP_* de server/.env sont renseignées, elles provisionnent directement ces sept clés ; ensuite, seul cet onglet fait foi.

Modèle d'email
L'onglet Modèle d'email ne modifie pas de valeur directement : un sélecteur (liste déroulante) donne accès aux huit modèles éditables — Invitation, Connexion, Confirmation, Création de compte, Annulation, Désinscription, Promotion admin, Retour membre. Le panneau du modèle sélectionné décrit son rôle et ses variables, et s'ouvre dans l'éditeur visuel en plein écran via le bouton Personnaliser avec l'éditeur.
Un bouton global Réinitialiser tous les modèles d'emails ramène le design partagé (en-tête, fond, marges) et le contenu des huit modèles à leurs valeurs d'usine ; les événements et l'identité visuelle (logo, couleurs) sont préservés par cette réinitialisation.
Le détail de l'éditeur (blocs, variables, aperçu, mode simplifié vs complet) est traité dans Guide administrateur — Éditeur d'emails. La personnalisation visuelle (logo, couleurs, en-tête partagé) est traitée dans Identité visuelle des emails.

Calendrier
L'onglet Calendrier ne contient qu'un seul réglage : la fréquence de rafraîchissement automatique du calendrier public consulté par les membres (polling_interval, stockée en millisecondes en base — 30000 par défaut, soit 30 secondes).
Le curseur se règle entre 10 et 120 secondes, par pas de 10. La valeur choisie détermine à quel intervalle le navigateur des membres réinterroge le serveur pour rafraîchir l'affichage des créneaux ; les modifications prennent effet immédiatement pour tous les membres déjà connectés au calendrier public, sans qu'ils aient besoin de recharger la page.
Choisir une valeur
Un intervalle court (proche de 10s) rafraîchit le calendrier plus vite mais multiplie les requêtes serveur ; un intervalle long (proche de 120s) réduit la charge mais retarde l'affichage des réservations concurrentes. 30 secondes convient à la majorité des usages associatifs.

Authentification
L'onglet Authentification regroupe deux cartes distinctes, toutes deux dérivées de trois clés app_config stockées en secondes : magic_link_admin_ttl, magic_link_user_ttl, session_ttl. Les valeurs se saisissent dans l'interface en minutes, heures ou jours selon le champ, mais sont toujours converties en secondes avant écriture en base.
Liens de connexion (Magic Links) — durée de validité des liens de connexion envoyés par email :
| Champ | Clé app_config | Bornes | Défaut |
|---|---|---|---|
| Connexion Administrateur | magic_link_admin_ttl | 1 minute — 7 jours | 24 heures |
| Connexion Membre | magic_link_user_ttl | 1 minute — 30 jours | 7 jours |
Sessions — durée de connexion après authentification (indépendante de la durée du lien qui l'a déclenchée) :
| Champ | Clé app_config | Bornes | Défaut |
|---|---|---|---|
| Durée de Session | session_ttl | 5 minutes — 24 heures | 2 heures |
Une modification prend effet immédiatement pour les nouveaux liens ou les nouvelles sessions ; les liens déjà envoyés et les sessions déjà ouvertes conservent leur durée d'origine.
Compromis sécurité / confort
Un TTL admin court réduit la fenêtre d'exploitation d'un lien de connexion administrateur intercepté ou transféré par erreur — c'est le réglage le plus sensible côté sécurité. À l'inverse, un TTL membre plus long évite les reconnexions répétées et laisse le temps à une invitation de circuler avant expiration, au prix d'une fenêtre d'usage plus large en cas de lien égaré. Le principe général : plus un compte a de droits, plus son TTL doit rester court.
À titre indicatif, quelques repères pour choisir une durée :
| Contexte | Repère |
|---|---|
| Administrateur qui se reconnecte souvent depuis un poste habituel | TTL admin court (1 à 4 heures) |
| Administrateur occasionnel, ou lien envoyé pour une intervention ponctuelle | TTL admin proche du défaut (24 heures) |
| Membre invité à un événement dont la date de réponse est encore lointaine | TTL membre long (plusieurs jours), pour ne pas faire expirer l'invitation avant qu'elle soit lue |
| Session ouverte sur un poste partagé ou public | Durée de session courte, quitte à redemander une reconnexion plus souvent |
