Se rendre au contenu

Droits d'accès et périmètres

À l'issue de ce chapitre

  • comprendre comment Odoo décide qu'un utilisateur voit ou non un document ;
  • attribuer les niveaux d'accès par domaine et savoir ce que chacun restreint ;
  • réutiliser un profil existant en dupliquant un utilisateur ;
  • distinguer utilisateur interne, portail et public ;
  • cloisonner les données entre plusieurs sociétés ;
  • inspecter les droits réellement appliqués à une personne.

La création d'un utilisateur est décrite au chapitre 5. Ce chapitre traite de ce qui vient ensuite : régler finement qui accède à quoi, et savoir diagnostiquer une situation inattendue.

Le principe

Comprendre comment Odoo décide qu'un utilisateur voit ou non un document évite de procéder par tâtonnement. Tout repose sur un seul objet, le droit d'accès, et sur la manière dont ces droits se combinent.

Ce que porte un droit d'accès

Un droit d'accès désigne un type de document et précise trois choses.

Ce qu'il porte Ce que cela commande
Les opérations Lire, créer, modifier, supprimer : celles que le droit autorise, prises séparément.
Un groupe, ou aucun Qui est concerné. C'est ce point qui change du tout au tout l'effet du droit.
Une condition Appelée domaine, elle borne le droit à une partie des documents : ceux dont l'utilisateur est le vendeur, ceux de sa société, ceux de son équipe. Laissée vide, elle vaut pour tous.

Un même type de document porte donc plusieurs droits d'accès, et c'est leur combinaison qui fixe ce que chacun voit.

Les groupes

Un groupe est un ensemble de droits nommé. L'utilisateur n'en reçoit pas les droits un à un : il reçoit des groupes, et les droits suivent.

Un groupe peut en impliquer un autre : ses membres appartiennent alors automatiquement au groupe impliqué, et cumulent les droits des deux. C'est ce qui construit les niveaux d'un même domaine, le niveau supérieur implique l'inférieur et lui ajoute ses propres droits.

Note

Un utilisateur appartient donc souvent à bien plus de groupes qu'on ne lui en a attribué explicitement. Le bouton Groupes de sa fiche affiche la liste réelle, implications comprises (voir la section 6.6).

Avec un groupe, le droit accorde

Un droit rattaché à un groupe accorde les opérations qu'il liste, sur les documents que sa condition retient, aux membres de ce groupe.

Les droits de ce genre qui concernent un même utilisateur se combinent par ou : il suffit qu'un seul accepte le document pour qu'il le voie. En ajouter un élargit donc le périmètre.

Point d'attention

Aucun droit rattaché à un groupe ne retire quoi que ce soit : ils s'additionnent. Pour qu'une personne cesse de voir un type de document, il faut lui retirer le groupe qui le lui ouvre, pas ajouter quelque chose qui l'interdirait.

Sans groupe, le droit restreint

Un droit sans groupe s'applique à tout le monde, sans exception, administrateur compris. Il n'accorde rien : il retire tout ce que sa condition ne retient pas. Les droits de ce genre se combinent par et avec tout le reste. C'est le seul mécanisme qui restreint réellement.

Le cloisonnement entre sociétés en est l'exemple le plus courant. Sur les commandes de vente, un droit sans groupe porte la condition "la société du document fait partie des sociétés actives" : à lui seul, il assure l'étanchéité du multi-sociétés.

Le périmètre final d'un utilisateur est donc : tous les droits sans groupe, et au moins un des droits de groupe qui le concernent.

Point d'attention

Un droit de groupe ne limite que les membres des groupes qu'il vise. Si, pour un type de document, aucun des groupes de l'utilisateur ne porte de condition, plus rien ne le limite de ce côté : il voit tout ce que les droits sans groupe laissent passer. C'est la cause la plus fréquente d'un périmètre plus large que prévu.

Deux symptômes, deux causes

