Aller au contenu principal

Rôles

Cet écran gère le contrôle d'accès par rôle de NomaUBL. Chaque rôle regroupe quatre familles de droits :

  • La liste des pages accessibles au rôle (et la liste des cartes du tableau de bord qu'il voit).
  • Une liste blanche d'actions — les opérations autorisées (Modifier, Supprimer, Renvoyer, Pousser un statut…).
  • Un périmètre des données — les sociétés auxquelles le rôle est limité et d'éventuels filtres de lignes qui réduisent encore l'ensemble visible par valeur de colonne.
  • Les membres affectés au rôle.

Les rôles s'appliquent à toute l'application et sont indépendants du système source — JD Edwards, SAP, NetSuite ou ERP personnalisé. Les rôles par défaut (admin, viewer) sont créés par l'action Initialiser la base dans Database Connectors → NomaUBL.

Refonte en 2026.06.21

L'éditeur a été réorganisé autour d'onglets ciblés et le modèle de droits descend bien plus finement que « pages + lecture seule » :

  • Quatre ongletsAccès (pages, cartes du tableau de bord, fonctionnalités), Actions (la nouvelle liste blanche par bouton), Périmètre des données (sociétés + filtres de lignes), Membres. Le Nom et la Description du rôle sont au-dessus de la barre d'onglets : ils restent visibles depuis n'importe quel onglet.
  • Permissions d'action granulaires — l'ancien drapeau readonly tout-ou-rien est remplacé par une liste blanche explicite sur Factures, E-Reporting et Opérations d'intégration. Un rôle sans liste blanche garde le comportement historique (tout est permis) ; activer la liste blanche pré-coche tout pour que le rôle ne perde pas brutalement ses droits.
  • Filtres de lignes par rôle — choisir une colonne (par exemple la clé alpha client de la facture, UHALKY) et une ou plusieurs valeurs ; le filtre s'applique aux listes, au tableau de bord, à chaque requête par ligne et au PDF généré. Plusieurs valeurs sur la même colonne se combinent en OU ; des filtres sur des colonnes différentes se combinent en ET, en plus du droit Sociétés déjà en place.
  • Liste blanche par carte du tableau de bord — chaque widget est une permission. Liste vide → toutes les cartes sont visibles (comportement historique) ; liste remplie → seules les cartes cochées sont visibles, et les autres ne déclenchent même pas leur SQL côté serveur.

Ouvrir l'éditeur

  • Menu → Configuration → Security → Rôles.
  • La page affiche chaque rôle sous forme de carte. Cliquer sur une carte ouvre le panneau d'édition juste en dessous. Pour partir de zéro, utiliser + Nouveau rôle en haut à droite — le même panneau s'ouvre avec le champ Nom déverrouillé.

En un coup d'œil

Rôles+ Nouveau rôleadminAccès complet — paramètres, toutes les pages, toutes les sociétés2 usersAdmin🗑client_acmeClient externe — uniquement ses factures (UHALKY = 123456)3 usersUser🗑operatorExploitation quotidienne — sans suppression, sans push de statut DB5 usersUser🗑DescriptionClient externe — uniquement ses factures (UHALKY = 123456)🛡 Accès✓ Actions🔎 Périmètre des données👤 Membres (3)Sociétés(liste vide = toutes les sociétés)00001×+ Ajouter une sociétéFiltres de lignes(liste vide = aucune restriction de ligne — combiné aux Sociétés par ET)Factures › Clé alpha clientUHALKY×123456×789012×+ Ajouter une valeur (OU)+ Ajouter un filtrePérimètre effectifSociété IN (00001) ET UHALKY IN (123456, 789012)EnregistrerAnnulerListe de cartesduplication / suppression par rôleQuatre ongletsAccès · Actions · Périmètre · MembresFiltre de lignescolonne + valeurs (OU) ; deux filtresse combinent en ETPérimètre effectifaperçu de la combinaison ET/OUécrite dans F564254

Liste des rôles

Le haut de la page affiche chaque rôle existant sous forme de carte.

ÉlémentDescription
NomIdentifiant interne du rôle (par ex. admin, operator, client_acme). Sert à rattacher les utilisateurs depuis l'éditeur Utilisateurs.
DescriptionTexte libre lisible par un humain.
Compteur de membresNombre d'utilisateurs actuellement affectés au rôle.
PastilleAdmin quand le rôle a la fonctionnalité Accès aux paramètres, User sinon. Lecture rapide de la portée du rôle.
⎘ DupliquerDuplique le rôle : pré-remplit le panneau d'édition avec tous les droits du rôle source ; le champ Nom reste vide pour que l'opérateur en choisisse un nouveau ; la description est suffixée par (copy).
🗑 SupprimerSupprime le rôle après confirmation. Les utilisateurs rattachés perdent toutes leurs permissions tant qu'ils ne sont pas réaffectés.

Cliquer sur une carte ouvre le panneau d'édition sous la liste. Pour créer un rôle depuis zéro, utiliser + Nouveau rôle en haut à droite.


Identité (toujours visible)

Le Nom du rôle (visible uniquement à la création) et la Description sont placés au-dessus de la barre d'onglets — pas besoin de revenir à un onglet précis pour les modifier.

ChampDescription
NomIdentifiant interne du rôle. Doit être unique. Verrouillé une fois créé.
DescriptionRésumé lisible affiché dans la liste des rôles.

Onglet — Accès

Définit ce que le rôle peut atteindre : fonctionnalités, pages et cartes du tableau de bord.

Fonctionnalités

Quelques drapeaux binaires. Chaque ligne combine une case à cocher et un libellé d'aide qui explique l'effet du drapeau.

FonctionnalitéAideEffet
Accès aux paramètresPeut ouvrir la page Configuration (édition des templates / connecteurs).Ouvre l'intégralité du menu Configuration. Le rôle reçoit alors la pastille Admin dans la liste.
Mode lecture seuleAucune action de modification / suppression / renvoi, même sur les pages autorisées.L'utilisateur peut consulter l'application, mais toutes les actions d'écriture sont désactivées — surcharge entièrement l'onglet Actions.

Pages autorisées

Une liste de cases à cocher qui reflète le menu de gauche. Chaque page affiche le libellé traduit (la même clé d'i18n nav.* que le menu utilise) plus l'identifiant de page en monospace estompé à côté — la ligne reste lisible en français tout en permettant une recherche rapide par identifiant.

GroupePages
Navigationdashboard, techdashboard, invoices, vatdeclaration, ereporting, edirectory, notifications, integrationerrors, processinglog
Traitementfetchinput, import, retrievestatuses
Opérationsprocess, extractandprocess, processapi
UBLvalidate, xsleditor, xmlviewer, ubldefaults
Extractionextractbip (spécifique JD Edwards), extract, extractftp
Documentationreleasenotes, upgradehistory, statusreference, reasoncodes, ublreference, xref, apireference
Gestiondocuments, pdftemplates, actions, notificationrules, dailydigest, autoretry, fileversions

Aides :

  • Boutons Tout / Aucun au-dessus des groupes — accorde ou révoque toutes les pages d'un seul clic.
  • Bascule tout cocher / tout décocher par groupe — inverse un groupe entier d'un clic.
  • La case d'un groupe affiche un état indéterminé quand seules certaines pages du groupe sont cochées.
  • Liste vide = toutes les pages autorisées. Même convention que les autres listes : un rôle non filtré voit tout.

Cartes du tableau de bord

Chaque widget du tableau de bord est une permission individuelle indexée par dashboard.<carte>. Le regroupement reproduit la mise en page du tableau de bord :

GroupeCartes
Indicateurs principauxdashboard.total, dashboard.inflight, dashboard.errors-tech, dashboard.errors-business
Graphiques et widgetsdashboard.pipeline, dashboard.volume, dashboard.recent, dashboard.stale, dashboard.error-rules, dashboard.per-company, dashboard.ereporting, dashboard.round-trip
Sectionsdashboard.quick-actions
  • Liste vide = toutes les cartes visibles (comportement historique).
  • Une liste remplie est une liste blanche stricte — les cartes masquées sont ignorées côté serveur, leur SQL n'est jamais exécuté et leurs données ne partent pas sur le réseau.
  • Les mêmes contrôles Tout / Aucun et les bascules par groupe sont disponibles, comme sur la liste des pages.

Onglet — Actions

Définit ce que le rôle peut faire sur les pages qu'il peut atteindre.

Bascule Restreindre

BasculeEffet
Désactivée (défaut)Aucune liste blanche côté serveur — le rôle peut effectuer toutes les actions autorisées par ses pages. Comportement historique.
ActivéeSeules les actions cochées en dessous sont autorisées. Activer la bascule pré-coche toutes les actions pour que le rôle ne perde pas brutalement ses droits — il suffit ensuite de décocher.

L'aide sous la bascule indique : Désactivée (défaut) = le rôle peut effectuer toutes les actions autorisées par ses pages. Activée = seules les actions cochées en dessous sont autorisées.

L'en-tête de la section reflète l'état courant :

  • (toutes les actions sont autorisées — aucune liste blanche) quand la bascule est désactivée.
  • (N actions explicitement autorisées — tout le reste est bloqué) quand la bascule est activée et N actions cochées.
  • (0 action autorisée — équivalent au Mode lecture seule) quand la liste blanche est activée mais vide.
  • (Mode lecture seule activé dans l'onglet Accès — toutes les actions sont bloquées) quand la fonctionnalité Lecture seule est active — l'onglet est alors grisé.

Les boutons Tout cocher / Tout décocher apparaissent sous la bascule (désactivés tant que la liste blanche est désactivée).

Catalogue des actions

Regroupé par la page où vit le bouton — la même clé peut piloter des boutons sur plusieurs pages.

GroupeActionCléEffet
FacturesCréerinvoice.createAction rapide du tableau de bord et bouton Nouvelle facture sur la liste.
FacturesModifierinvoice.editMet à jour les champs d'une facture depuis la fenêtre détail ou le panneau d'édition.
FacturesSupprimerinvoice.deleteSuppression définitive d'une facture et de tous ses enregistrements fils.
FacturesRenvoyer à la PAinvoice.resendSoumet ou re-soumet une facture (ou un lot) à la Plateforme Agréée.
FacturesPousser un statut (PA)invoice.status.paEnvoie un événement de statut via la PA — paiement reçu, en litige, etc. (onglet PA de la fenêtre Définir le statut).
FacturesPousser un statut (BDD)invoice.status.dbMet directement à jour un statut en base, sans passer par la PA — voie de réparation utilisée quand l'aller-retour PA est cassé.
FacturesValider UBLinvoice.validateLance la validation XSD + Schematron sur l'UBL stocké (bouton Valider de l'onglet Historique).
FacturesTélécharger UBLinvoice.downloadLecture du BLOB UBL brut — bouton Télécharger UBL et endpoint /xml.
FacturesActions pré-définiesinvoice.preset-actionUtilise les boutons pré-définis par statut (Renvoyer sur 9904, …) dans la rangée vendeur.
FacturesActions personnaliséesinvoice.custom-actionUtilise les boutons personnalisés définis par l'admin dans la rangée actions personnalisées.
FacturesEnvoyer le PDF par mailinvoice.emailEnvoie le PDF généré via le relais SMTP configuré.
E-ReportingGénérer un lotereporting.generateCrée un nouveau lot d'e-reporting depuis la fenêtre Générer.
E-ReportingRenvoyer un lotereporting.resendRe-soumet à la PA un lot d'e-reporting existant.
Opérations d'intégrationExécuter les jobs en lotintegration.runDéclenche Importer les statuts / Récupérer les factures reçues / Récupérer les statuts depuis la barre d'outils.
info

La fenêtre détail rend Parties, Lignes de facture, Récapitulatif TVA et Notes depuis l'endpoint UBL XML, qui est ouvert en lecture (mais reste filtré par les filtres de lignes et la visibilité de page). Seul le bouton Télécharger UBL est gardé par invoice.download — un rôle en lecture peut donc consulter le contenu d'une facture sans avoir le droit d'extraire le XML brut.


Onglet — Périmètre des données

Définit les lignes que le rôle peut voir — sociétés et filtres de lignes optionnels.

Sociétés

Un tableau ligne par ligne des codes société (KCO) auxquels le rôle est restreint. Chaque ligne porte un champ libre et un bouton × pour la retirer ; + Ajouter une société ajoute une ligne en bas.

  • Liste vide = toutes les sociétés. Comportement habituel — laisser le tableau vide donne accès à toutes les sociétés présentes en base.
  • Ajouter ne serait-ce qu'une ligne restreint le rôle aux sociétés listées.
  • Le placeholder propose Code KCO (par ex. 00001) et le champ utilise une police monospace pour repérer plus facilement les fautes de frappe.

Filtres de lignes

Une restriction plus fine : pour toute colonne de catalogue marquée comme filtrable, le rôle peut être limité à une ou plusieurs valeurs exactes. Cas d'usage typique — un client externe qui ne doit voir que les factures émises pour sa propre clé alpha (UHALKY).

Chaque filtre est une carte avec :

  1. Un sélecteur de colonne avec recherche, qui liste toutes les colonnes filtrables des quatre catalogues :
    • Factures (colonnes d'en-tête : UHALKY, UHAN8, nom du client, référence contrat…).
    • Erreurs d'intégration (colonnes filtrables du catalogue Erreurs d'intégration).
    • Journal de traitement (colonnes du catalogue Journal de traitement).
    • E-Reporting (colonnes du catalogue E-Reporting).
  2. Une liste de valeurs pour la colonne choisie, chacune sur sa propre ligne avec son bouton ×. + Ajouter une valeur (OU) ajoute une autre valeur.
  3. Un bouton × au niveau de la carte pour supprimer le filtre entier.

Sous la liste, + Ajouter un filtre permet à un même rôle de combiner des filtres sur des colonnes différentes.

Règles de combinaison

CasCombiné en
Plusieurs valeurs sur la même colonneOU — le rôle voit les lignes qui correspondent à au moins une des valeurs.
Plusieurs colonnes dans la liste des filtresET — le rôle voit uniquement les lignes qui satisfont chaque contrainte.
Droit Sociétés + filtres de lignesET — les deux doivent être satisfaits.

Où s'appliquent les filtres

Un filtre de lignes n'est pas un simple voile d'IHM : il est appliqué partout où une ligne interdite pourrait fuir.

  • Les listes (Factures, E-Reporting, Erreurs d'intégration, Journal de traitement) — le filtre est ajouté au SQL.
  • Le tableau de bord — compteurs, graphiques et widgets respectent le filtre du rôle.
  • Les endpoints par ligne — cycle de vie, lignes, téléchargement XML, rendu PDF, push de statut, suppression, renvoi, envoi par mail.
  • Le flux PDF généré — une ligne interdite ne peut même pas être transformée en PDF.

Les lignes interdites renvoient la même réponse « non trouvé » que pour des données réellement absentes, pour qu'un appel ne permette pas de sonder l'existence de factures qu'un rôle n'a pas le droit de connaître.


Onglet — Membres

Disponible uniquement lors de l'édition d'un rôle existant (masqué à la création).

Liste les utilisateurs actuellement rattachés au rôle :

ColonneDescription
Nom d'utilisateurIdentifiant de connexion.
Nom completNom d'affichage de l'utilisateur (ou si vide).
StatutActif (vert) ou Inactif (rouge).

Cette vue est en lecture seule — pour ajouter ou retirer un utilisateur d'un rôle, passer par l'éditeur Configuration → Security → Utilisateurs.


Enregistrer / Annuler

  • Créer (en création) / Enregistrer (en édition) persiste le rôle et rafraîchit la liste — disponible sur tous les onglets sauf Membres.
  • Annuler abandonne les changements et ferme le panneau.
  • Des messages inline apparaissent sous le panneau (Rôle créé, Rôle mis à jour, Rôle supprimé, messages d'erreur).

Stockage des droits

Chaque droit est une ligne dans F564254. La structure :

F564254
PMROLE — nom du rôle (FK vers F564251.RLNAME)
PMCRAPPID — type de droit : 'page' / 'company' / 'feature' / 'action'
/ 'dashboard-card' / 'row-filter'
PMCRAPPVAL — valeur, encodée par type :
page → identifiant de page (ex. 'invoices')
company → code KCO (ex. '00001')
feature → drapeau ('settings', 'readonly', 'actions-whitelist')
action → clé d'action (ex. 'invoice.delete')
dashboard-card → clé de carte (ex. 'dashboard.volume')
row-filter → 'colonne=valeur' (ex. 'UHALKY=123456')
PMENABL — '1' activé / '0' désactivé (utilisé lors du bootstrap spécifique au dialecte)

Les filtres de lignes sont persistés comme des chaînes colonne=valeur — une ligne par paire (colonne, valeur). L'éditeur les regroupe par colonne au chargement et les ré-aplatit à l'enregistrement, pour que l'opérateur ne voie jamais cette représentation brute.

Ajouter une nouvelle dimension de droits revient à un INSERT dans cette même table — pas de changement DDL.

Le bootstrap est idempotent : supprimer F564254 puis ré-exécuter Initialiser la base réinjecte les droits par défaut des rôles admin et viewer sans toucher aux lignes des rôles existants. Le log de l'initialisation indique le nombre de droits réinsérés.


Supprimer un rôle

Cliquer sur l'icône 🗑 d'une carte ouvre une fenêtre de confirmation :

Supprimer le rôle « X » ? Les utilisateurs rattachés à ce rôle vont perdre leurs permissions.

Confirmer supprime le rôle et toutes les lignes de droits de F564254 qui lui sont rattachées. Les utilisateurs gardent leur compte mais perdent toutes leurs permissions jusqu'à ce qu'ils soient réaffectés à un autre rôle.


Conseils et bonnes pratiques

  • Un rôle par profil, pas par individu. operator, auditor, client_<nom> sont plus simples à maintenir que des rôles individuels.
  • Accès aux paramètres avec parcimonie. Ouvre l'intégralité du menu Configuration — à réserver à un petit groupe d'administrateurs.
  • Coupler Lecture seule et Actions désactivées pour les comptes de conformité / audit — les deux couches se renforcent.
  • Le tableau Sociétés est l'outil principal de cloisonnement multi-tenant. Laisser le tableau vide neutralise tout filtrage par société pour le rôle.
  • D'abord les filtres de lignes, ensuite la liste blanche d'actions pour cadrer un utilisateur externe. Le filtre de lignes masque ce qu'il ne doit pas voir ; la liste blanche d'actions contrôle ce qu'il peut faire avec ce qu'il voit.
  • La liste blanche de cartes du tableau de bord s'exécute côté serveur — les cartes désactivées ne déclenchent même pas leur SQL. Pratique pour masquer des widgets coûteux à des rôles peu privilégiés.
  • Dupliquer pour dériver un rôle. Partir d'un rôle existant en ajustant deux ou trois droits est plus rapide que reconstruire la liste depuis zéro — et le résultat reste proche de l'intention du rôle source.
  • Ré-exécuter Initialiser la base (Database Connectors → NomaUBL) si les droits par défaut des rôles admin ou viewer ont disparu — l'opération réinjecte les lignes sans toucher aux rôles personnalisés.
  • Supprimer un rôle uniquement après avoir réaffecté ses membres. Une fois supprimé, les membres perdent l'accès à tout jusqu'à réaffectation. L'onglet Membres est le moyen le plus rapide de voir qui serait touché.