Skip to main content

Roles and Permissions

This guide explains Bemba's role and permission system.

Permissions architecture​

Bemba uses fine-grained permissions in the format:

module.action

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​

ModuleDomain
programmesProgrammes, enrolment, donors
registreHouseholds, beneficiaries, duplicates, eligibility, imports
transfertsTransfers (payment cycles), payments, reconciliation, operator accounts
servicesVBGGBV support services
codeConduiteCode of conduct signatures (Kobo)
plaintesGrievance redress mechanism, sensitive grievances, per-category access
kbKnowledge base
donneesGIS map, KoboToolbox, Survey Solutions
regions, secteurs, localites, ecoles, centres_sante, points_eau, policesGeographic reference data and infrastructure
kobo, survey_solutionsConfiguration and sync of data collection sources
reunionsMeetings and attendance sheets
monitoringTechnical supervision
suivi_evaluationAWPB, indicators, risks, missions
collecte, agences, enqueteurs, campagnes, affectationsField data collection
rapportsReports and exports
cms, analyticsPublic website and visitor statistics
adminUsers, roles, settings, audit

Checking permissions​

Backend (Symfony Voter)​

// In a controller
$this->denyAccessUnlessGranted('registre.menages_edit', $menage);

// In a service
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​

  1. Go to Settings > Roles
  2. Click New role
  3. 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
  4. 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​

CodeDisplayed label
programmes.viewConsulter les programmes
programmes.createCréer des programmes
programmes.editModifier les programmes
programmes.deleteSupprimer des programmes
programmes.enrollEnrôler des bénéficiaires
programmes.bailleurs_viewConsulter les bailleurs
programmes.bailleurs_createCréer des bailleurs
programmes.bailleurs_editModifier les bailleurs
programmes.bailleurs_deleteSupprimer des bailleurs

Registre Social​

CodeDisplayed label
registre.menages_viewConsulter les ménages
registre.menages_editModifier les ménages
registre.menages_membresAjouter/modifier les membres du ménage
registre.menages_submitSoumettre les ménages pour validation
registre.menages_validateValider les ménages
registre.menages_rejectRejeter les ménages
registre.menages_deleteSupprimer les ménages
registre.doublons_viewConsulter les doublons
registre.doublons_checkVérifier les doublons
registre.doublons_processTraiter les doublons (ignorer/fusionner)
registre.doublons_analyzeLancer l'analyse des doublons
registre.beneficiaires_viewConsulter les bénéficiaires
registre.beneficiaires_editModifier les bénéficiaires
registre.documentsGérer les documents d'identité
registre.eligibilite_viewConsulter les règles d'éligibilité
registre.eligibilite_createCréer des règles d'éligibilité
registre.eligibilite_editModifier des règles d'éligibilité
registre.eligibilite_deleteSupprimer des règles d'éligibilité
registre.eligibilite_evaluateÉvaluer l'éligibilité
registre.importImporter des ménages
registre.import_templateTélécharger les modèles d'import

Transferts Monétaires​

CodeDisplayed label
transferts.cycles_viewConsulter les cycles
transferts.cycles_createCréer des cycles
transferts.cycles_editModifier les cycles
transferts.cycles_validateValider les cycles
transferts.paiements_viewConsulter les paiements
transferts.paiements_executeExécuter les paiements
transferts.recurrenceGérer la récurrence
transferts.reconciliationRéconcilier les paiements
transferts.comptes_operateurs_viewConsulter les comptes opérateurs
transferts.comptes_operateurs_editGérer les comptes opérateurs
transferts.comptes_operateurs_depotEnregistrer des dépôts
transferts.cycles_documentsGérer les documents des cycles

Services VBG (Violences Basées sur le Genre)​

CodeDisplayed label
servicesVBG.viewConsulter les services et agents VBG
servicesVBG.editModifier les services et agents VBG
servicesVBG.deleteSupprimer des services ou agents VBG
servicesVBG.analyzeAccéder à l'analyse VBG (KoboToolbox)
servicesVBG.importImporter des services/agents depuis KoboToolbox

Code de conduite (signatures collectées via Kobo)​

CodeDisplayed label
codeConduite.viewConsulter les signatures du code de conduite
codeConduite.exportExporter les signatures du code de conduite (CSV, Excel, brut Kobo, pièces jointes)
codeConduite.syncLancer la synchronisation Kobo du code de conduite

Plaintes​