Si aucun droit de groupe n'accorde l'opération demandée, l'utilisateur reçoit un refus explicite, qui nomme les groupes susceptibles de l'autoriser. Si un droit l'accorde mais que les conditions excluent tous les documents, il voit un écran vide, sans message d'erreur. Cette différence de symptôme indique déjà où regarder.

Un exemple complet

Les niveaux de vente illustrent le modèle entier. Sur les commandes de vente, Odoo livre les droits suivants.

Droit livré Ce qu'il fait
Rattaché au groupe Utilisateur : mes documents seulement Accorde la lecture, la création et la modification, à la condition que "le vendeur est moi, ou le vendeur n'est pas renseigné".
Rattaché au groupe Utilisateur : tous les documents Accorde les mêmes opérations, sans condition.
Rattaché au groupe Administrateur Accorde en plus la suppression, sans condition.
Sans groupe Retire à tout le monde les documents dont la société ne fait pas partie des sociétés actives.

Le niveau Utilisateur : tous les documents implique le précédent : l'utilisateur est donc dans les deux groupes et relève des deux premiers droits. Ils se combinent par ou : "mes documents" ou "tout". Le second l'emporte, et il voit l'ensemble. Le droit sans groupe, lui, s'applique quel que soit son niveau.

Ce que cet exemple montre

Odoo n'a pas supprimé la restriction pour élargir le périmètre : il a ajouté un droit qui la neutralise. C'est le schéma de toute l'architecture, on élargit en ajoutant, jamais en retirant.

Il montre aussi que la suppression se traite comme les autres opérations : le niveau Utilisateur : tous les documents voit tout mais ne peut rien supprimer, faute d'un droit qui le lui accorde.

Intervenir sans casser

Ces mécanismes commandent quelques règles de conduite.

  1. Ne modifiez pas un droit livré par Odoo. Il s'applique à tous les membres de son groupe, y compris à des usages que vous ne connaissez pas, et votre modification n'est visible nulle part pour celui qui diagnostiquera plus tard. Créez plutôt un droit supplémentaire, visant un groupe dédié.
  2. Pour élargir, ajoutez un droit de groupe, plutôt que d'étendre la condition d'un droit existant. L'effet est le même pour les personnes visées, sans conséquence pour les autres.
  3. Pour restreindre, seul un droit sans groupe y parvient : et il s'impose à tout le monde, administrateur compris. Vérifiez sur un cas réel avant de le laisser en place.
  4. Pour retirer un accès, retirez le groupe qui l'accorde. Chercher ce qui pourrait l'interdire est une impasse : ce mécanisme n'existe pas.
  5. Créez un groupe dédié plutôt que d'adapter un groupe standard : et créez-le vraiment, ne le dupliquez pas (voir la section 6.1.8). Un groupe qui n'appartient à aucun module est un ajout ; un groupe standard modifié est une dette.
  6. Faites porter les ajouts durables par un module. Un droit saisi directement en base existe sur cette base seulement : il ne se retrouve ni sur l'environnement de test, ni après une restauration, ni sur une base créée plus tard.

Point d'attention

Cette première règle est appliquée par Odoo lui-même : un droit d'accès livré par un module n'est pas modifiable, ses champs sont affichés en lecture seule. Le formulaire propose à la place de le personnaliser, ce qui en crée une copie modifiable et désactive l'original. C'est le geste à employer, il laisse le droit d'origine intact et retrouvable.

Note

Les trois premières règles suffisent à couvrir l'essentiel des besoins de paramétrage. Les suivantes concernent les interventions destinées à durer, qui gagnent à être confiées à votre intégrateur.

Ce que duplique (et ne duplique pas) un groupe

Dupliquer un groupe pour en faire une variante paraît économique. Le résultat n'est pas celui qu'on attend : selon les éléments, la copie reçoit des exemplaires indépendants ou de simples liens vers les originaux.

