Accès et autorisations
Accès et autorisations
Les accès déterminent ce qu'un utilisateur peut voir ou faire. Dans TARS, une autorisation dépend de la personne, de son organisation active, de ses rôles, des contrats, du shop, du statut de l'objet et parfois de droits plus fins.
Notions
| Notion | Définition fonctionnelle |
|---|---|
| Personne | Compte utilisateur nominatif |
| Organisation active | Entité au nom de laquelle la personne agit |
| Rôle | Fonction métier de l'organisation ou de la personne: acheteur, vendeur, admin organisation, finance, etc. |
| Droit | Autorisation précise: consulter, créer, modifier, valider, supprimer, payer |
| Access key | Autorisation fine nommée, cochée sur un contrat pour l'ouvrir à une organisation, ou sur la fiche d'une personne pour restreindre les siennes |
| Rôle métier | Regroupement d'access keys attribuable à un utilisateur d'une organisation cliente |
| Contrat | Support des accès ouverts à une organisation |
| Admin global | Utilisateur interne avec pouvoirs élargis selon son périmètre |
| Shop | Contexte de vente ou de configuration qui peut modifier les règles |
Règle générale
Un utilisateur ne doit jamais obtenir plus de droits que ce que permettent son organisation active, ses rôles, ses contrats et son profil.
Où les accès sont définis
Les accès sont portés par les contrats. C'est dans les contrats rattachés à une organisation qu'on coche les accès, qui se répercutent ensuite sur l'organisation et sur ses utilisateurs.
| Niveau | Où | Ce qu'on y fait |
|---|---|---|
| Organisation | Onglet « Accès » du contrat, dans l'admin | Ouvrir les accès disponibles pour toute l'organisation, regroupés par thème |
| Personne, côté admin | Onglet « Accès » de la fiche utilisateur | Choisir le mode d'attribution et, si besoin, restreindre les accès de cette personne |
| Personne, côté client | Onglet « Utilisateurs » du menu Organisation, dans l'espace personnel | Attribuer des rôles aux utilisateurs de son organisation |
Certains thèmes d'accès, notamment « Interne » et « Super », ne servent qu'aux utilisateurs internes. La majorité des accès d'une organisation cliente sont posés par les contrats automatiques créés à son onboarding.
Modes d'attribution des droits d'une personne
Trois modes s'excluent, selon un ordre de priorité fixe.
| Mode | Effet | Quand il s'applique |
|---|---|---|
| Personnalisé | La personne dispose uniquement des accès cochés manuellement, dans la limite des contrats de son organisation | Dès que des accès personnalisés sont définis sur sa fiche; ses rôles métier sont alors ignorés |
| Rôles métier | La personne dispose des accès réunis par les rôles qui lui sont attribués, dans la limite des contrats | Aucun accès personnalisé, au moins un rôle attribué |
| Admin de l'organisation | La personne dispose de tous les accès ouverts par les contrats de son organisation | Ni accès personnalisé ni rôle; c'est le mode par défaut à la création d'un utilisateur, depuis l'admin comme depuis l'espace personnel |
flowchart TD
start["Calcul des droits d'une personne"] --> perso{"Accès personnalisés définis ?"}
perso -->|Oui| modePerso["Mode personnalisé: ces accès uniquement, rôles ignorés"]
perso -->|Non| roles{"Rôles métier attribués ?"}
roles -->|Oui| modeRoles["Mode rôles: accès réunis par les rôles"]
roles -->|Non| modeAdmin["Mode admin de l'organisation: tous les accès des contrats"]
Le détail du calcul, y compris l'héritage entre organisations d'un même groupe, les procurations et la séparation par shop, est décrit dans Calcul des droits d'accès. La liste des rôles métier et des accès qu'ils réunissent est décrite dans Rôles et autorisations. Le fonctionnement des procurations, illustré sur une organisation fictive, est décrit dans Procurations et organisations complexes.
Sélection des accès dans l'admin
Depuis l'onglet « Accès » de la fiche utilisateur :
- « Admin de l'organisation » est coché par défaut et affiche l'ensemble des accès des contrats de l'organisation, sans possibilité de les modifier.
- « Rôles » ouvre un menu déroulant permettant de sélectionner un ou plusieurs rôles. Les accès affichés se mettent à jour, sans être modifiables : un rôle réunit toujours les mêmes accès. Un accès prévu par un rôle mais absent des contrats de l'organisation reste décoché.
- « Personnalisé » permet de retirer des accès par rapport à la liste disponible pour l'organisation. On ne peut jamais en ajouter au-delà des contrats.
- Revenir sur « Admin de l'organisation » réinitialise les accès : la personne récupère l'ensemble des accès de son organisation.
Gestion des accès depuis l'espace personnel
La page « Utilisateurs », dans le menu « Organisation », liste les utilisateurs rattachés à l'organisation avec leur identité, le statut de leur compte et leurs rôles.
Une personne disposant de l'accès de gestion des utilisateurs peut en plus :
- modifier les rôles des autres utilisateurs, sauf ceux dont les accès sont personnalisés;
- inviter un nouvel utilisateur depuis l'onglet « Gestion des invitations » et lui attribuer ses rôles dès l'invitation.
Les rôles définis depuis l'espace personnel se retrouvent dans l'onglet « Accès » de la fiche utilisateur côté admin, et inversement.
Workflow d'autorisation
flowchart TD
action["Action demandée"] --> session{"Session valide ?"}
session -->|Non| refuseSession["Refuser: connexion requise"]
session -->|Oui| organisation{"Organisation active compatible ?"}
organisation -->|Non| refuseOrganisation["Refuser: mauvais contexte"]
organisation -->|Oui| droits["Calculer rôles, contrats et access keys"]
droits --> autorise{"Droit disponible ?"}
autorise -->|Non| refuseDroit["Refuser: droit absent"]
autorise -->|Oui| statut{"Statut de l'objet compatible ?"}
statut -->|Non| refuseStatut["Refuser: statut bloquant"]
statut -->|Oui| sensible{"Action sensible ?"}
sensible -->|Oui| audit["Autoriser et tracer"]
sensible -->|Non| autorisation["Autoriser l'action"]
Ce qui est implémenté
- Les droits de session sont calculés depuis les contrats actifs de l'organisation.
- Les contrats des organisations parentes peuvent être pris en compte uniquement quand le transfert aux enfants est autorisé.
- Quand une personne agit pour une autre organisation, TARS applique l'intersection entre les droits de la personne et ceux de l'organisation active.
- Les access keys d'une personne et ses rôles métier peuvent restreindre les droits issus des contrats.
- Un profil super admin reçoit l'ensemble des droits disponibles sur tous les shops.
- Sans organisation de rattachement ou organisation active, aucun droit de session n'est retourné.
- L'accès à une URL de document exige une session et un lien autorisé avec l'organisation concernée, ou un profil admin compatible.
- Les frontaux consomment l'utilisateur, l'organisation active, les droits et les entitlements via un contexte de session commun.
- Le parcours d'enchère rafraîchit les droits après une enchère placée.
- Une personne en mode « Admin de l'organisation » (
isOrgAdmin) passe systématiquement les vérifications d'accès du frontal, sans re-vérification clé par clé côté client; la garantie qu'elle ne dépasse pas les accès de ses contrats est appliquée lors du calcul de ce statut, pas au moment de la vérification. - L'accès à une plateforme (admin, espace personnel, marketplace) est vérifié en plus de l'accès à l'action elle-même: une personne peut détenir un accès sans pouvoir atteindre la plateforme qui l'exploite.
- Chaque route protégée de l'admin et de l'espace personnel peut déclarer la liste des accès requis pour l'atteindre; si aucun de ces accès n'est présent, la navigation est redirigée vers une page d'erreur dédiée avant le chargement du contenu.
Actions contrôlées
| Action | Contrôle métier |
|---|---|
| Connexion | Compte connu, mot de passe ou méthode d'authentification valide, compte non bloqué |
| Changement d'organisation | La personne doit appartenir à l'organisation cible |
| Lecture d'un objet | L'objet doit être public ou rattaché à l'organisation/personne autorisée |
| Création | L'utilisateur doit avoir le droit de créer dans le domaine concerné |
| Modification | L'utilisateur doit avoir le droit et l'objet doit être dans un statut modifiable |
| Validation | Action réservée aux profils autorisés, souvent admin ou compliance |
| Suppression | Action limitée, toujours contrôlée par le statut et l'historique |
| Paiement | Facture payable, utilisateur autorisé, contexte financier valide |
Accès nommés et actions associées
Chaque accès porte un nom composé du domaine (thème), de la ressource et de l'action, par exemple SALES.CONTRACT.MANAGE dans le code, exposé côté session sous la forme aplatie SALES_CONTRACT_MANAGE. La liste des accès est un catalogue fermé et centralisé (le code ne permet pas d'en inventer un autre à la volée) ; en pratique, une vérification d'accès porte toujours sur une clé de ce catalogue.
Les principaux, côté organisation cliente :
| Accès | Ce qu'il autorise | Où l'effet est visible |
|---|---|---|
PURCHASE_BID_CREATE | Enchérir sur un lot en vente | Marketplace, formulaire d'enchère |
ITEM_ITEM_MANAGE | Créer et modifier des fiches produit | Admin et espace personnel, formulaire d'item |
ITEM_ITEM_PUBLISH | Rendre un item visible sur la marketplace, valider un item en admin | Bascule de visibilité sur la fiche item; bouton de validation d'item en admin |
ITEM_ITEM_DELETE / ITEM_ITEM_REMOVE | Supprimer une fiche item, ou la retirer de la vente sans la supprimer | Admin et espace personnel, fiche item |
ITEM_ITEM_AUTHORISATION | Gérer les autorisations d'achat requises sur un item (catégories professionnelles) | Fiche item, section autorisations |
SALES_ITEM_MANAGE | Créer et modifier des ventes et leurs lots | Espace personnel, mise en vente et brouillons |
SALES_ITEM_ASSIGN / SALES_ITEM_MANUAL_ASSIGN | Affecter un item à une vente, y compris manuellement | Admin, affectation des items |
SALES_SALES_INVOICE_MANAGE | Consulter et gérer les factures de vente | Espace personnel et admin, section Factures d'une vente |
SALES_SALES_INVOICE_GENERATE / SALES_SALES_INVOICE_VALIDATE / SALES_SALES_INVOICE_DELETE | Générer, valider ou supprimer une facture de vente | Admin, workflow factures |
SALES_COMMISSION_INVOICE_GENERATE / SALES_COMMISSION_INVOICE_MANAGE | Générer et gérer une facture de commission | Admin, workflow factures de commission |
SALES_CONTRACT_MANAGE | Créer et modifier des contrats (hors contrats gabarits, réservés à INTERNAL_TEMPLATE_MANAGE) | Admin, onglet Contrats de l'organisation |
SALES_CONTRACT_ARCHIVE | Archiver un contrat | Admin, onglet Contrats de l'organisation |
SALES_ORGANISATION_LOGAS | Se connecter à la place d'une organisation (impersonation) | Admin, fiche organisation |
SALES_ORGANISATION_MANAGE / SALES_ORGANISATION_DELETE | Gérer ou supprimer une organisation (usage interne) | Admin, fiche organisation |
SALES_USER_MANAGE | Gérer un utilisateur (variante du thème Sales, distincte de ORGANISATION_USER_MANAGE) | Admin legacy (V1); pas encore consommée dans le code de l'admin moderne exploré |
SALES_BID_ASSIGN / SALES_BID_MANUAL_ASSIGN | Attribuer une enchère, y compris manuellement | Admin legacy (V1); pas encore consommée dans le code de l'admin moderne exploré |
SALES_SLIPS_GENERATE | Générer des bordereaux | Admin legacy (V1); pas encore consommée dans le code de l'admin moderne exploré |
ORGANISATION_ADDRESS_MANAGE | Ajouter, modifier et supprimer les adresses de l'organisation | Espace personnel, Mon organisation |
ORGANISATION_USER_MANAGE | Inviter, modifier, valider, bloquer, débloquer et supprimer les utilisateurs de l'organisation | Espace personnel et admin, page Utilisateurs |
ORGANISATION_USER_DELETE | Supprimer un utilisateur de l'organisation | Admin, fiche utilisateur |
ORGANISATION_ORGANISATION_MANAGE | Modifier les données de l'organisation elle-même (profil, paramètres) | Admin et espace personnel, fiche organisation |
ORGANISATION_ORGANISATION_MERGE | Fusionner deux organisations | Admin, fiche organisation |
ORGANISATION_DOCUMENT_MANAGE | Gérer les documents de l'organisation | Espace personnel et admin, documents |
ORGANISATION_STATS_EXTRACT | Extraire des statistiques de l'organisation | Espace personnel, statistiques |
ORGANISATION_CONTRACT_SIGN | Signer un contrat | Admin legacy (V1); pas encore consommée dans le code de l'admin moderne exploré |
SEANCE_SEANCE_MANAGE / SEANCE_SEANCE_PUBLISH / SEANCE_SEANCE_DELETE | Gérer, publier ou supprimer une séance de vente | Admin, séances |
EVENT_EVENT_MANAGE | Gérer un événement (rendez-vous, visite) | Admin, événements |
EVENT_SALES_INVOICE_MANAGE | Gérer une facture de vente dans le contexte d'un événement | Admin legacy (V1); pas encore consommée dans le code de l'admin moderne exploré |
FINANCE_SALES_INVOICE_MANAGE / FINANCE_SALES_INVOICE_EDIT | Gérer et éditer les factures de vente côté finance | Admin, module finance |
FINANCE_SERVICE_INVOICE_GENERATE / ..._VALIDATE / ..._DELETE | Générer, valider ou supprimer une facture de service | Admin legacy (V1); pas encore consommée dans le code de l'admin moderne exploré |
FINANCE_PAYMENT_MANAGE | Gérer les paiements | Admin, module finance |
FINANCE_CREDIT_NOTE_MANAGE / ..._GENERATE / ..._EDIT / ..._VALIDATE / ..._DELETE | Gérer le cycle de vie des avoirs | Admin, module finance |
FINANCE_COMMISSION_INVOICE_EDIT / ..._VALIDATE / ..._DELETE | Gérer les factures de commission | Admin, module finance |
SUPER_ITEM_STATUS_MANAGE | Forcer manuellement le statut d'un lot, en dehors du workflow standard | Admin, garde-fou réservé aux super-admins |
SUPER_BID_MANAGE / SUPER_BID_DELETE | Gérer ou supprimer une enchère hors workflow standard | Admin, garde-fou réservé aux super-admins |
SUPER_CONTRACT_DELETE | Supprimer un contrat | Admin, garde-fou réservé aux super-admins |
INTERNAL_ADMIN_USERS_MANAGE / INTERNAL_BRAND_MANAGE / INTERNAL_CATEGORY_MANAGE / INTERNAL_MODEL_MANAGE / INTERNAL_STATS_MANAGE / INTERNAL_TEMPLATE_MANAGE | Gérer les référentiels internes (utilisateurs admin, marques, catégories, modèles, statistiques globales, contrats gabarits) | Admin uniquement |
Cette liste reprend l'intégralité du catalogue AccessKeys du package partagé @auctelia/access-manager (consommé aussi bien par les fronts de tars-monorepo que par le backend auctelia/api), soit une cinquantaine de clés au total. Certaines n'apparaissent pour l'instant que dans l'admin legacy (V1) et ses traductions: elles restent valides et actives côté droits, mais aucun usage n'a été retrouvé dans le code de l'admin moderne exploré — signe probable d'un écart de parité entre les deux versions plutôt que d'un accès obsolète.
Ces accès sont regroupés par thème (INTERNAL, FINANCE, SALES, SUPER, PURCHASE, ORGANISATION, SEANCE, EVENT, ITEM), ce qui correspond aux thèmes affichés dans l'onglet « Accès » d'un contrat. Les thèmes INTERNAL et SUPER ne comportent que des accès à usage interne.
Quand l'accès manque, le frontal ne réagit pas toujours de la même façon : l'action peut être masquée, désactivée, ou échouer avec un message explicite au moment du clic. Par exemple, une personne disposant de ITEM_ITEM_MANAGE sans ITEM_ITEM_PUBLISH voit l'item et peut l'enregistrer, mais la bascule de publication reste grisée; une personne sans ORGANISATION_USER_MANAGE voit la liste des utilisateurs sans les boutons d'invitation, de blocage et de modification; une personne sans PURCHASE_BID_CREATE voit le formulaire d'enchère et reçoit un message d'erreur au clic. Certaines pages entières sont protégées en amont : la navigation vers une route déclarée avec une liste d'accès requis redirige vers une page d'erreur (403) si aucun des accès n'est présent, avant même l'affichage du contenu.
Effets du changement d'organisation
Quand l'utilisateur change d'organisation active:
- ses ventes accessibles changent;
- ses factures accessibles changent;
- ses documents visibles changent;
- ses limites d'enchère peuvent changer;
- ses contrats applicables changent;
- ses rôles admin organisation peuvent changer;
- ses actions marketplace peuvent être autorisées ou bloquées.
Blocages courants
| Blocage | Explication utilisateur |
|---|---|
| Non connecté | L'action exige une session |
| Mauvaise organisation | L'utilisateur agit depuis une organisation qui n'a pas accès à l'objet |
| Droit absent | Le rôle ou contrat ne permet pas l'action |
| Statut incompatible | L'objet n'est plus dans une étape modifiable |
| Document manquant | Une validation ou enchère exige un document conforme |
| Contrat absent | L'organisation n'a pas le contrat requis |
| Compte bloqué | La personne ou l'organisation est au statut BLOCKED |
Le statut d'une personne suit une progression TO_VALIDATE → EMAIL_VALIDATED → MOBILE_VALIDATED → VALIDATED → COMPLETED, avec deux statuts de sortie possibles à tout moment : DISABLED et BLOCKED (le statut ARCHIVED clôt le compte). Une personne bloquée (BLOCKED) ne peut être débloquée que depuis ce statut précis; un admin disposant de ORGANISATION_USER_MANAGE peut bloquer une personne dans n'importe quel statut de la progression, hors BLOCKED, et la débloquer seulement si elle est BLOCKED. L'organisation suit une logique de statuts comparable (TO_VALIDATE, VALIDATED, DISABLED, BLOCKED, ARCHIVED).
Interaction frontaux
| Frontal | Rôle des autorisations |
|---|---|
| Marketplace | Permettre ou bloquer suivi, questions, enchères et accès ventes privées |
| Espace personnel | Filtrer achats, ventes, documents, factures et organisations |
| Admin | Limiter les actions internes selon le périmètre de responsabilité |
Pour lever un doute entre le paramétrage et les droits réellement appliqués à une session, voir Vérifier les accès d'un utilisateur.
Domaines fonctionnels
Les domaines fonctionnels de TARS correspondent aux grands objets que la plateforme gère. Chaque domaine peut apparaître dans plusieurs frontaux, mais les droits et les usages changent selon le contexte.
Adresses
Les adresses servent à identifier les lieux utiles aux parcours: siège, facturation, retrait, livraison, visite, rendez-vous ou informations contractuelles.