This guide explains Bemba's role and permission system.
Permissions architecture
Bemba uses fine-grained permissions in the format:
Examples:
registre.menages_view: View households
registre.menages_edit: Edit households
transferts.cycles_create: Create transfers (payment cycles)
Existing permissions are declared in backend/src/Entity/Role.php; their assignment to roles is stored in the database.
Roles
Roles and their permissions are stored in the database (role table) and managed under Settings → Roles. There is no permission set hard-coded per role: what a role can do is what is ticked on screen. The list of role codes in use is in the reference at the end of this page.
Rules enforced by the code:
ROLE_ADMIN gets every permission, whatever boxes are ticked (PermissionVoter).
- A role flagged "system" can be neither deleted nor deactivated, and its code cannot change; its name, description and permissions remain editable.
- Some codes are used by grievance handling:
ROLE_COORDINATEUR_NATIONAL (second escalation level, daily digest), ROLE_COORD_EDUCATION, ROLE_COORD_SANTE and the virtual code ROLE_COORD_COMPOSANTE (first level, coordinator of the grievance's component). Do not rename them.
Permissions and scope: two different things
A permission says what a user can do; partitioning says on which data. A user only sees the households and programmes of their institution and projects. An authorised account attached to no institution and no project sees nothing. Seeing the whole registry is a privilege granted account by account ("National registry access" box on the user form), never a consequence of a role.
See Users for attachments.
Permission modules
| Module | Domain |
|---|
programmes | Programmes, enrolment, donors |
registre | Households, beneficiaries, duplicates, eligibility, imports |
transferts | Transfers (payment cycles), payments, reconciliation, operator accounts |
servicesVBG | GBV support services |
codeConduite | Code of conduct signatures (Kobo) |
plaintes | Grievance redress mechanism, sensitive grievances, per-category access |
kb | Knowledge base |
donnees | GIS map, KoboToolbox, Survey Solutions |
regions, secteurs, localites, ecoles, centres_sante, points_eau, polices | Geographic reference data and infrastructure |
kobo, survey_solutions | Configuration and sync of data collection sources |
reunions | Meetings and attendance sheets |
monitoring | Technical supervision |
suivi_evaluation | AWPB, indicators, risks, missions |
collecte, agences, enqueteurs, campagnes, affectations | Field data collection |
rapports | Reports and exports |
cms, analytics | Public website and visitor statistics |
admin | Users, roles, settings, audit |
Checking permissions
Backend (Symfony Voter)
$this->denyAccessUnlessGranted('registre.menages_edit', $menage);
if ($this->security->isGranted('transferts.cycles_validate')) {
}
Frontend (React)
import { usePermissions } from '../stores/authStore';
function MenageActions({ menage }) {
const { hasPermission } = usePermissions();
return (
<div>
{hasPermission('registre.menages_edit') && (
<Button onClick={() => handleEdit(menage)}>
Edit
</Button>
)}
</div>
);
}
Create a custom role
- Go to Settings > Roles
- Click New role
- Set:
- Code: technical identifier, prefixed with
ROLE_ automatically (e.g. ROLE_POINT_FOCAL_REGION)
- Name: displayed label (e.g.
Regional focal point)
- Description: role description
- Permissions: tick the permissions you need
- Save
Best practices
- Grant only the permissions needed; start with a restrictive role and add permissions.
- Limit the number of administrators.
- Audit permission changes through the audit log.
- Test restrictions on the frontend AND the backend.
- Sensitive grievances (SEA/SH/GBV) require the
plaintes.sensibles_view permission.
Next steps
Reference: technical codes of permissions and roles
The user guide only quotes the labels shown in Settings → Roles. This table maps them to the technical identifiers (module.action) used by the API, the voters and the configuration. Source: backend/src/Entity/Role.php (labels in French, as in the application).
Programmes
| Code | Displayed label |
|---|
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 | Displayed label |
|---|
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 | Displayed label |
|---|
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 | Displayed label |
|---|
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 | Displayed label |
|---|
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 | Displayed label |
|---|
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 | Displayed label |
|---|
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 | Displayed label |
|---|
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 | Displayed label |
|---|
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 | Displayed label |
|---|
donnees.survey | Accès Survey Solutions |
donnees.carte | Accès à la carte SIG |
Référentiel Géographique - Régions
| Code | Displayed label |
|---|
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 | Displayed label |
|---|
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 | Displayed label |
|---|
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 | Displayed label |
|---|
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 | Displayed label |
|---|
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 | Displayed label |
|---|
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 | Displayed label |
|---|
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 | Displayed label |
|---|
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 | Displayed label |
|---|
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 | Displayed label |
|---|
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 | Displayed label |
|---|
monitoring.qualite | Tableau de bord qualité |
monitoring.couverture | Tableau de bord couverture |
monitoring.climat | Tableau de bord climat |
Suivi & Évaluation PTBA
| Code | Displayed label |
|---|
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 | Displayed label |
|---|
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 | Displayed label |
|---|
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 | Displayed label |
|---|
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 | Displayed label |
|---|
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 | Displayed label |
|---|
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 | Displayed label |
|---|
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 | Displayed label |
|---|
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 | Displayed label |
|---|
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 | Displayed label |
|---|
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 |
Roles
Roles are administered in Settings → Roles; the displayed name can be changed there, the code cannot. The virtual code ROLE_COORD_COMPOSANTE, usable in grievance escalation levels, designates the coordinator of the grievance's component (Education, Health or Social protection).
| Code | Displayed name |
|---|
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 |