Élément du groupe Ce que devient la copie
Droits d'accès, conditions comprises Dupliqués. La copie possède ses propres droits, modifiables sans effet sur le groupe d'origine.
Menus et vues accessibles Partagés. Rien n'est recréé : les mêmes menus et les mêmes vues sont désormais rattachés aux deux groupes.
Groupes impliqués Partagés. La copie entraîne les mêmes groupes que l'original.
Membres Repris. Les utilisateurs du groupe d'origine se retrouvent dans la copie.

Point d'attention

La copie hérite des membres de l'original. Le nouveau groupe, et les droits qu'il porte, sont donc accordés silencieusement à des personnes que l'on ne visait pas. C'est le premier point à reprendre après une duplication : vider l'onglet Utilisateurs de la copie.

Astuce

Pour une variante, créez plutôt un groupe vide, attachez-lui les droits qui lui sont propres, puis ajoutez les personnes concernées. C'est trois manipulations de plus et aucune surprise.

Attribuer les niveaux d'accès

Les domaines et leurs niveaux

L'onglet Droits d'accès de la fiche utilisateur présente les domaines fonctionnels regroupés par catégorie. Chaque domaine se règle par une liste déroulante offrant ses niveaux, du plus restreint au plus étendu. Un domaine laissé à No (ou au libellé qui en tient lieu) signifie que l'utilisateur n'a aucun accès à ce périmètre.

Au-dessus de ces domaines, le groupe Rôles porte le rôle général de l'utilisateur et, en multi-sociétés, les sociétés auxquelles il accède.

Pour les ventes, par exemple :

Niveau Périmètre accordé
No Aucun accès aux documents de vente. C'est la valeur par défaut de tout domaine non attribué.
Utilisateur : mes documents seulement Ne voit que les devis et commandes dont il est le vendeur.
Utilisateur : tous les documents Voit l'ensemble des documents de vente, quel que soit le vendeur, et peut les modifier. Il ne peut pas les supprimer.
Administrateur Accès complet, suppression et configuration de l'application comprises.
  1. Ouvrir Paramètres › Utilisateurs & Sociétés › Utilisateurs et sélectionner l'utilisateur.
  2. Ouvrir l'onglet Droits d'accès.
  3. Pour chaque domaine utile, choisir le niveau dans sa liste déroulante ; laisser les autres à No.
  4. Enregistrer.
Niveaux d'accès par domaine fonctionnel
Figure 6.1 : Niveaux d'accès par domaine fonctionnel

Ce que "mes documents seulement" restreint vraiment

Ce niveau est celui qui surprend le plus. Il ne masque pas une application : il restreint les enregistrements visibles à ceux dont l'utilisateur est responsable.

Point d'attention

La restriction porte sur le document, pas sur les données qu'il contient. Un vendeur limité à ses propres commandes accède malgré tout à la fiche complète des clients, aux produits et aux tarifs, il en a besoin pour établir un devis. Si la confidentialité porte sur le fichier client lui-même, ce niveau ne suffit pas.

Le champ qui détermine "ses" documents varie selon l'application : le vendeur sur une commande, le responsable sur une tâche, l'employé sur une note de frais. En cas de doute, la vérification se fait sur un cas réel plutôt que par déduction (voir la section 6.6).

Sortir des niveaux standards

Certains groupes n'appartiennent à aucun domaine : ils n'apparaissent donc dans aucune liste déroulante. Ce sont eux qui ouvrent les capacités transverses ou secondaires : gérer plusieurs unités de mesure, accéder aux listes de prix, travailler en multidevise.

Point d'attention

En usage courant, la fiche utilisateur ne pilote que les niveaux par domaine : les groupes hors domaine n'y apparaissent pas. Ils ne deviennent visibles et modifiables qu'en mode développeur.

Pour accorder ou retirer un droit hors domaine :

  1. Activer le mode développeur (voir le chapitre 3).
  2. Ouvrir la fiche de l'utilisateur, onglet Droits d'accès.
  3. Descendre jusqu'à la section Droits supplémentaires, qui n'apparaît qu'en mode développeur : chaque droit hors domaine y est une case à cocher.
  4. Cocher ou décocher, puis enregistrer et contrôler le résultat obtenu (voir la section 6.6).

