Aller au contenu principal

Rôles et Permissions

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 :

module.action

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​

ModuleDomaine
programmesProgrammes, enrôlement, bailleurs
registreMénages, bénéficiaires, doublons, éligibilité, imports
transfertsTransferts (cycles de paiement), paiements, réconciliation, comptes opérateurs
servicesVBGServices de prise en charge VBG
codeConduiteSignatures du code de conduite (Kobo)
plaintesMécanisme de gestion des plaintes, plaintes sensibles, accès par catégorie
kbBase de connaissances
donneesCarte SIG, KoboToolbox, Survey Solutions
regions, secteurs, localites, ecoles, centres_sante, points_eau, policesRéférentiel géographique et infrastructures
kobo, survey_solutionsConfiguration et synchronisation des sources de collecte
reunionsRéunions et fiches de présence
monitoringSupervision technique
suivi_evaluationPTBA, indicateurs, risques, missions
collecte, agences, enqueteurs, campagnes, affectationsCollecte de terrain
rapportsRapports et exports
cms, analyticsSite public et statistiques de visite
adminUtilisateurs, rôles, paramètres, audit

Vérification des permissions​

Côté Backend (Symfony Voter)​

// Dans un contrôleur
$this->denyAccessUnlessGranted('registre.menages_edit', $menage);

// Dans un service
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​

  1. Accédez à Paramètres > Rôles
  2. Cliquez sur Nouveau rôle
  3. 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
  4. 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​

CodeLibellé affiché
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​

CodeLibellé affiché
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​

CodeLibellé affiché
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)​

CodeLibellé affiché
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)​

CodeLibellé affiché
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​

CodeLibellé affiché
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é)​

CodeLibellé affiché
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)​

CodeLibellé affiché
plaintes.types_manageGérer les types de réclamations
plaintes.categories_manageGérer les catégories de réclamations

Base de connaissances​

CodeLibellé affiché
kb.viewConsulter la base de connaissances
kb.createCréer des articles
kb.editModifier des articles
kb.deleteSupprimer des articles

Données​

CodeLibellé affiché
donnees.surveyAccès Survey Solutions
donnees.carteAccès à la carte SIG

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

CodeLibellé affiché
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​

CodeLibellé affiché
secteurs.viewConsulter les secteurs
secteurs.createCréer des secteurs
secteurs.editModifier les secteurs
secteurs.deleteSupprimer des secteurs

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

CodeLibellé affiché
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​

CodeLibellé affiché
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é​

CodeLibellé affiché
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​

CodeLibellé affiché
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​

CodeLibellé affiché
polices.viewConsulter les polices judiciaires
polices.createCréer des polices judiciaires
polices.editModifier les polices judiciaires
polices.deleteSupprimer des polices judiciaires

KoboToolbox​

CodeLibellé affiché
kobo.viewConsulter les formulaires Kobo
kobo.syncLancer la synchronisation Kobo
kobo.configureConfigurer les formulaires Kobo

Réunions et Fiches de Présence​

CodeLibellé affiché
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​

CodeLibellé affiché
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​

CodeLibellé affiché
monitoring.qualiteTableau de bord qualité
monitoring.couvertureTableau de bord couverture
monitoring.climatTableau de bord climat

Suivi & Évaluation PTBA​

CodeLibellé affiché
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)​

CodeLibellé affiché
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​

CodeLibellé affiché
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​

CodeLibellé affiché
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​

CodeLibellé affiché
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)​

CodeLibellé affiché
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​

CodeLibellé affiché
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)​

CodeLibellé affiché
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)​

CodeLibellé affiché
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​

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

CodeNom affiché
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