CodeDisplayed label
plaintes.viewConsulter les plaintes
plaintes.createCréer des plaintes
plaintes.processTraiter les plaintes
plaintes.closeClôturer les plaintes
plaintes.assignationsVoir mes assignations
plaintes.sensibles_viewConsulter les plaintes sensibles EAS/HS
plaintes.sensibles_manageGérer les détails des plaintes sensibles EAS/HS

Plaintes par catégorie (accès filtré)​

CodeDisplayed label
plaintes.categorie.allAccès à toutes les catégories de plaintes
plaintes.categorie.protection_socialeAccès aux plaintes Protection Sociale
plaintes.categorie.santeAccès aux plaintes Santé
plaintes.categorie.educationAccès aux plaintes Éducation
plaintes.categorie.autreAccès aux plaintes Autre

Gestion des catégories et types de plaintes (paramétrage)​

CodeDisplayed label
plaintes.types_manageGérer les types de réclamations
plaintes.categories_manageGérer les catégories de réclamations

Base de connaissances​

CodeDisplayed label
kb.viewConsulter la base de connaissances
kb.createCréer des articles
kb.editModifier des articles
kb.deleteSupprimer des articles

Données​

CodeDisplayed label
donnees.surveyAccès Survey Solutions
donnees.carteAccès à la carte SIG

Référentiel Géographique - Régions​

CodeDisplayed label
regions.viewConsulter les régions
regions.createCréer des régions
regions.editModifier les régions
regions.deleteSupprimer des régions

Référentiel Géographique - Secteurs​

CodeDisplayed label
secteurs.viewConsulter les secteurs
secteurs.createCréer des secteurs
secteurs.editModifier les secteurs
secteurs.deleteSupprimer des secteurs

Référentiel Géographique - Localités​

CodeDisplayed label
localites.viewConsulter les localités
localites.createCréer des localités
localites.editModifier les localités
localites.deleteSupprimer des localités

Référentiel Géographique - Écoles​

CodeDisplayed label
ecoles.viewConsulter les écoles
ecoles.createCréer des écoles
ecoles.editModifier les écoles
ecoles.deleteSupprimer des écoles

Référentiel Géographique - Centres de santé​

CodeDisplayed label
centres_sante.viewConsulter les centres de santé
centres_sante.createCréer des centres de santé
centres_sante.editModifier les centres de santé
centres_sante.deleteSupprimer des centres de santé

Référentiel Géographique - Points d'eau​

CodeDisplayed label
points_eau.viewConsulter les points d'eau
points_eau.createCréer des points d'eau
points_eau.editModifier les points d'eau
points_eau.deleteSupprimer des points d'eau

Référentiel Géographique - Polices judiciaires​

CodeDisplayed label
polices.viewConsulter les polices judiciaires
polices.createCréer des polices judiciaires
polices.editModifier les polices judiciaires
polices.deleteSupprimer des polices judiciaires

KoboToolbox​

CodeDisplayed label
kobo.viewConsulter les formulaires Kobo
kobo.syncLancer la synchronisation Kobo
kobo.configureConfigurer les formulaires Kobo

Réunions et Fiches de Présence​

CodeDisplayed label
reunions.viewConsulter les réunions et fiches de présence
reunions.createCréer des réunions
reunions.editModifier les réunions
reunions.deleteSupprimer des réunions
reunions.syncSynchroniser les réunions depuis Kobo
reunions.exportExporter les fiches de présence (PDF/CSV)

Survey Solutions​

CodeDisplayed label
survey_solutions.configConfigurer Survey Solutions
survey_solutions.syncLancer la synchronisation Survey Solutions
survey_solutions.import_menagesImporter les ménages depuis Survey Solutions
survey_solutions.import_plaintesImporter les plaintes depuis Survey Solutions

Monitoring​

CodeDisplayed label
monitoring.qualiteTableau de bord qualité
monitoring.couvertureTableau de bord couverture
monitoring.climatTableau de bord climat

Suivi & Évaluation PTBA​

CodeDisplayed label
suivi_evaluation.viewConsulter le suivi des activités PTBA
suivi_evaluation.editModifier l'avancement des activités PTBA
suivi_evaluation.createCréer des activités PTBA
suivi_evaluation.deleteSupprimer des activités PTBA
suivi_evaluation.manage_structureGérer les composantes et sous-composantes
suivi_evaluation.exportExporter les données PTBA
suivi_evaluation.indicateurs_editGérer le cadre de résultats et saisir les valeurs des indicateurs
suivi_evaluation.indicateurs_validateValider les valeurs des indicateurs
suivi_evaluation.risques_editGérer le registre des risques
suivi_evaluation.missions_editGérer les missions et leurs recommandations

