Gestion des utilisateurs
Sovrium provisionne et gère les utilisateurs sans jamais exiger que vous touchiez à la base de données. Le premier administrateur est créé au démarrage ; chaque utilisateur suivant est créé, listé et géré via l'API d'administration authentifiée. Chaque opération est protégée par RBAC et consignée dans le journal d'audit.
La gestion des utilisateurs n'est disponible que lorsque l'authentification est configurée. Le plugin d'administration s'active dès qu'un bloc auth existe — il n'y a pas d'indicateur distinct.
Amorçage de l'administrateur
Le premier administrateur ne peut pas être créé par un autre administrateur (il n'en existe aucun) ni par auto-inscription (vous ne voulez pas qu'un inconnu s'approprie le siège d'administrateur). Trois chemins complémentaires provisionnent ce compte sur une base de données vierge.
| Chemin | Quand l'utiliser | Mécanisme |
|---|---|---|
| Amorçage par variable env | Déploiements automatisés / IaC | Définissez AUTH_ADMIN_EMAIL + AUTH_ADMIN_PASSWORD (+ AUTH_ADMIN_NAME optionnel) ; l'administrateur est créé au premier démarrage. |
| Jeton à usage unique | Vous ne voulez pas d'identifiants en variables env | Démarrez sans AUTH_ADMIN_EMAIL et sans utilisateur ; un jeton hexadécimal de 64 caractères est affiché dans la bannière de démarrage et réclamé une fois via POST /api/admin/bootstrap/claim. |
| CLI | Provisionnement interactif | sovrium admin create <email> fonctionne sur la base de données configurée (ou le fichier SQLite par défaut) sans app.yaml requis. |
Amorçage par variable d'environnement (sans configuration)
AUTH_ADMIN_EMAIL=admin@example.com
AUTH_ADMIN_PASSWORD=SecureP@ssw0rd!
AUTH_ADMIN_NAME=System Administrator # optional, defaults to "Administrator"Au premier démarrage sur une base vierge, le serveur provisionne l'administrateur avec une adresse vérifiée et l'accès complet aux points de terminaison d'administration. Aux démarrages suivants, ce chemin ne fait rien : il ne crée jamais de doublon et ne modifie jamais un utilisateur existant, même si l'adresse correspond déjà à un rôle différent. Le succès est consigné sans le mot de passe.
| Variable env | Description |
|---|---|
AUTH_ADMIN_EMAIL |
E-mail de l'administrateur d'amorçage. Requis pour le chemin par variable env. Doit être un format d'e-mail valide. |
AUTH_ADMIN_PASSWORD |
Mot de passe initial. Requis pour le chemin par variable env. Doit respecter la longueur minimale (8 caractères). |
AUTH_ADMIN_NAME |
Nom affiché. Optionnel — par défaut Administrator. |
L'amorçage dépend d'un bloc auth configuré. Si auth est absent, ou si AUTH_ADMIN_EMAIL ou AUTH_ADMIN_PASSWORD manque, aucun administrateur n'est créé et le serveur démarre sans. Le chemin par variable env ne fait rien non plus dès qu'un utilisateur existe.
Amorçage par jeton à usage unique
Lorsque le serveur démarre sans AUTH_ADMIN_EMAIL défini et sans utilisateur en base, il génère un jeton aléatoire de 256 bits, l'affiche une fois dans la bannière de démarrage et accepte une seule réclamation :
# Token appears in the banner as:
# → First-admin token (POST /api/admin/bootstrap/claim): <64-hex-token>
curl -X POST http://localhost:3000/api/admin/bootstrap/claim \
-H 'Content-Type: application/json' \
-d '{ "token": "<64-hex-token>", "email": "admin@example.com", "password": "SecureP@ssw0rd!", "name": "Admin" }'- Seul le hachage SHA-256 est conservé ; le texte en clair est affiché sur stdout exactement une fois et n'est jamais consigné.
- Le jeton expire après 1 heure et peut être réclamé une seule fois — les rejeux renvoient
401. - Dès qu'un administrateur existe, la route renvoie 404 : la fenêtre est fermée, et même un jeton valide divulgué ne peut la rouvrir.
C'est le chemin qui rend possible « lancer le binaire sur un serveur vierge, ouvrir l'URL, construire l'application en direct ». Voir Infrastructure de base de données pour la base sans configuration qui l'accompagne.
Création et gestion des utilisateurs
Une fois qu'un administrateur existe, chaque opération du cycle de vie des utilisateurs passe par l'API d'administration. Chaque point de terminaison exige une session d'administrateur authentifiée — les requêtes non authentifiées renvoient 401, et les sessions non administrateur obtiennent 404 : la surface d'administration est invisible pour qui ne peut pas s'en servir, son existence n'est donc pas découvrable.
| Opération | Point de terminaison | Notes |
|---|---|---|
| Créer un utilisateur | POST /api/auth/admin/create-user |
L'ingénieur choisit le mot de passe ; aucun e-mail n'est envoyé. Renvoie 200. |
| Lister les utilisateurs | GET /api/auth/admin/list-users |
Paginé (limit/offset), renvoie des métadonnées de comptage, prend en charge la recherche par e-mail ou nom. |
| Obtenir un utilisateur | GET /api/auth/admin/get-user/:id |
Détail complet incl. rôle, statut de bannissement, indicateur d'e-mail vérifié. 404 pour les identifiants inconnus. |
| Définir le rôle | POST /api/auth/admin/set-role |
Attribue admin / member / viewer (ou tout rôle personnalisé). |
| Définir le mot de passe | POST /api/auth/admin/set-user-password |
Réinitialise le mot de passe d'un utilisateur de manière administrative. |
| Lister les sessions | GET /api/auth/admin/list-user-sessions |
Sessions actives pour un utilisateur. |
| Révoquer une session | POST /api/auth/admin/revoke-user-session |
Force la déconnexion d'une session spécifique. |
| Usurper l'identité | POST /api/auth/admin/impersonate-user |
Démarre/arrête l'usurpation d'identité pour les flux de support. |
La validation est appliquée côté serveur. Create-user renvoie 400 pour un e-mail manquant ou mal formé, un mot de passe manquant, ou un e-mail qui existe déjà. Un rôle attribué doit être un rôle connu de l'application — un admin / member / viewer intégré, un rôle opérateur, ou un nom déclaré dans auth.roles — et tout autre valeur est rejetée avec un 400 énumérant les rôles valides. Un changement de rôle qui retirerait le dernier administrateur capable de se connecter est refusé avec un 409. Voir Rôles & RBAC.
create-user exige que vous inventiez et transmettiez le mot de passe de l'utilisateur, et ne lui envoie rien. Pour accueillir de vraies personnes, utilisez plutôt une invitation.
Attribution de rôle
Déplacé vers Invitations.
Flux d'invitation
Déplacé vers Invitations.
Pages connexes
- Invitations — intégration sans mot de passe et rôle reçu par un nouvel utilisateur.
- Contrôle de l'inscription — si le public peut s'auto-inscrire.
- Rôles & RBAC — modèle de rôle et permissions par champ.
- Sessions — durée de vie des sessions, révocation, multi-appareils.
- Tableau de bord d'administration — console de lecture de niveau opérateur sur les utilisateurs et les tables.
- Surveillance de l'activité — piste d'audit des actions des utilisateurs et des administrateurs.
- Variables d'environnement — référence complète des variables env incl.
AUTH_ADMIN_*.
Dernière mise à jour 11 août 2026
Cette documentation a été rédigée avec de l'IA : des erreurs ou du contenu obsolète sont donc possibles. Sovrium est en bêta. Les contributions et corrections sont les bienvenues.