L'opération se mène aussi depuis le groupe, ce qui convient mieux pour traiter plusieurs personnes d'un coup : ouvrir Paramètres › Utilisateurs & Sociétés › Groupes, puis l'onglet Utilisateurs du groupe voulu.

Pour retirer un droit hors domaine, le plus simple est de partir de la personne plutôt que de chercher le groupe :

  1. Ouvrir Paramètres › Utilisateurs & Sociétés › Utilisateurs et sélectionner l'utilisateur.
  2. Cliquer sur le bouton intelligent Groupes : la liste de ses groupes s'affiche, avec la Portée dont chacun relève.
  3. Ouvrir le groupe à retirer.
  4. Dans l'onglet Utilisateurs, retirer la personne.
  5. Enregistrer.

Astuce

L'onglet Dépendances du groupe montre les groupes qu'il entraîne et ceux qui l'entraînent. C'est le meilleur endroit pour mesurer la portée réelle d'un droit avant de l'accorder : un groupe discret peut en impliquer plusieurs autres.

Astuce

Le mode développeur ajoute aussi un bouton d'information en regard de chaque domaine. Il détaille ce que le niveau sélectionné recouvre réellement, plus fiable que de le déduire de son intitulé.

Réutiliser un profil existant

Reconstituer à la main les droits d'un utilisateur pour un collègue au même poste est long et peu fiable. La duplication reproduit le profil à l'identique.

  1. Ouvrir Paramètres › Utilisateurs & Sociétés › Utilisateurs.
  2. Sélectionner l'utilisateur qui sert de référence.
  3. Cliquer sur Actions puis Dupliquer.
  4. Odoo crée une copie portant la mention (copie) dans le nom et dans l'identifiant, avec les mêmes groupes et les mêmes niveaux d'accès.
  5. Remplacer le nom et l'adresse électronique par ceux du nouvel arrivant.
  6. Vérifier les sociétés accessibles et la société par défaut.
  7. Enregistrer, puis envoyer l'invitation.

Note

Le mot de passe n'est pas copié : le nouvel utilisateur définit le sien depuis le lien d'invitation. La duplication ne transmet donc aucun secret.

Note

Dupliquer un utilisateur se comporte comme on l'attend : la copie reçoit les mêmes groupes, et rien d'autre n'est affecté. C'est la duplication d'un groupe qui réserve des surprises (voir la section 6.1.8).

Astuce

Créez un utilisateur de référence par poste type (commercial sédentaire, acheteur, comptable) sans lui attribuer d'identifiant nominatif, et archivez-le. Il devient un modèle de profil que l'on duplique à chaque arrivée, plutôt qu'un profil reconstitué de mémoire.

Point d'attention

La duplication reproduit fidèlement le profil, y compris ses défauts. Si l'utilisateur de référence a accumulé des droits au fil du temps, la copie les hérite. Contrôlez le profil source avant d'en faire un modèle.

Utilisateurs internes, portail et public

Trois natures d'utilisateurs coexistent, et la distinction a des conséquences directes.

Nature Accès et usage
Interne Salarié de l'entreprise. Accède à l'interface de gestion selon ses droits.
Portail Tiers externe : client, fournisseur, sous-traitant. N'accède qu'à ses propres documents, dans une interface simplifiée, sans jamais entrer dans l'interface de gestion.
Public Visiteur non identifié du site web. Accède uniquement aux contenus publiés.

Un utilisateur externe porte un bandeau explicite en haut de sa fiche, ce qui évite de le confondre avec un collaborateur.

Point d'attention

Transformer un utilisateur portail en utilisateur interne lui ouvre l'accès à l'ensemble des documents autorisés par ses groupes, pas seulement aux siens. Cette bascule se décide, elle ne se fait pas pour dépanner.

