Détail et modification d'un utilisateur
Récupérer un utilisateur
Endpoint
GET /api/users/{id}
Réponse
{
"success": true,
"data": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"email": "john.doe@example.com",
"nom": "Doe",
"prenom": "John",
"telephone": "+245955123456",
"role": {
"id": "550e8400-e29b-41d4-a716-446655440001",
"nom": "Spécialiste TM",
"code": "ROLE_TM_SPECIALIST",
"permissions": ["transferts.cycles_view", "transferts.paiements_view"]
},
"isActive": true,
"twoFactorEnabled": false,
"lastLoginAt": "2025-03-15T10:30:00+00:00",
"failedLoginAttempts": 0,
"regions": [
{
"id": "550e8400-e29b-41d4-a716-446655440002",
"nom": "Oio",
"code": "OIO"
}
],
"createdAt": "2025-01-01T00:00:00+00:00",
"updatedAt": "2025-03-15T10:30:00+00:00"
}
}
Modifier un utilisateur
Endpoint
PUT /api/users/{id}
ou
PATCH /api/users/{id}
Corps de la requête
{
"nom": "Doe",
"prenom": "John Updated",
"telephone": "+245955123457",
"role_id": "550e8400-e29b-41d4-a716-446655440003",
"regions": ["550e8400-e29b-41d4-a716-446655440002", "550e8400-e29b-41d4-a716-446655440004"]
}
Paramètres modifiables
| Paramètre | Type | Description |
|---|---|---|
nom | string | Nom de famille |
prenom | string | Prénom |
telephone | string | Numéro de téléphone |
role_id | UUID | ID du nouveau rôle |
regions | array | IDs des régions affectées |
L'email ne peut pas être modifié après création. Pour changer l'email, créer un nouveau compte.
Supprimer un utilisateur
Endpoint
DELETE /api/users/{id}
Réponse
{
"success": true,
"message": "Utilisateur supprimé"
}
La suppression est définitive. Préférez désactiver l'utilisateur pour conserver l'historique.
Activer/Désactiver un utilisateur
Endpoint
POST /api/users/{id}/toggle-status
Réponse
{
"success": true,
"message": "Utilisateur désactivé",
"data": {
"isActive": false
}
}
Débloquer un compte
Endpoint
POST /api/users/{id}/unlock
Réservé à ROLE_DB_SPECIALIST. Remet à zéro les tentatives de connexion échouées et lève le verrouillage.
Réponse
{
"success": true,
"message": "Compte débloqué et tentatives réinitialisées",
"data": { "wasLocked": true, "previousFailedAttempts": 5 }
}
Mot de passe
L'API ne permet pas à un administrateur de choisir le mot de passe d'un autre utilisateur.
| Endpoint | Description |
|---|---|
POST /api/auth/forgot-password | {"email": "…"} : envoie un lien de réinitialisation par e-mail |
GET /api/auth/verify-reset-token/{token} | Vérifie le lien |
POST /api/auth/reset-password | Pose le nouveau mot de passe avec le jeton reçu |
POST /api/profile/change-password | L'utilisateur connecté change son propre mot de passe |
En dernier recours, un administrateur serveur utilise la commande app:reset-user-password.
Obtenir les permissions effectives
Retourne toutes les permissions dont dispose un utilisateur (via son rôle).
Endpoint
GET /api/users/{id}/permissions
Réponse
{
"success": true,
"data": {
"role": "ROLE_TM_SPECIALIST",
"permissions": [
"transferts.cycles_view",
"transferts.cycles_create",
"transferts.paiements_view",
"transferts.paiements_export",
"registre.menages_view",
"registre.beneficiaires_view"
]
}
}
Réservé à ROLE_DB_SPECIALIST. Les permissions viennent uniquement du rôle : PUT/PATCH /api/users/{id}/permissions répond toujours 403 en indiquant le rôle à modifier, et POST /api/users/{id}/permissions/reset supprime d'anciennes permissions personnalisées héritées de la version précédente.