Gestion des rôles
Lister les rôles
Endpoint
GET /api/roles
Paramètres de requête
| Paramètre | Type | Requis | Description |
|---|---|---|---|
isActive | boolean | Non | Filtrer par statut actif |
search | string | Non | Recherche par nom ou code |
Réponse
{
"success": true,
"data": [
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"nom": "Administrateur",
"code": "ROLE_ADMIN",
"description": "Accès complet au système",
"isActive": true,
"isSystem": true,
"usersCount": 3,
"permissionsCount": 50
},
{
"id": "550e8400-e29b-41d4-a716-446655440001",
"nom": "Spécialiste TM",
"code": "ROLE_TM_SPECIALIST",
"description": "Gestion des transferts monétaires",
"isActive": true,
"isSystem": false,
"usersCount": 12,
"permissionsCount": 15
}
]
}
Créer un rôle
Endpoint
POST /api/roles
Corps de la requête
{
"nom": "Agent de terrain",
"code": "ROLE_FIELD_AGENT",
"description": "Collecte de données sur le terrain",
"permissions": [
"registre.menages_view",
"registre.menages_create",
"registre.beneficiaires_view",
"geo.localites_view"
]
}
Paramètres
| Paramètre | Type | Requis | Description |
|---|---|---|---|
nom | string | Oui | Nom du rôle (affiché) |
code | string | Oui | Code unique (ROLE_XXX) |
description | string | Non | Description du rôle |
permissions | array | Non | Liste des permissions |
Réponse
{
"success": true,
"message": "Rôle créé avec succès",
"data": {
"id": "550e8400-e29b-41d4-a716-446655440010",
"code": "ROLE_FIELD_AGENT"
}
}
Modifier un rôle
Endpoint
PUT /api/roles/{id}
Réservé à ROLE_ADMIN. Tous les champs sont optionnels : code, nom, description, permissions, niveau, couleur, isActive. Le niveau et l'activation d'un rôle système ne sont pas modifiables.
Corps de la requête
{
"permissions": [
"registre.menages_view",
"registre.menages_create",
"registre.menages_edit",
"registre.beneficiaires_view"
]
}
permissions remplace la liste entière.
Réponse
{
"success": true,
"message": "Rôle mis à jour avec succès",
"data": {
"id": "…",
"code": "AGENT_REGISTRE",
"nom": "Agent registre",
"permissions": ["registre.menages_view", "…"]
}
}
POST /api/roles/{id}/duplicate crée une copie d'un rôle existant.
Supprimer un rôle
Endpoint
DELETE /api/roles/{id}
Contraintes
- Les rôles système (
isSystem: true) ne peuvent pas être supprimés - Un rôle avec des utilisateurs assignés ne peut pas être supprimé
Réponse en cas d'erreur
{
"success": false,
"message": "Impossible de supprimer ce rôle: 12 utilisateurs y sont assignés"
}
Liste des permissions disponibles
Endpoint
GET /api/roles/permissions/available
Réservé à ROLE_ADMIN.
Réponse
{
"success": true,
"data": {
"permissions": {
"registre.menages_view": "Voir les ménages",
"registre.menages_edit": "Modifier des ménages",
"transferts.cycles_view": "Voir les transferts"
},
"byModule": {
"registre": {
"registre.menages_view": "Voir les ménages",
"registre.menages_edit": "Modifier des ménages"
},
"transferts": {
"transferts.cycles_view": "Voir les transferts"
}
}
}
}
Les codes suivent le format module.action. Les permissions effectives de l'utilisateur connecté se lisent avec GET /api/me/permissions.