[{"data":1,"prerenderedAt":931},["ShallowReactive",2],{"navigation_docs":3,"-05-regles-et-matrices-calcul-des-droits":307,"-05-regles-et-matrices-calcul-des-droits-surround":926},[4,24,52,124,188,225,278,285],{"title":5,"icon":6,"path":7,"stem":8,"children":9},"Comprendre TARS","i-lucide-brain","\u002F01-comprendre-tars","01-comprendre-tars",[10,12,16,20],{"title":5,"path":7,"stem":11},"01-comprendre-tars\u002Findex",{"title":13,"path":14,"stem":15},"Acteurs et responsabilités","\u002F01-comprendre-tars\u002Facteurs-et-responsabilites","01-comprendre-tars\u002Facteurs-et-responsabilites",{"title":17,"path":18,"stem":19},"Cycle de vie global","\u002F01-comprendre-tars\u002Fcycle-de-vie-global","01-comprendre-tars\u002Fcycle-de-vie-global",{"title":21,"path":22,"stem":23},"Les frontaux","\u002F01-comprendre-tars\u002Fles-frontaux","01-comprendre-tars\u002Fles-frontaux",{"title":25,"icon":26,"path":27,"stem":28,"children":29},"Frontaux","i-lucide-monitor","\u002F02-frontaux","02-frontaux",[30,32,36,40,44,48],{"title":25,"path":27,"stem":31},"02-frontaux\u002Findex",{"title":33,"path":34,"stem":35},"Admin","\u002F02-frontaux\u002Fadmin","02-frontaux\u002Fadmin",{"title":37,"path":38,"stem":39},"Espace personnel","\u002F02-frontaux\u002Fespace-personnel","02-frontaux\u002Fespace-personnel",{"title":41,"path":42,"stem":43},"Interactions entre frontaux","\u002F02-frontaux\u002Finteractions-entre-frontaux","02-frontaux\u002Finteractions-entre-frontaux",{"title":45,"path":46,"stem":47},"Inventaire terrain","\u002F02-frontaux\u002Finventaire-terrain","02-frontaux\u002Finventaire-terrain",{"title":49,"path":50,"stem":51},"Marketplace","\u002F02-frontaux\u002Fmarketplace","02-frontaux\u002Fmarketplace",{"title":53,"icon":54,"path":55,"stem":56,"children":57},"Domaines fonctionnels","i-lucide-workflow","\u002F03-domaines-fonctionnels","03-domaines-fonctionnels",[58,60,64,68,72,76,80,84,88,92,96,100,104,108,112,116,120],{"title":53,"path":55,"stem":59},"03-domaines-fonctionnels\u002Findex",{"title":61,"path":62,"stem":63},"Accès et autorisations","\u002F03-domaines-fonctionnels\u002Facces-et-autorisations","03-domaines-fonctionnels\u002Facces-et-autorisations",{"title":65,"path":66,"stem":67},"Adresses","\u002F03-domaines-fonctionnels\u002Fadresses","03-domaines-fonctionnels\u002Fadresses",{"title":69,"path":70,"stem":71},"Audit trail","\u002F03-domaines-fonctionnels\u002Faudit-trail","03-domaines-fonctionnels\u002Faudit-trail",{"title":73,"path":74,"stem":75},"Catalogue structure","\u002F03-domaines-fonctionnels\u002Fcatalogue-structure","03-domaines-fonctionnels\u002Fcatalogue-structure",{"title":77,"path":78,"stem":79},"Commentaires et questions","\u002F03-domaines-fonctionnels\u002Fcommentaires","03-domaines-fonctionnels\u002Fcommentaires",{"title":81,"path":82,"stem":83},"Contrats","\u002F03-domaines-fonctionnels\u002Fcontrats","03-domaines-fonctionnels\u002Fcontrats",{"title":85,"path":86,"stem":87},"Documents et conformité","\u002F03-domaines-fonctionnels\u002Fdocuments-et-conformite","03-domaines-fonctionnels\u002Fdocuments-et-conformite",{"title":89,"path":90,"stem":91},"Enchères","\u002F03-domaines-fonctionnels\u002Fencheres","03-domaines-fonctionnels\u002Fencheres",{"title":93,"path":94,"stem":95},"Factures et paiement","\u002F03-domaines-fonctionnels\u002Ffactures-et-paiement","03-domaines-fonctionnels\u002Ffactures-et-paiement",{"title":97,"path":98,"stem":99},"Notifications et emails","\u002F03-domaines-fonctionnels\u002Fnotifications-et-emails","03-domaines-fonctionnels\u002Fnotifications-et-emails",{"title":101,"path":102,"stem":103},"Organisations","\u002F03-domaines-fonctionnels\u002Forganisations","03-domaines-fonctionnels\u002Forganisations",{"title":105,"path":106,"stem":107},"Personnes","\u002F03-domaines-fonctionnels\u002Fpersonnes","03-domaines-fonctionnels\u002Fpersonnes",{"title":109,"path":110,"stem":111},"Rapports","\u002F03-domaines-fonctionnels\u002Frapports","03-domaines-fonctionnels\u002Frapports",{"title":113,"path":114,"stem":115},"Rendez-vous","\u002F03-domaines-fonctionnels\u002Frendez-vous","03-domaines-fonctionnels\u002Frendez-vous",{"title":117,"path":118,"stem":119},"Watchlists et recherches sauvegardées","\u002F03-domaines-fonctionnels\u002Fsuivi-et-alertes","03-domaines-fonctionnels\u002Fsuivi-et-alertes",{"title":121,"path":122,"stem":123},"Ventes et séances","\u002F03-domaines-fonctionnels\u002Fventes-et-seances","03-domaines-fonctionnels\u002Fventes-et-seances",{"title":125,"icon":126,"path":127,"stem":128,"children":129},"Workflows","i-lucide-git-branch","\u002F04-workflows","04-workflows",[130,132,136,140,144,148,152,156,160,164,168,172,176,180,184],{"title":125,"path":127,"stem":131},"04-workflows\u002Findex",{"title":133,"path":134,"stem":135},"Workflow catalogue","\u002F04-workflows\u002Fcatalogue","04-workflows\u002Fcatalogue",{"title":137,"path":138,"stem":139},"Workflow commentaires","\u002F04-workflows\u002Fcommentaires","04-workflows\u002Fcommentaires",{"title":141,"path":142,"stem":143},"Workflow connexion et accès","\u002F04-workflows\u002Fconnexion-et-acces","04-workflows\u002Fconnexion-et-acces",{"title":145,"path":146,"stem":147},"Workflow contrats","\u002F04-workflows\u002Fcontrats","04-workflows\u002Fcontrats",{"title":149,"path":150,"stem":151},"Workflow documents","\u002F04-workflows\u002Fdocuments","04-workflows\u002Fdocuments",{"title":153,"path":154,"stem":155},"Workflow emails et notifications","\u002F04-workflows\u002Femails-et-notifications","04-workflows\u002Femails-et-notifications",{"title":157,"path":158,"stem":159},"Workflow enchères","\u002F04-workflows\u002Fencheres","04-workflows\u002Fencheres",{"title":161,"path":162,"stem":163},"Workflow factures et paiement","\u002F04-workflows\u002Ffactures-et-paiement","04-workflows\u002Ffactures-et-paiement",{"title":165,"path":166,"stem":167},"Workflow item \u002F lot","\u002F04-workflows\u002Fitem","04-workflows\u002Fitem",{"title":169,"path":170,"stem":171},"Workflow KYB organisation complexe","\u002F04-workflows\u002Fkyb-organisation-complexe","04-workflows\u002Fkyb-organisation-complexe",{"title":173,"path":174,"stem":175},"Workflow personnes et organisations","\u002F04-workflows\u002Fpersonnes-et-organisations","04-workflows\u002Fpersonnes-et-organisations",{"title":177,"path":178,"stem":179},"Workflow rapports et audit","\u002F04-workflows\u002Frapports-et-audit","04-workflows\u002Frapports-et-audit",{"title":181,"path":182,"stem":183},"Workflow rendez-vous","\u002F04-workflows\u002Frendez-vous","04-workflows\u002Frendez-vous",{"title":185,"path":186,"stem":187},"Workflow vente et séance","\u002F04-workflows\u002Fvente-et-seance","04-workflows\u002Fvente-et-seance",{"title":189,"icon":190,"path":191,"stem":192,"children":193},"Regles et matrices","i-lucide-list","\u002F05-regles-et-matrices","05-regles-et-matrices",[194,197,201,205,209,213,217,221],{"title":195,"path":191,"stem":196},"Règles et matrices","05-regles-et-matrices\u002Findex",{"title":198,"path":199,"stem":200},"Actions par frontal","\u002F05-regles-et-matrices\u002Factions-par-frontal","05-regles-et-matrices\u002Factions-par-frontal",{"title":202,"path":203,"stem":204},"Calcul des droits d'accès","\u002F05-regles-et-matrices\u002Fcalcul-des-droits","05-regles-et-matrices\u002Fcalcul-des-droits",{"title":206,"path":207,"stem":208},"Confidentialité","\u002F05-regles-et-matrices\u002Fconfidentialite","05-regles-et-matrices\u002Fconfidentialite",{"title":210,"path":211,"stem":212},"Procurations et organisations complexes","\u002F05-regles-et-matrices\u002Fprocurations","05-regles-et-matrices\u002Fprocurations",{"title":214,"path":215,"stem":216},"Règles transverses","\u002F05-regles-et-matrices\u002Fregles-transverses","05-regles-et-matrices\u002Fregles-transverses",{"title":218,"path":219,"stem":220},"Rôles et autorisations","\u002F05-regles-et-matrices\u002Froles-et-autorisations","05-regles-et-matrices\u002Froles-et-autorisations",{"title":222,"path":223,"stem":224},"Statuts et transitions","\u002F05-regles-et-matrices\u002Fstatuts-et-transitions","05-regles-et-matrices\u002Fstatuts-et-transitions",{"title":226,"icon":227,"path":228,"stem":229,"children":230},"Post-vente","i-lucide-receipt-text","\u002F06-post-vente","06-post-vente",[231,233,238,243,248,253,258,263,268,273],{"title":226,"path":228,"stem":232,"icon":227},"06-post-vente\u002Findex",{"title":234,"path":235,"stem":236,"icon":237},"Concepts de base","\u002F06-post-vente\u002F01-concepts","06-post-vente\u002F01-concepts","i-lucide-puzzle",{"title":239,"path":240,"stem":241,"icon":242},"L'assignation","\u002F06-post-vente\u002F02-assignation","06-post-vente\u002F02-assignation","i-lucide-gavel",{"title":244,"path":245,"stem":246,"icon":247},"La facturation","\u002F06-post-vente\u002F03-facturation","06-post-vente\u002F03-facturation","i-lucide-file-text",{"title":249,"path":250,"stem":251,"icon":252},"Calculs et TVA","\u002F06-post-vente\u002F04-calculs-et-tva","06-post-vente\u002F04-calculs-et-tva","i-lucide-calculator",{"title":254,"path":255,"stem":256,"icon":257},"Le paiement","\u002F06-post-vente\u002F05-paiement","06-post-vente\u002F05-paiement","i-lucide-credit-card",{"title":259,"path":260,"stem":261,"icon":262},"Les flux MangoPay","\u002F06-post-vente\u002F06-flux-mangopay","06-post-vente\u002F06-flux-mangopay","i-lucide-refresh-cw",{"title":264,"path":265,"stem":266,"icon":267},"Avoirs et remboursements","\u002F06-post-vente\u002F07-avoirs-et-remboursements","06-post-vente\u002F07-avoirs-et-remboursements","i-lucide-undo-2",{"title":269,"path":270,"stem":271,"icon":272},"Comptabilité et reporting","\u002F06-post-vente\u002F08-comptabilite-et-reporting","06-post-vente\u002F08-comptabilite-et-reporting","i-lucide-bar-chart-3",{"title":274,"path":275,"stem":276,"icon":277},"Annexes","\u002F06-post-vente\u002F09-annexes","06-post-vente\u002F09-annexes","i-lucide-book-marked",{"title":279,"path":280,"stem":281,"children":282,"icon":284},"Modèles d'e-mails","\u002F07-modeles-emails","07-modeles-emails\u002Findex",[283],{"title":279,"path":280,"stem":281,"icon":284},"i-lucide-mail",{"title":274,"icon":286,"path":287,"stem":288,"children":289,"page":306},"i-lucide-folder","\u002F99-annexes","99-annexes",[290,294,298,302],{"title":291,"path":292,"stem":293},"Édition de la documentation","\u002F99-annexes\u002Fedition-de-la-documentation","99-annexes\u002Fedition-de-la-documentation",{"title":295,"path":296,"stem":297},"Glossaire métier","\u002F99-annexes\u002Fglossaire","99-annexes\u002Fglossaire",{"title":299,"path":300,"stem":301},"Points de vigilance notifications et emails","\u002F99-annexes\u002Fpoints-vigilance-notifications-et-emails","99-annexes\u002Fpoints-vigilance-notifications-et-emails",{"title":303,"path":304,"stem":305},"Vérifier les accès d'un utilisateur","\u002F99-annexes\u002Fverifier-les-acces-d-un-utilisateur","99-annexes\u002Fverifier-les-acces-d-un-utilisateur",false,{"id":308,"title":202,"body":309,"description":919,"extension":920,"links":921,"meta":922,"navigation":923,"path":203,"seo":924,"stem":204,"__hash__":925},"docs\u002F05-regles-et-matrices\u002Fcalcul-des-droits.md",{"type":310,"value":311,"toc":906},"minimark",[312,316,327,332,416,420,423,426,437,441,444,447,453,459,465,472,478,484,488,491,497,501,508,514,528,535,538,542,545,558,564,567,571,589,592,608,614,618,664,668,779,783,797,801,816,880,891,902],[313,314,202],"h1",{"id":315},"calcul-des-droits-daccès",[317,318,319,320,323,324,326],"p",{},"Cette page détaille comment TARS calcule les droits effectifs d'une personne à l'ouverture de sa session. Elle complète ",[321,322,61],"a",{"href":62},", qui décrit où les accès sont définis, et ",[321,325,218],{"href":219},", qui décrit les regroupements d'accès.",[328,329,331],"h2",{"id":330},"ce-qui-entre-dans-le-calcul","Ce qui entre dans le calcul",[333,334,335,348],"table",{},[336,337,338],"thead",{},[339,340,341,345],"tr",{},[342,343,344],"th",{},"Entrée",[342,346,347],{},"Rôle dans le calcul",[349,350,351,360,368,376,384,392,400,408],"tbody",{},[339,352,353,357],{},[354,355,356],"td",{},"Organisation d'appartenance",[354,358,359],{},"Organisation à laquelle la personne est rattachée",[339,361,362,365],{},[354,363,364],{},"Organisation active",[354,366,367],{},"Organisation au nom de laquelle elle agit; différente de la précédente quand elle agit pour une organisation descendante ou pour une organisation mandante (procuration)",[339,369,370,373],{},[354,371,372],{},"Droits délégués de la procuration",[354,374,375],{},"Admin ou rôles métier; une délégation par rôles limite les accès obtenus chez l'organisation mandante",[339,377,378,381],{},[354,379,380],{},"Contrats actifs",[354,382,383],{},"Portent la liste des accès disponibles pour une organisation",[339,385,386,389],{},[354,387,388],{},"Contrats parents transférés",[354,390,391],{},"Contrats d'une organisation parente dont le transfert aux organisations filles est activé",[339,393,394,397],{},[354,395,396],{},"Rôles métier de la personne",[354,398,399],{},"Regroupement d'accès appliqué à la personne",[339,401,402,405],{},[354,403,404],{},"Accès personnalisés de la personne",[354,406,407],{},"Liste d'accès définie manuellement sur sa fiche, qui ne peut que restreindre",[339,409,410,413],{},[354,411,412],{},"Shop",[354,414,415],{},"Les droits sont calculés et vérifiés séparément pour Agorastore et Auctelia",[328,417,419],{"id":418},"cas-1-la-personne-agit-dans-sa-propre-organisation","Cas 1 : la personne agit dans sa propre organisation",[317,421,422],{},"La personne reçoit tous les accès des contrats actifs de son organisation, plus ceux des contrats des organisations parentes dont le transfert aux filles est activé.",[317,424,425],{},"Si ses accès ont été personnalisés, la liste obtenue est filtrée par cette personnalisation.",[427,428,433],"pre",{"className":429,"code":431,"language":432},[430],"language-text","Marion (Renault) opère dans Renault\nContrats Renault : [\"VENDRE\", \"COMMANDER\", \"FACTURER\"]\nMarion sans accès personnalisés → [\"VENDRE\", \"COMMANDER\", \"FACTURER\"]\nMarion avec accès personnalisés [\"VENDRE\"] → [\"VENDRE\"]\n","text",[434,435,431],"code",{"__ignoreMap":436},"",[328,438,440],{"id":439},"cas-2-la-personne-agit-pour-une-autre-organisation","Cas 2 : la personne agit pour une autre organisation",[317,442,443],{},"Ce cas correspond à une procuration : l'organisation de la personne a reçu le droit d'agir pour le compte d'une autre organisation.",[317,445,446],{},"La personne reçoit l'intersection entre ses droits personnels et les droits de l'organisation active. Contrairement au cas 1, la restriction personnelle (accès personnalisés, ou à défaut droits des rôles métier attribués) s'applique ici même si elle vient des rôles métier et pas seulement d'une personnalisation explicite: dès qu'une des deux existe, elle sert de filtre avant l'intersection avec les droits de l'organisation active.",[427,448,451],{"className":449,"code":450,"language":432},[430],"Pierre (Peugeot) opère chez Citroën\nDroits Pierre  : [\"VENDRE\", \"COMMANDER\", \"CONSULTER\"]\nDroits Citroën : [\"COMMANDER\", \"CONSULTER\", \"FACTURER\"]\n→ Résultat : [\"COMMANDER\", \"CONSULTER\"]\n",[434,452,450],{"__ignoreMap":436},[427,454,457],{"className":455,"code":456,"language":432},[430],"Sophie (Renault) opère chez Peugeot\nContrats Renault        : [\"VENDRE\", \"COMMANDER\", \"FACTURER\", \"ADMIN\"]\nAccès personnalisés     : [\"VENDRE\", \"COMMANDER\"]\nDroits Peugeot          : [\"COMMANDER\", \"CONSULTER\"]\n→ Résultat : [\"COMMANDER\"]\n",[434,458,456],{"__ignoreMap":436},[427,460,463],{"className":461,"code":462,"language":432},[430],"Lucas (Citroën) opère chez Renault Sport\nDroits Lucas         : [\"CONSULTER\", \"RAPPORT\"]\nDroits Renault Sport : [\"VENDRE\", \"FACTURER\"]\n→ Résultat : aucun accès\n",[434,464,462],{"__ignoreMap":436},[317,466,467,468,471],{},"Quand le flag ",[434,469,470],{},"PROCURATION"," est actif sur la boutique, la procuration porte en plus des droits délégués. Une délégation par rôles métier ne laisse passer, après l'intersection, que les accès de ces rôles; une délégation Admin ne filtre rien de plus. Sans le flag, toute procuration vaut délégation Admin.",[427,473,476],{"className":474,"code":475,"language":432},[430],"Pierre (Peugeot) opère chez Citroën avec une procuration « Ventes »\nDroits Pierre                : [\"VENDRE\", \"COMMANDER\", \"PUBLIER\"]\nDroits Citroën               : [\"VENDRE\", \"PUBLIER\", \"FACTURER\"]\nAccès du rôle délégué Ventes : [\"PUBLIER\", \"FACTURER\"]\n→ Résultat : [\"PUBLIER\"]\n",[434,477,475],{"__ignoreMap":436},[317,479,480,481,483],{},"Le détail, illustré sur une organisation fictive avec un simulateur, est dans ",[321,482,210],{"href":211},".",[328,485,487],{"id":486},"cas-3-la-personne-agit-pour-une-organisation-descendante","Cas 3 : la personne agit pour une organisation descendante",[317,489,490],{},"Une personne peut aussi agir pour une organisation descendante de la sienne (filiale, service), sans procuration. Le calcul est celui du cas 2, sans filtre de droits délégués : intersection de ses droits personnels et des droits de l'organisation active.",[427,492,495],{"className":493,"code":494,"language":432},[430],"Claire (Métropole de Valbrune) opère dans le Parc auto, organisation fille\nDroits Claire    : [\"VENDRE\", \"COMMANDER\", \"FACTURER\"]\nDroits Parc auto : [\"VENDRE\", \"FACTURER\"]\n→ Résultat : [\"VENDRE\", \"FACTURER\"]\n",[434,496,494],{"__ignoreMap":436},[328,498,500],{"id":499},"héritage-entre-organisations-dun-même-groupe","Héritage entre organisations d'un même groupe",[317,502,503,504,507],{},"Les accès d'une organisation parente ne descendent vers ses organisations filles que si le transfert de contrat est activé sur le contrat parent (champ ",[434,505,506],{},"contract.meta.childTransfer = true",").",[427,509,512],{"className":510,"code":511,"language":432},[430],"Renault (parent)\n├── Renault Sport (enfant)\n└── Renault Trucks (enfant)\n",[434,513,511],{"__ignoreMap":436},[317,515,516,517,520,521,524,525,483],{},"Avec un contrat Renault ",[434,518,519],{},"[\"ADMIN\", \"VENDRE\"]"," en transfert activé et un contrat Renault Sport ",[434,522,523],{},"[\"COURSE\", \"TUNING\"]",", un employé de Renault Sport dispose de ",[434,526,527],{},"[\"ADMIN\", \"VENDRE\", \"COURSE\", \"TUNING\"]",[317,529,530,531,534],{},"L'héritage remonte toute la chaîne d'ancêtres, pas seulement le parent direct: pour une organisation donnée, TARS reconstitue d'abord la liste complète de ses ancêtres (parent, grand-parent, etc., avec protection contre les boucles), puis ne retient, pour chaque ancêtre, que ses contrats dont ",[434,532,533],{},"childTransfer"," est activé. Le transfert de chaque niveau reste donc une décision indépendante: un grand-parent peut transférer ses accès sans que le parent intermédiaire ait activé le sien, et inversement.",[317,536,537],{},"Si les accès d'une personne ont été personnalisés, un contrat ajouté ensuite sur son organisation ou transféré par l'organisation parente n'ajoute pas automatiquement ses accès à cette personne. Ces accès deviennent seulement activables manuellement depuis l'onglet « Accès » de sa fiche.",[328,539,541],{"id":540},"séparation-par-shop","Séparation par shop",[317,543,544],{},"Les droits sont calculés et stockés séparément pour chaque shop.",[546,547,548,552,555],"ul",{},[549,550,551],"li",{},"Une organisation peut avoir des contrats distincts par shop, par exemple un contrat acheteur chez Auctelia et un contrat acheteur chez Agorastore.",[549,553,554],{},"La session porte deux listes d'accès, une par shop.",[549,556,557],{},"Pour agir sur un objet, la personne doit détenir l'accès requis dans le shop de cet objet.",[427,559,562],{"className":560,"code":561,"language":432},[430],"Marion (Renault) opère dans Renault\nContrats Renault :\n  Agorastore : [\"ITEM_PUBLISH\", \"ITEM_VIEW\", \"ORDER_CREATE\"]\n  Auctelia   : [\"ITEM_VIEW\", \"AUCTION_CREATE\", \"BID_PLACE\"]\n\nPublier un item dans Agorastore → autorisé\nPublier un item dans Auctelia   → refusé, l'accès n'existe pas dans ce shop\nCréer une enchère dans Auctelia → autorisé\n",[434,563,561],{"__ignoreMap":436},[317,565,566],{},"L'intersection de la procuration s'applique elle aussi shop par shop : une personne peut conserver des droits dans un shop et n'en avoir aucun dans l'autre.",[328,568,570],{"id":569},"format-des-clés-daccès-et-vérification-côté-frontal","Format des clés d'accès et vérification côté frontal",[317,572,573,574,577,578,581,582,577,585,588],{},"Chaque accès existe sous deux formes équivalentes : une forme hiérarchique à points utilisée dans le code (",[434,575,576],{},"DOMAINE.RESSOURCE.ACTION",", par exemple ",[434,579,580],{},"SALES.CONTRACT.MANAGE",") et une forme aplatie utilisée dans les listes de droits de session (",[434,583,584],{},"DOMAINE_RESSOURCE_ACTION",[434,586,587],{},"SALES_CONTRACT_MANAGE","). Les deux formes désignent le même accès du même catalogue fermé.",[317,590,591],{},"Pour vérifier un accès, le frontal :",[593,594,595,598,605],"ol",{},[549,596,597],{},"reconstruit un arbre de droits à partir de la liste plate d'accès du shop actif;",[549,599,600,601,604],{},"si la personne est en mode « Admin de l'organisation » (",[434,602,603],{},"isOrgAdmin","), la vérification retourne vrai sans consulter cet arbre;",[549,606,607],{},"sinon, elle recherche si au moins une des clés demandées est présente dans l'arbre.",[317,609,610,611,613],{},"Ce mécanisme signifie que la garantie « l'admin de l'organisation n'a jamais plus de droits que les contrats » repose entièrement sur la façon dont ",[434,612,603],{}," et la liste de droits de session sont calculées côté serveur; le frontal ne la revérifie pas accès par accès.",[328,615,617],{"id":616},"cas-particuliers","Cas particuliers",[333,619,620,630],{},[336,621,622],{},[339,623,624,627],{},[342,625,626],{},"Situation",[342,628,629],{},"Résultat",[349,631,632,640,648,656],{},[339,633,634,637],{},[354,635,636],{},"L'organisation active n'a aucun contrat",[354,638,639],{},"Aucun accès, quels que soient les droits personnels de la personne",[339,641,642,645],{},[354,643,644],{},"Un accès personnalisé ne figure plus dans aucun contrat de l'organisation",[354,646,647],{},"L'accès est ignoré; les autres restent valables",[339,649,650,653],{},[354,651,652],{},"La personne n'a ni organisation de rattachement ni organisation active",[354,654,655],{},"Aucun droit de session n'est retourné",[339,657,658,661],{},[354,659,660],{},"Profil super admin",[354,662,663],{},"Reçoit l'ensemble des droits disponibles sur tous les shops",[328,665,667],{"id":666},"enchaînement-du-calcul","Enchaînement du calcul",[427,669,673],{"className":670,"code":671,"language":672,"meta":436,"style":436},"language-mermaid shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","flowchart TD\n  start[\"Ouverture de session\"] --> contrats[\"Réunir les contrats actifs de l'organisation et des parents en transfert\"]\n  contrats --> base[\"Constituer les accès de base, par shop\"]\n  base --> perso{\"Accès personnalisés définis ?\"}\n  perso -->|Oui| filtre[\"Filtrer les accès de base par la liste personnalisée\"]\n  perso -->|Non| roles{\"Rôles métier définis ?\"}\n  roles -->|Oui| cumul[\"Retenir les accès des rôles, dans la limite des contrats\"]\n  roles -->|Non| admin[\"Retenir tous les accès des contrats\"]\n  filtre --> contexte{\"Organisation active = organisation d'appartenance ?\"}\n  cumul --> contexte\n  admin --> contexte\n  contexte -->|Oui| resultat[\"Droits effectifs\"]\n  contexte -->|Non| inter[\"Intersection avec les droits de l'organisation active, par shop\"]\n  inter --> delegation{\"Procuration avec des rôles délégués ?\"}\n  delegation -->|Non : descendante ou délégation Admin| resultat\n  delegation -->|Oui| deleguee[\"Ne garder que les accès des rôles délégués\"]\n  deleguee --> resultat\n","mermaid",[434,674,675,683,689,695,701,707,713,719,725,731,737,743,749,755,761,767,773],{"__ignoreMap":436},[676,677,680],"span",{"class":678,"line":679},"line",1,[676,681,682],{},"flowchart TD\n",[676,684,686],{"class":678,"line":685},2,[676,687,688],{},"  start[\"Ouverture de session\"] --> contrats[\"Réunir les contrats actifs de l'organisation et des parents en transfert\"]\n",[676,690,692],{"class":678,"line":691},3,[676,693,694],{},"  contrats --> base[\"Constituer les accès de base, par shop\"]\n",[676,696,698],{"class":678,"line":697},4,[676,699,700],{},"  base --> perso{\"Accès personnalisés définis ?\"}\n",[676,702,704],{"class":678,"line":703},5,[676,705,706],{},"  perso -->|Oui| filtre[\"Filtrer les accès de base par la liste personnalisée\"]\n",[676,708,710],{"class":678,"line":709},6,[676,711,712],{},"  perso -->|Non| roles{\"Rôles métier définis ?\"}\n",[676,714,716],{"class":678,"line":715},7,[676,717,718],{},"  roles -->|Oui| cumul[\"Retenir les accès des rôles, dans la limite des contrats\"]\n",[676,720,722],{"class":678,"line":721},8,[676,723,724],{},"  roles -->|Non| admin[\"Retenir tous les accès des contrats\"]\n",[676,726,728],{"class":678,"line":727},9,[676,729,730],{},"  filtre --> contexte{\"Organisation active = organisation d'appartenance ?\"}\n",[676,732,734],{"class":678,"line":733},10,[676,735,736],{},"  cumul --> contexte\n",[676,738,740],{"class":678,"line":739},11,[676,741,742],{},"  admin --> contexte\n",[676,744,746],{"class":678,"line":745},12,[676,747,748],{},"  contexte -->|Oui| resultat[\"Droits effectifs\"]\n",[676,750,752],{"class":678,"line":751},13,[676,753,754],{},"  contexte -->|Non| inter[\"Intersection avec les droits de l'organisation active, par shop\"]\n",[676,756,758],{"class":678,"line":757},14,[676,759,760],{},"  inter --> delegation{\"Procuration avec des rôles délégués ?\"}\n",[676,762,764],{"class":678,"line":763},15,[676,765,766],{},"  delegation -->|Non : descendante ou délégation Admin| resultat\n",[676,768,770],{"class":678,"line":769},16,[676,771,772],{},"  delegation -->|Oui| deleguee[\"Ne garder que les accès des rôles délégués\"]\n",[676,774,776],{"class":678,"line":775},17,[676,777,778],{},"  deleguee --> resultat\n",[328,780,782],{"id":781},"garanties","Garanties",[546,784,785,788,791,794],{},[549,786,787],{},"Une personne n'obtient jamais plus de droits que ceux ouverts par son organisation, ou que ceux de l'organisation active en cas de procuration.",[549,789,790],{},"Une procuration par rôles métier ne donne jamais plus que les accès des rôles délégués.",[549,792,793],{},"Les accès personnalisés et les rôles métier ne peuvent que restreindre les droits ouverts par les contrats, jamais les étendre.",[549,795,796],{},"L'absence de contrat sur l'organisation active bloque tout accès.",[328,798,800],{"id":799},"mécanique-de-vérification-dun-accès","Mécanique de vérification d'un accès",[317,802,803,804,807,808,811,812,815],{},"Une fois les droits de session calculés (ci-dessus) et transmis au frontal, chaque contrôle d'accès applicatif passe par la bibliothèque partagée ",[434,805,806],{},"@auctelia\u002Faccess-manager",", utilisée aussi bien par les fronts (",[434,809,810],{},"tars-monorepo",") que par le backend (",[434,813,814],{},"auctelia\u002Fapi","):",[546,817,818,825,839,873],{},[549,819,820,821,824],{},"Un profil super admin (",[434,822,823],{},"person.meta.superAdmin",") passe toujours, sans consulter la liste de droits.",[549,826,827,828,831,832,835,836,507],{},"Sinon, la clé d'accès demandée est cherchée dans ",[434,829,830],{},"allSessionAccessRights"," (contrôle global) ou dans ",[434,833,834],{},"sessionAccessRights[shopShortId]"," (contrôle par boutique, ",[434,837,838],{},"canPerformActionByShop",[549,840,841,842,845,846,849,850,853,854,853,857,853,860,853,863,853,866,853,869,872],{},"Pour une action sur un objet lié à une organisation associée (procuration), ",[434,843,844],{},"can()"," vérifie en plus que l'organisation de la personne figure dans la liste des organisations associées à l'objet avec un rôle autorisé (",[434,847,848],{},"AssociatedOrganisationsRoles",": ",[434,851,852],{},"BUYER",", ",[434,855,856],{},"SELLER",[434,858,859],{},"PARTNER",[434,861,862],{},"CREATOR",[434,864,865],{},"EDIT",[434,867,868],{},"OWNER",[434,870,871],{},"VISITOR",") — sauf si la personne est admin, auquel cas ce contrôle est court-circuité.",[549,874,875,876,879],{},"Une action qui ne correspond à aucune clé du catalogue lève une erreur ",[434,877,878],{},"NO_SUCH_ACTION"," plutôt que d'être silencieusement refusée.",[317,881,882,883,886,887,890],{},"Un interrupteur global côté backend (",[434,884,885],{},"featureFlags.enableApplyAccess",") peut désactiver l'ensemble du système d'accès fin: s'il est éteint, toute personne qui n'a pas le rôle contractuel ",[434,888,889],{},"ADMIN"," reçoit malgré tout l'intégralité des accès disponibles sur chaque boutique, comme un profil super admin. C'est un interrupteur de secours\u002Fmigration, pas un réglage courant.",[317,892,893,894,897,898,901],{},"Le catalogue d'accès (~50 clés), la liste exacte des accès par rôle métier et le calcul des droits de session (cas 1, cas 2, héritage de groupe ci-dessus) sont vérifiés directement dans le code du service ",[434,895,896],{},"persons"," (",[434,899,900],{},"retrieveSessionAccessRights","), pas seulement déduits du front.",[903,904,905],"style",{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":436,"searchDepth":685,"depth":685,"links":907},[908,909,910,911,912,913,914,915,916,917,918],{"id":330,"depth":685,"text":331},{"id":418,"depth":685,"text":419},{"id":439,"depth":685,"text":440},{"id":486,"depth":685,"text":487},{"id":499,"depth":685,"text":500},{"id":540,"depth":685,"text":541},{"id":569,"depth":685,"text":570},{"id":616,"depth":685,"text":617},{"id":666,"depth":685,"text":667},{"id":781,"depth":685,"text":782},{"id":799,"depth":685,"text":800},"Cette page détaille comment TARS calcule les droits effectifs d'une personne à l'ouverture de sa session. Elle complète Accès et autorisations, qui décrit où les accès sont définis, et Rôles et autorisations, qui décrit les regroupements d'accès.","md",null,{},true,{"title":202,"description":919},"CSU355oVtIHMaLohMCWdxYZ5icISlu4kzizwZXkvIOQ",[927,929],{"title":198,"path":199,"stem":200,"description":928,"children":-1},"Cette matrice résume les actions possibles dans chaque frontal: la marketplace (market-front), l'espace personnel (customer-front) et l'admin (admin-front), plus l'inventaire terrain (inventory-front) à part.",{"title":206,"path":207,"stem":208,"description":930,"children":-1},"Cette matrice explique qui peut voir les principales données, et à quelle condition.",1792596168185]