La procédure d'ouverture d'un accès portail est décrite au chapitre 5.

Cloisonner plusieurs sociétés

Lorsque la base héberge plusieurs entités, chaque utilisateur dispose d'une liste de sociétés accessibles et d'une société par défaut.

  1. Ouvrir la fiche de l'utilisateur, onglet Droits d'accès.
  2. Renseigner les Sociétés auxquelles il a accès.
  3. Renseigner la Société par défaut, active à l'ouverture de session.

Ce que voit réellement l'utilisateur

Le sélecteur de sociétés de la barre supérieure permet d'en activer plusieurs simultanément. L'utilisateur voit alors les documents de toutes les sociétés cochées, pas seulement de la société par défaut.

Certaines données restent partagées quelle que soit la société active : les produits et les contacts, notamment, lorsqu'ils ne sont rattachés à aucune société en particulier. Les documents comptables et commerciaux, eux, sont toujours cloisonnés.

Point d'attention

Un utilisateur qui n'a accès qu'à une société ne verra jamais les documents des autres, y compris ceux que lui adresse un collègue par lien direct : le document s'affiche alors comme inexistant. C'est le comportement attendu, pas une anomalie.

Inspecter les droits appliqués

Plutôt que de reconstituer mentalement l'effet des groupes, Odoo affiche le résultat.

  1. Activer le mode développeur (voir le chapitre 3).
  2. Ouvrir la fiche de l'utilisateur concerné.
  3. Deux boutons intelligents apparaissent en haut du formulaire, chacun portant son décompte : - Groupes : la liste complète des groupes appliqués, implications comprises. Elle comporte deux colonnes : Portée, qui indique le domaine dont relève le groupe, et Nom. Une colonne Portée vide signale un groupe hors domaine, de ceux que les listes déroulantes ne proposent pas ; - Droits d'accès : les droits rattachés à ces groupes, un par ligne, avec le type de document, les opérations autorisées et la condition de périmètre. Le décompte se chiffre couramment en centaines : c'est normal, chaque application en apporte.

Ces deux écrans sont des inventaires : ils restituent l'état obtenu. Ils n'autorisent ni création ni suppression, mais les valeurs affichées y restent modifiables. Traitez-les comme des écrans de consultation : une modification faite ici porte sur la configuration générale, pas sur le seul utilisateur inspecté.

Note

La liste des droits d'accès ne montre que ceux qui sont rattachés à un groupe de la personne. Les droits sans groupe, ceux qui restreignent tout le monde, n'y figurent pas : ils se consultent depuis l'écran technique correspondant (voir plus bas). Un périmètre plus étroit que ne le laisse croire cette liste vient souvent de là.

Boutons d'inspection des droits d'un utilisateur
Figure 6.2 : Boutons d'inspection des droits d'un utilisateur

Astuce

C'est la première chose à consulter quand un utilisateur signale qu'il ne voit pas un document. La réponse s'y lit directement, alors qu'une discussion sur les groupes attendus tourne vite en hypothèses.

Aller plus loin

Pour un besoin que les niveaux standards ne couvrent pas, les écrans techniques donnent accès aux objets eux-mêmes. Ils supposent le mode développeur actif.

Écran Contenu
Paramètres › Utilisateurs & Sociétés › Groupes Les groupes existants, leurs membres, les groupes qu'ils impliquent et les droits qu'ils portent.
Paramètres › Technique › Sécurité › Scopes Les domaines fonctionnels et l'ordre de leurs niveaux.
Paramètres › Technique › Sécurité › Droits d'accès Tous les droits d'accès de la base, avec ou sans groupe.

