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. Le modèle tient en deux mécanismes distincts, qu'il ne faut pas confondre.

Deux questions, deux mécanismes

Quand un utilisateur ouvre un écran, Odoo répond successivement à deux questions.

Question Mécanisme qui y répond
A-t-il le droit de toucher à ce type de document, et pour quoi faire ? Les droits d'accès, qui autorisent la lecture, l'écriture, la création ou la suppression sur un type de document.
Parmi ces documents, lesquels précisément ? Les règles sur les enregistrements, qui filtrent selon une condition : le vendeur, la société, l'équipe.

Si la première réponse est négative, l'utilisateur reçoit un refus d'accès explicite. Si elle est positive mais que les règles excluent tous les enregistrements, il voit un écran vide : sans message d'erreur. Cette différence de symptôme indique déjà quelle couche examiner.

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).

Les droits d'accès n'ouvrent jamais moins

Un droit d'accès associe un groupe, un type de document et quatre autorisations : lire, écrire, créer, supprimer.

L'utilisateur obtient une autorisation dès qu'au moins un de ses groupes la lui accorde. Aucun droit d'accès ne retire quoi que ce soit : ils s'additionnent.

Point d'attention

Il n'existe pas de « droit d'accès négatif ». 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.

Les règles sur les enregistrements

Une règle porte un type de document, une condition (appelée domaine) et éventuellement des groupes. Selon qu'elle vise des groupes ou non, son effet est radicalement différent.

Nature Effet
Règle de groupe (des groupes sont renseignés) Ne s'applique qu'aux membres de ces groupes. Les règles de groupe qui concernent un même utilisateur se combinent par ou : il suffit qu'une seule accepte le document pour qu'il le voie. Ajouter une règle de groupe élargit donc le périmètre.
Règle globale (aucun groupe renseigné) S'applique à tout le monde, sans exception. Les règles globales se combinent par et avec tout le reste. C'est le seul mécanisme qui restreint réellement.

Le périmètre final d'un utilisateur est donc : toutes les règles globales, et au moins une des règles de groupe qui le concernent.

Point d'attention

Une règle ne restreint que les membres des groupes qu'elle vise. Si, pour un type de document, aucun des groupes de l'utilisateur n'est visé par une règle de groupe, plus aucune règle de groupe ne le limite : il voit tout ce que ses droits d'accès autorisent. C'est la cause la plus fréquente d'un périmètre plus large que prévu.

Un exemple complet

Les deux niveaux de vente illustrent le modèle entier.

Niveau attribué Ce qu'Odoo met en place
Utilisateur : mes documents seulement Le groupe correspondant est visé par une règle dont la condition est « le vendeur est moi, ou le vendeur n'est pas renseigné ».
Utilisateur : tous les documents Ce niveau implique le précédent (l'utilisateur est donc dans les deux groupes) et ajoute une règle dont la condition est toujours vraie.

L'utilisateur au niveau supérieur relève de deux règles de groupe. Elles se combinent par ou : « mes documents » ou « tout ». La seconde l'emporte, et il voit l'ensemble.

Ce que cet exemple montre

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

Intervenir sans casser

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

  1. Ne modifiez pas une règle livrée par Odoo. Elle s'applique à tous les membres de son groupe, y compris à des usages que vous ne connaissez pas ; votre modification n'est visible nulle part pour celui qui diagnostiquera plus tard ; et selon les modules elle est réécrite à la mise à jour. Créez plutôt une règle supplémentaire, visant un groupe dédié.
  2. Pour élargir, ajoutez une règle de groupe, plutôt que d'étendre le domaine d'une règle existante. L'effet est le même pour les personnes visées, sans conséquence pour les autres.
  3. Pour restreindre, seule une règle globale y parvient : et elle s'impose à tout le monde, administrateur compris. Vérifiez sur un cas réel avant de la 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.7). 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. Une règle saisie directement en base existe sur cette base seulement : elle ne se retrouve ni sur l'environnement de test, ni après une restauration, ni sur une base créée plus tard.

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 Dupliqués. La copie possède ses propres autorisations, modifiables sans effet sur le groupe d'origine.
Règles sur les enregistrements Partagées. Aucune règle n'est recréée : les mêmes règles visent désormais les deux groupes.
Menus et vues accessibles Partagés, selon le même principe.
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

Dupliquer un groupe ne rend donc pas ses règles indépendantes. Modifier ensuite le domaine d'une règle pour l'adapter à la variante la modifie aussi pour le groupe d'origine , c'est-à-dire exactement l'accident que la première règle de conduite cherche à éviter, atteint par le chemin qu'on croyait sûr.

Second effet : la copie hérite des membres de l'original. Le nouveau groupe est accordé silencieusement à des personnes que l'on ne visait pas.

Astuce

Pour une variante, créez un groupe vide, attachez-lui une règle qui lui est propre, 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.
Administrateur Accès complet, y compris la configuration de l'application.
  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 le domaine dont chacun relève.
  3. Ouvrir le groupe à retirer.
  4. Dans l'onglet Utilisateurs, retirer la personne.
  5. Enregistrer.

Astuce

L'onglet Hérité 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.7).

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. Consomme une licence.
Portail Tiers externe : client, fournisseur, sous-traitant. N'accède qu'à ses propres documents, dans une interface simplifiée. Ne consomme pas de licence.
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 consomme une licence et 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. Trois 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 : Droit, qui indique le domaine dont relève le groupe, et Nom. Une colonne Droit vide signale un groupe hors domaine, de ceux que les listes déroulantes ne proposent pas ; - Droits d'accès : les autorisations de lecture, écriture, création et suppression, type de document par type de document. Le décompte se chiffre couramment en centaines : c'est normal, chaque application en apporte ; - Règles sur les enregistrements : les restrictions de périmètre qui s'appliquent.

Ces trois é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 : la liste des droits d'accès est même éditable en ligne. Traitez-les comme des écrans de consultation : une modification faite ici porte sur la configuration générale, pas sur le seul utilisateur inspecté.

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 trois couches elles-mêmes. Ils supposent le mode développeur actif.

Écran Contenu
Paramètres › Utilisateurs & Sociétés › Groupes Les groupes existants, leurs membres, et les groupes qu'ils impliquent.
Paramètres › Utilisateurs & Sociétés › Droits Les domaines fonctionnels et l'ordre de leurs niveaux.
Paramètres › Technique › Sécurité › Droits d'accès Les autorisations par type de document et par groupe.
Paramètres › Technique › Sécurité › Règles sur les enregistrements Les restrictions de périmètre et leur domaine.

Une règle sur les enregistrements se lit en trois points : le type de document concerné, les groupes auxquels elle s'applique (une règle sans groupe est dite globale et s'impose à tous) et le domaine, qui exprime la condition retenue.

Point d'attention

Modifier une règle standard ou 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 règles se maintient dans le temps ; une modification directe des règles 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 Hérité, 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.