Collecte (ménages collectés)​

CodeDisplayed label
collecte.menages_viewConsulter les ménages collectés
collecte.menages_createCréer des ménages collectés
collecte.menages_editModifier les ménages collectés
collecte.menages_deleteSupprimer des ménages collectés
collecte.validationValider/rejeter les ménages collectés
collecte.integrationIntégrer les ménages au registre
collecte.doublonsGérer les doublons de collecte
collecte.importImporter des données de collecte

Agences de Recensement​

CodeDisplayed label
agences.viewConsulter les agences
agences.createCréer des agences
agences.editModifier les agences
agences.deleteSupprimer des agences
agences.assign_enqueteursAffecter des enquêteurs aux agences

Enquêteurs​

CodeDisplayed label
enqueteurs.viewConsulter les enquêteurs
enqueteurs.createCréer des enquêteurs
enqueteurs.editModifier les enquêteurs
enqueteurs.deleteSupprimer des enquêteurs
enqueteurs.affectationGérer les affectations des enquêteurs
enqueteurs.syncSynchroniser les enquêteurs depuis Kobo

Campagnes de Collecte​

CodeDisplayed label
campagnes.viewConsulter les campagnes
campagnes.createCréer des campagnes
campagnes.editModifier les campagnes
campagnes.deleteSupprimer des campagnes
campagnes.statsVoir les statistiques des campagnes
campagnes.manageGérer le cycle de vie des campagnes

Affectations Campagne (équipes de collecte par zone)​

CodeDisplayed label
affectations.viewConsulter les affectations de campagne
affectations.createCréer des affectations de campagne
affectations.editModifier les affectations de campagne
affectations.deleteSupprimer des affectations de campagne
affectations.manage_equipeGérer les équipes (enquêteurs, contrôleurs, superviseurs)
affectations.statsVoir les statistiques des affectations

Rapports​

CodeDisplayed label
rapports.viewConsulter les rapports
rapports.generateGénérer des rapports
rapports.governmentRapports gouvernementaux
rapports.advancedRapports avancés (analyse, tableaux croisés, etc.)

CMS (Gestion de contenu)​

CodeDisplayed label
cms.viewConsulter les contenus CMS
cms.articles_createCréer des articles/actualités
cms.articles_editModifier les articles/actualités
cms.articles_deleteSupprimer des articles/actualités
cms.pages_createCréer des pages institutionnelles
cms.pages_editModifier les pages institutionnelles
cms.pages_deleteSupprimer des pages institutionnelles
cms.publishPublier/dépublier du contenu
cms.reviewSoumettre le contenu pour revue
cms.manage_categoriesGérer les catégories CMS

Statistiques Visiteurs (Site Public)​

CodeDisplayed label
analytics.visitor_viewConsulter les statistiques de visiteurs
analytics.visitor_exportExporter les données de visiteurs
analytics.goals_viewConsulter les objectifs de conversion
analytics.goals_manageGérer les objectifs de conversion

Administration​

CodeDisplayed label
admin.auditConsulter les logs d'audit
admin.settingsConfigurer les paramètres
admin.usersGérer les utilisateurs
admin.rolesGé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).

CodeDisplayed name
ROLE_ADMINAdministrateur Système
ROLE_COORDINATEUR_NATIONALCoordinateur National
ROLE_COORD_EDUCATIONCoordinateur Éducation
ROLE_COORD_SANTECoordinateur Santé
ROLE_TM_SPECIALISTSpécialiste Transferts Monétaires
ROLE_SS_SPECIALISTSSS (spécialiste sauvegardes sociales)
ROLE_SSESSE (spécialiste sauvegardes environnementales)
ROLE_M&ESpécialiste M&E
ROLE_RAFRAF / Comptable
ROLE_TTL_PSTTL PS
ROLE_COORDINATEURCoordinateur de Projet
ROLE_FIELD_SUPERVISORSuperviseur de Terrain
ROLE_DB_SPECIALISTSpécialiste Base de Données
ROLE_DATA_ENTRYOpérateur de Saisie
ROLE_ONG_FOCALPoint Focal ONG
ROLE_USERUtilisateur