Ce guide explique le système de rôles et permissions de Bemba.
Architecture des permissions
Bemba utilise un système de permissions granulaires basé sur le format :
Exemples :
registre.menages_view : Consulter les ménages
registre.menages_edit : Modifier les ménages
transferts.cycles_create : Créer des transferts (cycles de paiement)
Les permissions existantes sont déclarées dans backend/src/Entity/Role.php ; leur attribution aux rôles est en base de données.
Rôles
Les rôles et leurs permissions sont stockés en base de données (table role) et administrés dans Paramètres → Rôles. Il n'existe pas de jeu de permissions figé dans le code : ce qu'un rôle peut faire est ce qui est coché à l'écran. La liste des codes de rôle en service figure dans la référence en fin de page.
Règles fixées par le code :
ROLE_ADMIN obtient toutes les permissions, quelles que soient les cases cochées (PermissionVoter).
- Un rôle marqué « système » ne peut être ni supprimé ni désactivé, et son code ne peut pas changer ; son nom, sa description et ses permissions restent modifiables.
- Certains codes sont utilisés par le traitement des plaintes :
ROLE_COORDINATEUR_NATIONAL (second palier d'escalade, digest quotidien), ROLE_COORD_EDUCATION, ROLE_COORD_SANTE et le code virtuel ROLE_COORD_COMPOSANTE (premier palier, coordinateur de la composante de la plainte). Ne pas les renommer.
Permissions et périmètre : deux choses distinctes
Une permission dit ce que l'utilisateur peut faire ; le cloisonnement dit sur quelles données. Un utilisateur ne voit que les ménages et programmes de son institution et de ses projets. Un compte autorisé mais rattaché à aucune institution ni aucun projet ne voit rien. Voir tout le registre est un privilège accordé compte par compte (case « Accès au registre national » de la fiche utilisateur), jamais une conséquence d'un rôle.
Voir Utilisateurs pour le rattachement.
Modules de permissions
| Module | Domaine |
|---|
programmes | Programmes, enrôlement, bailleurs |
registre | Ménages, bénéficiaires, doublons, éligibilité, imports |
transferts | Transferts (cycles de paiement), paiements, réconciliation, comptes opérateurs |
servicesVBG | Services de prise en charge VBG |
codeConduite | Signatures du code de conduite (Kobo) |
plaintes | Mécanisme de gestion des plaintes, plaintes sensibles, accès par catégorie |
kb | Base de connaissances |
donnees | Carte SIG, KoboToolbox, Survey Solutions |
regions, secteurs, localites, ecoles, centres_sante, points_eau, polices | Référentiel géographique et infrastructures |
kobo, survey_solutions | Configuration et synchronisation des sources de collecte |
reunions | Réunions et fiches de présence |
monitoring | Supervision technique |
suivi_evaluation | PTBA, indicateurs, risques, missions |
collecte, agences, enqueteurs, campagnes, affectations | Collecte de terrain |
rapports | Rapports et exports |
cms, analytics | Site public et statistiques de visite |
admin | Utilisateurs, rôles, paramètres, audit |
Vérification des permissions
Côté Backend (Symfony Voter)
$this->denyAccessUnlessGranted('registre.menages_edit', $menage);
if ($this->security->isGranted('transferts.cycles_validate')) {
}
Côté Frontend (React)
import { usePermissions } from '../stores/authStore';
function MenageActions({ menage }) {
const { hasPermission } = usePermissions();
return (
<div>
{hasPermission('registre.menages_edit') && (
<Button onClick={() => handleEdit(menage)}>
Modifier
</Button>
)}
</div>
);
}
Créer un rôle personnalisé
Via l'interface
- Accédez à Paramètres > Rôles
- Cliquez sur Nouveau rôle
- Définissez :
- Code : Identifiant technique, préfixé
ROLE_ automatiquement (ex: ROLE_POINT_FOCAL_REGION)
- Nom : Libellé affiché (ex:
Point focal régional)
- Description : Description du rôle
- Permissions : Cochez les permissions souhaitées
- Enregistrez
Bonnes pratiques
Principe du moindre privilège
- Attribuer uniquement les permissions nécessaires
- Commencer par un rôle restrictif et ajouter des permissions
- Éviter de donner toutes les permissions sauf pour les administrateurs
Institution des rôles
- Créer des rôles métier clairs
- Documenter les responsabilités de chaque rôle
- Réviser régulièrement les attributions
Sécurité
- Limiter le nombre d'administrateurs
- Auditer les changements de permissions via le journal d'audit
- Tester les restrictions côté frontend ET backend
- Les plaintes sensibles (EAS/HS/VBG) nécessitent la permission
plaintes.sensibles_view
Prochaines étapes
Référence : codes techniques des permissions et des rôles
Le guide utilisateur ne cite que les libellés affichés dans Paramètres → Rôles. Ce tableau donne la correspondance avec les identifiants techniques (module.action) utilisés par l'API, les voters et la configuration. Source : backend/src/Entity/Role.php.
Programmes
| Code | Libellé affiché |
|---|
programmes.view | Consulter les programmes |
programmes.create | Créer des programmes |
programmes.edit | Modifier les programmes |
programmes.delete | Supprimer des programmes |
programmes.enroll | Enrôler des bénéficiaires |
programmes.bailleurs_view | Consulter les bailleurs |
programmes.bailleurs_create | Créer des bailleurs |
programmes.bailleurs_edit | Modifier les bailleurs |
programmes.bailleurs_delete | Supprimer des bailleurs |
Registre Social
| Code | Libellé affiché |
|---|
registre.menages_view | Consulter les ménages |
registre.menages_edit | Modifier les ménages |
registre.menages_membres | Ajouter/modifier les membres du ménage |
registre.menages_submit | Soumettre les ménages pour validation |
registre.menages_validate | Valider les ménages |
registre.menages_reject | Rejeter les ménages |
registre.menages_delete | Supprimer les ménages |
registre.doublons_view | Consulter les doublons |
registre.doublons_check | Vérifier les doublons |
registre.doublons_process | Traiter les doublons (ignorer/fusionner) |
registre.doublons_analyze | Lancer l'analyse des doublons |
registre.beneficiaires_view | Consulter les bénéficiaires |
registre.beneficiaires_edit | Modifier les bénéficiaires |
registre.documents | Gérer les documents d'identité |
registre.eligibilite_view | Consulter les règles d'éligibilité |
registre.eligibilite_create | Créer des règles d'éligibilité |
registre.eligibilite_edit | Modifier des règles d'éligibilité |
registre.eligibilite_delete | Supprimer des règles d'éligibilité |
registre.eligibilite_evaluate | Évaluer l'éligibilité |
registre.import | Importer des ménages |
registre.import_template | Télécharger les modèles d'import |
Transferts Monétaires
| Code | Libellé affiché |
|---|
transferts.cycles_view | Consulter les cycles |
transferts.cycles_create | Créer des cycles |
transferts.cycles_edit | Modifier les cycles |
transferts.cycles_validate | Valider les cycles |
transferts.paiements_view | Consulter les paiements |
transferts.paiements_execute | Exécuter les paiements |
transferts.recurrence | Gérer la récurrence |
transferts.reconciliation | Réconcilier les paiements |
transferts.comptes_operateurs_view | Consulter les comptes opérateurs |
transferts.comptes_operateurs_edit | Gérer les comptes opérateurs |
transferts.comptes_operateurs_depot | Enregistrer des dépôts |
transferts.cycles_documents | Gérer les documents des cycles |
Services VBG (Violences Basées sur le Genre)
| Code | Libellé affiché |
|---|
servicesVBG.view | Consulter les services et agents VBG |
servicesVBG.edit | Modifier les services et agents VBG |
servicesVBG.delete | Supprimer des services ou agents VBG |
servicesVBG.analyze | Accéder à l'analyse VBG (KoboToolbox) |
servicesVBG.import | Importer des services/agents depuis KoboToolbox |
Code de conduite (signatures collectées via Kobo)
| Code | Libellé affiché |
|---|
codeConduite.view | Consulter les signatures du code de conduite |
codeConduite.export | Exporter les signatures du code de conduite (CSV, Excel, brut Kobo, pièces jointes) |
codeConduite.sync | Lancer la synchronisation Kobo du code de conduite |
Plaintes
| Code | Libellé affiché |
|---|
plaintes.view | Consulter les plaintes |
plaintes.create | Créer des plaintes |
plaintes.process | Traiter les plaintes |
plaintes.close | Clôturer les plaintes |
plaintes.assignations | Voir mes assignations |
plaintes.sensibles_view | Consulter les plaintes sensibles EAS/HS |
plaintes.sensibles_manage | Gérer les détails des plaintes sensibles EAS/HS |
Plaintes par catégorie (accès filtré)
| Code | Libellé affiché |
|---|
plaintes.categorie.all | Accès à toutes les catégories de plaintes |
plaintes.categorie.protection_sociale | Accès aux plaintes Protection Sociale |
plaintes.categorie.sante | Accès aux plaintes Santé |
plaintes.categorie.education | Accès aux plaintes Éducation |
plaintes.categorie.autre | Accès aux plaintes Autre |
Gestion des catégories et types de plaintes (paramétrage)
| Code | Libellé affiché |
|---|
plaintes.types_manage | Gérer les types de réclamations |
plaintes.categories_manage | Gérer les catégories de réclamations |
Base de connaissances
| Code | Libellé affiché |
|---|
kb.view | Consulter la base de connaissances |
kb.create | Créer des articles |
kb.edit | Modifier des articles |
kb.delete | Supprimer des articles |
Données
| Code | Libellé affiché |
|---|
donnees.survey | Accès Survey Solutions |
donnees.carte | Accès à la carte SIG |
Référentiel Géographique - Régions
| Code | Libellé affiché |
|---|
regions.view | Consulter les régions |
regions.create | Créer des régions |
regions.edit | Modifier les régions |
regions.delete | Supprimer des régions |
Référentiel Géographique - Secteurs
| Code | Libellé affiché |
|---|
secteurs.view | Consulter les secteurs |
secteurs.create | Créer des secteurs |
secteurs.edit | Modifier les secteurs |
secteurs.delete | Supprimer des secteurs |
Référentiel Géographique - Localités
| Code | Libellé affiché |
|---|
localites.view | Consulter les localités |
localites.create | Créer des localités |
localites.edit | Modifier les localités |
localites.delete | Supprimer des localités |
Référentiel Géographique - Écoles
| Code | Libellé affiché |
|---|
ecoles.view | Consulter les écoles |
ecoles.create | Créer des écoles |
ecoles.edit | Modifier les écoles |
ecoles.delete | Supprimer des écoles |
Référentiel Géographique - Centres de santé
| Code | Libellé affiché |
|---|
centres_sante.view | Consulter les centres de santé |
centres_sante.create | Créer des centres de santé |
centres_sante.edit | Modifier les centres de santé |
centres_sante.delete | Supprimer des centres de santé |
Référentiel Géographique - Points d'eau
| Code | Libellé affiché |
|---|
points_eau.view | Consulter les points d'eau |
points_eau.create | Créer des points d'eau |
points_eau.edit | Modifier les points d'eau |
points_eau.delete | Supprimer des points d'eau |
Référentiel Géographique - Polices judiciaires
| Code | Libellé affiché |
|---|
polices.view | Consulter les polices judiciaires |
polices.create | Créer des polices judiciaires |
polices.edit | Modifier les polices judiciaires |
polices.delete | Supprimer des polices judiciaires |
| Code | Libellé affiché |
|---|
kobo.view | Consulter les formulaires Kobo |
kobo.sync | Lancer la synchronisation Kobo |
kobo.configure | Configurer les formulaires Kobo |
Réunions et Fiches de Présence
| Code | Libellé affiché |
|---|
reunions.view | Consulter les réunions et fiches de présence |
reunions.create | Créer des réunions |
reunions.edit | Modifier les réunions |
reunions.delete | Supprimer des réunions |
reunions.sync | Synchroniser les réunions depuis Kobo |
reunions.export | Exporter les fiches de présence (PDF/CSV) |
Survey Solutions
| Code | Libellé affiché |
|---|
survey_solutions.config | Configurer Survey Solutions |
survey_solutions.sync | Lancer la synchronisation Survey Solutions |
survey_solutions.import_menages | Importer les ménages depuis Survey Solutions |
survey_solutions.import_plaintes | Importer les plaintes depuis Survey Solutions |
Monitoring
| Code | Libellé affiché |
|---|
monitoring.qualite | Tableau de bord qualité |
monitoring.couverture | Tableau de bord couverture |
monitoring.climat | Tableau de bord climat |
Suivi & Évaluation PTBA
| Code | Libellé affiché |
|---|
suivi_evaluation.view | Consulter le suivi des activités PTBA |
suivi_evaluation.edit | Modifier l'avancement des activités PTBA |
suivi_evaluation.create | Créer des activités PTBA |
suivi_evaluation.delete | Supprimer des activités PTBA |
suivi_evaluation.manage_structure | Gérer les composantes et sous-composantes |
suivi_evaluation.export | Exporter les données PTBA |
suivi_evaluation.indicateurs_edit | Gérer le cadre de résultats et saisir les valeurs des indicateurs |
suivi_evaluation.indicateurs_validate | Valider les valeurs des indicateurs |
suivi_evaluation.risques_edit | Gérer le registre des risques |
suivi_evaluation.missions_edit | Gérer les missions et leurs recommandations |
Collecte (ménages collectés)
| Code | Libellé affiché |
|---|
collecte.menages_view | Consulter les ménages collectés |
collecte.menages_create | Créer des ménages collectés |
collecte.menages_edit | Modifier les ménages collectés |
collecte.menages_delete | Supprimer des ménages collectés |
collecte.validation | Valider/rejeter les ménages collectés |
collecte.integration | Intégrer les ménages au registre |
collecte.doublons | Gérer les doublons de collecte |
collecte.import | Importer des données de collecte |
Agences de Recensement
| Code | Libellé affiché |
|---|
agences.view | Consulter les agences |
agences.create | Créer des agences |
agences.edit | Modifier les agences |
agences.delete | Supprimer des agences |
agences.assign_enqueteurs | Affecter des enquêteurs aux agences |
Enquêteurs
| Code | Libellé affiché |
|---|
enqueteurs.view | Consulter les enquêteurs |
enqueteurs.create | Créer des enquêteurs |
enqueteurs.edit | Modifier les enquêteurs |
enqueteurs.delete | Supprimer des enquêteurs |
enqueteurs.affectation | Gérer les affectations des enquêteurs |
enqueteurs.sync | Synchroniser les enquêteurs depuis Kobo |
Campagnes de Collecte
| Code | Libellé affiché |
|---|
campagnes.view | Consulter les campagnes |
campagnes.create | Créer des campagnes |
campagnes.edit | Modifier les campagnes |
campagnes.delete | Supprimer des campagnes |
campagnes.stats | Voir les statistiques des campagnes |
campagnes.manage | Gérer le cycle de vie des campagnes |
Affectations Campagne (équipes de collecte par zone)
| Code | Libellé affiché |
|---|
affectations.view | Consulter les affectations de campagne |
affectations.create | Créer des affectations de campagne |
affectations.edit | Modifier les affectations de campagne |
affectations.delete | Supprimer des affectations de campagne |
affectations.manage_equipe | Gérer les équipes (enquêteurs, contrôleurs, superviseurs) |
affectations.stats | Voir les statistiques des affectations |
Rapports
| Code | Libellé affiché |
|---|
rapports.view | Consulter les rapports |
rapports.generate | Générer des rapports |
rapports.government | Rapports gouvernementaux |
rapports.advanced | Rapports avancés (analyse, tableaux croisés, etc.) |
CMS (Gestion de contenu)
| Code | Libellé affiché |
|---|
cms.view | Consulter les contenus CMS |
cms.articles_create | Créer des articles/actualités |
cms.articles_edit | Modifier les articles/actualités |
cms.articles_delete | Supprimer des articles/actualités |
cms.pages_create | Créer des pages institutionnelles |
cms.pages_edit | Modifier les pages institutionnelles |
cms.pages_delete | Supprimer des pages institutionnelles |
cms.publish | Publier/dépublier du contenu |
cms.review | Soumettre le contenu pour revue |
cms.manage_categories | Gérer les catégories CMS |
Statistiques Visiteurs (Site Public)
| Code | Libellé affiché |
|---|
analytics.visitor_view | Consulter les statistiques de visiteurs |
analytics.visitor_export | Exporter les données de visiteurs |
analytics.goals_view | Consulter les objectifs de conversion |
analytics.goals_manage | Gérer les objectifs de conversion |
Administration
| Code | Libellé affiché |
|---|
admin.audit | Consulter les logs d'audit |
admin.settings | Configurer les paramètres |
admin.users | Gérer les utilisateurs |
admin.roles | Gérer les rôles |
Rôles
Les rôles sont administrés dans Paramètres → Rôles ; le nom affiché peut y être modifié, le code ne change pas. Le code virtuel ROLE_COORD_COMPOSANTE, utilisable dans les niveaux d'escalade des plaintes, désigne le coordinateur de la composante de la plainte (Éducation, Santé ou Protection sociale).
| Code | Nom affiché |
|---|
ROLE_ADMIN | Administrateur Système |
ROLE_COORDINATEUR_NATIONAL | Coordinateur National |
ROLE_COORD_EDUCATION | Coordinateur Éducation |
ROLE_COORD_SANTE | Coordinateur Santé |
ROLE_TM_SPECIALIST | Spécialiste Transferts Monétaires |
ROLE_SS_SPECIALIST | SSS (spécialiste sauvegardes sociales) |
ROLE_SSE | SSE (spécialiste sauvegardes environnementales) |
ROLE_M&E | Spécialiste M&E |
ROLE_RAF | RAF / Comptable |
ROLE_TTL_PS | TTL PS |
ROLE_COORDINATEUR | Coordinateur de Projet |
ROLE_FIELD_SUPERVISOR | Superviseur de Terrain |
ROLE_DB_SPECIALIST | Spécialiste Base de Données |
ROLE_DATA_ENTRY | Opérateur de Saisie |
ROLE_ONG_FOCAL | Point Focal ONG |
ROLE_USER | Utilisateur |