Un droit d'accès se lit en quatre points : le type de document concerné, le groupe auquel il s'applique (un droit sans groupe s'impose à tous), les opérations qu'il porte et la condition qui borne son périmètre. La liste distingue les deux natures par une étiquette de couleur, et se regroupe par groupe, par type de document ou par nature.

Astuce

Le filtre qui isole les droits ajoutés à la base, hors de ceux livrés par les modules, donne en un écran l'inventaire de tout ce qui a été paramétré sur cette base. C'est le premier endroit à consulter pour comprendre un comportement qui n'existe pas ailleurs.

Point d'attention

Modifier un droit d'accès livré par Odoo produit des effets à distance, souvent constatés des semaines plus tard sur une fonction sans rapport apparent. Pour un besoin durable, un module dédié qui ajoute ses propres groupes et ses propres droits se maintient dans le temps ; une modification directe des droits standard se perd à la première mise à jour.

Note

Ces écrans se consultent sans risque : ils expliquent le comportement observé. Ce sont les modifications qui demandent des précautions.

Tracer les modifications

Sur les documents sensibles, Odoo consigne dans le fil de discussion (la zone d'échanges et d'historique présente au bas de chaque document, décrite à la section 4.1) qui a modifié quoi, quand, et quelle était la valeur précédente. Le suivi porte sur les champs déclarés comme suivis, et ce périmètre varie d'une application à l'autre (voir la section 4.1).

Pour les opérations comptables, le verrouillage des périodes complète ce suivi en empêchant toute modification antérieure à une date donnée (voir le chapitre 14).

Bonnes pratiques

Des droits tenables dans la durée

  • Partir du poste, pas de la personne : raisonnez par fonction plutôt que cas par cas, et matérialisez chaque poste type par un modèle réutilisable (voir la section 6.9.1).
  • Accorder le minimum : étendre un droit prend dix secondes ; identifier après coup qui a pu modifier quoi prend une journée.
  • Réviser aux mouvements : un changement de poste doit s'accompagner d'un réexamen des droits, faute de quoi ils s'accumulent.
  • Archiver plutôt que supprimer : un utilisateur archivé ne peut plus se connecter, mais reste rattaché à l'historique des documents qu'il a créés.
  • Documenter les écarts : notez pourquoi une personne s'écarte du modèle de son poste, sinon la raison se perd et personne n'ose y toucher.

Matérialiser un poste type

Odoo ne comporte pas d'objet "profil" : rien ne permet de déclarer un poste et de l'affecter d'un geste. Deux techniques produisent malgré tout cet effet, avec des propriétés différentes.

Technique Propriétés
Utilisateur de référence, dupliqué à chaque arrivée Aucune notion technique à créer, aucun mode développeur. En revanche le modèle n'est qu'une fiche parmi d'autres : rien ne signale qu'elle fait référence, et une modification du modèle ne se répercute pas sur les personnes déjà créées.
Groupe de poste, qui en implique d'autres Un objet nommé, attribué en une fois, et modifiable pour tout le monde à la fois : ajouter un droit au groupe l'accorde à tous ses membres. Demande le mode développeur, et gagne à être porté par un module.

Pour la première, la procédure est celle de la section 6.3.

Pour la seconde :

  1. Activer le mode développeur (voir le chapitre 3).
  2. Ouvrir Paramètres › Utilisateurs & Sociétés › Groupes et créer un groupe portant le nom du poste.
  3. Dans l'onglet Dépendances, renseigner les Groupes implicites : les niveaux et les droits que le poste doit accorder.
  4. Attribuer ce seul groupe aux personnes concernées, depuis son onglet Utilisateurs.

Note

Les droits obtenus par implication apparaissent sur la fiche utilisateur comme impliqués et non comme explicitement attribués : les listes déroulantes des domaines concernés se remplissent d'elles-mêmes. C'est le comportement attendu, et il rend d'ailleurs lisible ce qui vient du poste et ce qui a été ajouté pour la personne.

Astuce

Le groupe de poste devient vite le meilleur des deux : un changement d'organisation se répercute en modifiant un seul objet, au lieu de reprendre chaque fiche utilisateur créée depuis un modèle devenu obsolète.