Guide administrateur — Utilisateurs
Cette fiche décrit la gestion des membres et administrateurs depuis l'écran Membres de l'interface d'administration (/admin/users) : création, modification, suppression (unitaire et en masse), changement de rôle, recherche/filtres, import et export CSV.
Elle ne couvre pas le détail des règles de sécurité (protection du dernier administrateur, verrouillage, journalisation) — voir Configuration — Sécurité.

Accéder à l'écran Membres
Depuis le tableau de bord, menu latéral Membres. L'écran affiche :
- un badge avec le nombre total de membres (compte tenu des filtres appliqués) ;
- une barre d'outils : recherche, filtre par rôle, options de visibilité des colonnes ;
- le tableau des utilisateurs, avec sélection multiple et pagination ;
- les boutons Import CSV, Export et Nouveau membre.
Champs d'un compte utilisateur
| Champ | Obligatoire | Contraintes |
|---|---|---|
| Oui (à la création) | Format email valide, unique ; non modifiable après création | |
| Prénom | Oui | 100 caractères max |
| Nom | Non | 100 caractères max |
| Téléphone | Non | Format +33 6 12 34 56 78 ou équivalent (chiffres, espaces, tirets, 10 à 20 caractères) |
| Profession | Non | 150 caractères max |
| Informations | Non | Notes libres (disponibilités, compétences…), 5000 caractères max |
| Rôle | Oui | Membre ou Administrateur (défaut : Membre) |
Dans le formulaire de création/modification, téléphone, profession et informations sont regroupés sous un panneau repliable Informations complémentaires.
Créer un utilisateur
- Bouton Nouveau membre.
- Renseignez l'email, le prénom (obligatoire), puis les champs optionnels souhaités.
- Choisissez le rôle (Membre par défaut).
- Cochez Envoyer un email d'invitation pour que le membre reçoive un email de bienvenue avec un lien de connexion (case cochée par défaut).
- Créer.
Email déjà utilisé
Si l'email existe déjà en base, la création échoue avec le message « Un utilisateur avec cet email existe déjà ».
Modifier un utilisateur
Depuis le menu d'actions (•••) de la ligne, Modifier. Tous les champs sont éditables à l'exception de l'email, figé après la création. Une case Notifier le membre du changement de rôle par email apparaît uniquement si le rôle sélectionné diffère du rôle actuel ; elle est cochée par défaut et envoie un email informant le membre de sa promotion ou de sa rétrogradation (avec un lien de connexion automatique en cas de promotion vers Administrateur).
Changer le rôle d'un utilisateur
Le changement de rôle (Membre ↔ Administrateur) se fait depuis le formulaire de modification, via le sélecteur Rôle. Deux garde-fous s'appliquent systématiquement, détaillés dans Configuration — Sécurité : impossible de rétrograder le dernier administrateur restant, et une confirmation supplémentaire est demandée si un administrateur modifie son propre rôle vers Membre (auto-démotion) — la boîte de dialogue rappelle que la déconnexion sera immédiate, avec redirection vers l'accueil et perte de l'accès à toutes les pages d'administration.
Rétrograder un administrateur vers Membre invalide automatiquement ses codes de secours existants.
Consulter le détail d'un utilisateur
Détails dans le menu d'actions de la ligne ouvre un panneau avec le profil complet et la liste de ses réservations (créneau, événement, date de réservation).
Supprimer un utilisateur
Depuis le menu d'actions, Supprimer, puis confirmez. Le message de confirmation rappelle que l'opération est irréversible et, si le membre a des réservations, précise leur nombre : elles sont supprimées avec le compte (suppression en cascade).
Deux protections s'appliquent : un administrateur ne peut pas supprimer son propre compte, ni supprimer le dernier administrateur restant (voir Sécurité).
Suppression en masse
- Cochez les lignes à supprimer dans le tableau (la sélection est limitée à la page courante).
- La barre d'actions groupées apparaît en bas de l'écran : bouton Supprimer.
- Une boîte de confirmation rappelle que l'opération est irréversible, que les réservations associées seront aussi supprimées, et que votre propre compte ainsi que le dernier administrateur ne peuvent pas être supprimés et seront ignorés le cas échéant.
- Confirmez.
Le résultat est agrégé dans une notification : nombre de membres supprimés, nombre de réservations supprimées avec eux, et le détail des lignes ignorées par motif (« votre compte », « dernier administrateur », « introuvable(s) »). Si tous les éléments sélectionnés sont ignorés, aucune suppression n'a lieu et le message l'indique explicitement (« Aucune suppression effectuée » ou le détail des motifs).
Limite
Une suppression en masse porte sur 100 identifiants au maximum par requête.
Rechercher, filtrer et paginer
- Recherche : la barre de recherche filtre sur l'email, le prénom et le nom (recherche insensible à la casse). Le caractère
*peut être utilisé comme joker. - Filtre par rôle : « Tous les rôles », « Membres », ou « Administrateurs ».
- Colonnes affichées : Email, Nom (prénom + nom), Rôle, nombre de Réservations, date d'inscription — les deux dernières sont masquées sur petit écran ; leur visibilité est ajustable via le bouton d'options de colonnes.
- Pagination : gérée côté serveur, taille de page ajustable.
Recherche et filtre de rôle sont également pris en compte par l'export CSV lorsqu'ils sont actifs au moment du clic.
Import CSV en masse
Le bouton Import CSV ouvre un sélecteur de fichier. Le flux se déroule en deux temps :
- Analyse (dry-run) : dès le fichier sélectionné, TimePick valide son contenu sans rien écrire en base et affiche un aperçu : nombre de lignes à créer, à mettre à jour, en erreur, sur le total de lignes lues.
- Confirmation : si l'aperçu ne contient aucune erreur, une case Envoyer une invitation par e-mail aux nouveaux membres est proposée (pour les lignes qui seront créées), puis le bouton Confirmer l'import déclenche l'écriture réelle.
S'il y a au moins une ligne en erreur, la liste des lignes fautives s'affiche (numéro de ligne, email, message d'erreur) et la confirmation est bloquée : l'import est tout-ou-rien, aucune ligne n'est écrite tant qu'une erreur subsiste dans le fichier.
Format du fichier
- Délimiteur
;(CSV « Excel FR »), encodage UTF-8 (avec ou sans BOM). - Colonne
emailobligatoire (clé d'identification, insensible à la casse) : son absence dans l'en-tête rend le fichier illisible. - Colonnes optionnelles reconnues :
first_name,last_name,phone,role,profession,informations. Toute colonne absente de l'en-tête n'est pas touchée par l'import (le champ existant côté membre reste inchangé) ; une colonne présente mais vide efface la valeur existante pour les champs facultatifs. rolevautuserouadmin(défautuserà la création si la colonne est absente).
Exemple de fichier minimal (une ligne d'en-tête, une ligne de données) :
email;first_name;last_name;role
marie.dupont@example.org;Marie;Dupont;userLogique d'upsert par email
Pour chaque ligne, TimePick recherche un membre existant par email :
- email inconnu → création (le prénom devient alors obligatoire pour cette ligne) ;
- email déjà présent → mise à jour des seuls champs renseignés dans le fichier.
Contraintes supplémentaires vérifiées ligne par ligne : email dupliqué dans le fichier, longueur des champs texte (mêmes limites que le formulaire), format du téléphone, valeur de rôle valide. Une ligne ne peut pas non plus modifier le rôle de l'administrateur actuellement connecté (protection contre l'auto-modification par import).
Après un import confirmé avec succès, l'invitation optionnelle est envoyée uniquement aux lignes créées (jamais aux mises à jour) ; un échec d'envoi (SMTP indisponible) n'annule pas l'import déjà écrit et est signalé séparément.
Export CSV
Le bouton Export télécharge la liste des utilisateurs actuellement filtrée (recherche et rôle) au format CSV, ré-importable tel quel via Import CSV.
Colonnes exportées, dans cet ordre : email, first_name, last_name, phone, role, profession, informations. Le fichier ne contient ni le nombre de réservations ni la date d'inscription (colonnes dérivées ou gérées par la base, non pertinentes pour un ré-import). Nom de fichier : AAAA-MM-JJ-utilisateurs.csv.
Aller-retour import/export
Comme les en-têtes de l'export correspondent exactement aux colonnes reconnues par l'import, un export peut servir de modèle de départ pour préparer un fichier d'import, ou pour éditer plusieurs comptes en masse dans un tableur avant de les réimporter.