Skip to content

Gestion des rôles et permissions

Introduction

Ce document décrit les différents rôles gérés par l’application ainsi que les permissions associées à chacun d’eux.
Il présente également la répartition des droits d’accès sur les différentes ressources d’API, en précisant quels rôles peuvent consommer quels endpoints.
L’objectif est de garantir une compréhension claire du modèle d’autorisation et d’assurer une gouvernance cohérente de la sécurité applicative.


1. Rôles disponibles dans l’application

Nom du rôle Description
ZORNI_ADMIN Dispose de l’ensemble des droits sur tous les modules de l’application. Il peut créer, modifier et supprimer des utilisateurs, gérer les rôles et configurer les paramètres globaux du système.
PRO_SUP_ADMIN Détient tous les droits sur un organisme et sur l’ensemble des établissements qui en dépendent. Il peut créer, modifier et supprimer les administrateurs locaux (PRO_ADMIN) rattachés à ces établissements.
PRO_ADMIN Gère les établissements pour lesquels il est identifié comme administrateur. Il peut administrer les utilisateurs (PRO_USER) de ces établissements et modifier les informations associées à ceux-ci.
PRO_USER Dispose d’un accès en lecture seule aux informations de l’établissement auquel il est rattaché, mais possède des droits de gestion complets sur les circuits dont il est responsable.
PART_USER Rôle attribué aux clients utilisant l’application. Il permet l’accès aux fonctionnalités dédiées aux clients de l'application.

2. Permissions sur les ressources d’API

2.1 Permissions par endpoint — API PersonsApi

Endpoint ID Verbe Endpoint Rôles autorisés Commentaires
addPerson POST /persons Vérifier la possibilité d'ajouter un role technique
listPerson GET /persons PRO_SUP_ADMIN, PRO_ADMIN 1) Contôler si la personne connecté dispose d'un des droits indiqués. 2) Récuperer uniquement la listes des personnes rattachées aux établissements en question
getPerson GET /persons/{person-id} PRO_ADMIN, PRO_USER, PART_USER Contrôler l'id de la personne connecté et l'id de la personne demandé
putPerson PUT /persons/{person-id} PRO_ADMIN, PRO_USER, PART_USER Contrôler l'id de la personne connecté et l'id de la personne demandé
deletePerson DELETE /persons/{person-id} PRO_ADMIN, PRO_USER, PART_USER Contrôler l'id de la personne connecté et l'id de la personne demandé
addFavorites POST /persons/{person-id}/favorites PART_USER Contrôler l'id de la personne connecté et l'id de la personne passé en param
listFavorites GET /persons/{person-id}/favorites PART_USER Contrôler l'id de la personne connecté et l'id de la personne passé en param
deleteFavorite DELETE /persons/{person-id}/favorites/{favorite-id} PART_USER Contrôler l'id de la personne connecté et l'id de la personne passé en param
addAttachment POST /persons/{person-id}/attachments PRO_SUP_ADMIN, PRO_ADMIN Vérifier si la personne passée en param appartient à l'une des établissements dont la parsonne connecté dispose un des droits indiqués
listAttachments GET /persons/{person-id}/attachments PRO_SUP_ADMIN, PRO_ADMIN Vérifier si la personne passée en param appartient à l'une des établissements dont la parsonne connecté dispose un des droits indiqués
deleteAttachment DELETE /persons/{person-id}/attachments PRO_SUP_ADMIN, PRO_ADMIN Vérifier si la personne passée en param appartient à l'une des établissements dont la parsonne connecté dispose un des droits indiqués. (Il faut transformer l'id attachement en path param)

2.2 Permissions par endpoint — API partnersApi

Endpoint ID Verbe Endpoint Rôles autorisés Commentaires
addOrganization POST /partners/organizations PRO_SUP_ADMIN
listOrganizations GET /partners/organizations ZORNI_ADMIN
getOrganization GET /partners/organizations/{organization-id} PRO_SUP_ADMIN, PRO_ADMIN, PRO_USER Contrôler l'attachement de la personne connectée à l'organisation demandée
putOrganization PUT /partners/organizations/{organization-id} PRO_SUP_ADMIN Contrôler l'attachement de la personne connectée à l'organisation demandée
deleteOrganization DELETE /partners/organizations/{organization-id} PRO_SUP_ADMIN Contrôler l'attachement de la personne connectée à l'organisation demandée
activateOrganization PUT /partners/organizations/{organization-id}/activate Role pour api Technique ?
deactivateOrganization PUT /partners/organizations/{organization-id}/deactivate Role pour api Technique ?
addEstablishment POST /partners/establishments PRO_SUP_ADMIN Contrôler l'attachement de la personne connectée à l'organisation mère
listEstablishments GET /partners/establishments PRO_SUP_ADMIN, PRO_ADMIN 1) Contrôler l'attachement de la personne connectée à l'organisation mère si PRO_SUP_ADMIN, 2) Contrôler l'attachement de la personne connectée aux établissements demandées si PRO_ADMIN
getEstablishment GET /partners/establishments/{establishment-id} PRO_SUP_ADMIN, PRO_ADMIN, PRO_USER 1) Contrôler l'attachement de la personne connectée à l'organisation mère si PRO_SUP_ADMIN, 2) Contrôler l'attachement de la personne connectée à établissement demandée si PRO_ADMIN ou PRO_USER
putEstablishment PUT /partners/establishments/{establishment-id} PRO_SUP_ADMIN, PRO_ADMIN 1) Contrôler l'attachement de la personne connectée à l'organisation mère si PRO_SUP_ADMIN, 2) Contrôler l'attachement de la personne connectée à établissement demandée si PRO_ADMIN
deleteEstablishment DELETE /partners/establishments/{establishment-id} PRO_SUP_ADMIN Contrôler l'attachement de la personne connectée à l'organisation mère

2.3 Permissions par endpoint — API travelsApi

Endpoint ID Verbe Endpoint Rôles autorisés Commentaires
addTrip POST /travels/trips PRO_ADMIN, PRO_USER Contrôler l'attachement de la personne connectée à établissement demandée
deleteMultipleTrips DELETE /travels/trips PRO_ADMIN, PRO_USER Contrôler l'attachement de la personne connectée à établissement demandée
listTrip GET /travels/trips PRO_ADMIN, PRO_USER Contrôler l'attachement de la personne connectée à établissement demandée
getTrip GET /travels/trips/{trip-id} PRO_ADMIN, PRO_USER Contrôler l'attachement de la personne connectée à établissement demandée
putTrip PUT /travels/trips/{trip-id} PRO_ADMIN, PRO_USER Contrôler l'attachement de la personne connectée à établissement demandée
deleteTrip DELETE /travels/trips/{trip-id} PRO_ADMIN, PRO_USER Contrôler l'attachement de la personne connectée à établissement demandée
listPublications GET /travels/publications ALL si (establishmentIds = null && publicationIds=null)
listPublications GET /travels/publications PRO_ADMIN, PRO_USER 1) Si (establishmentIds != null
archivePublications PUT /travels/publications PRO_ADMIN, PRO_USER Contrôler l'attachement de la personne connectée à établissement demandée
getPublication GET /travels/publications/{publication-id} ALL
putPublication PUT /travels/publications/{publication-id} PRO_ADMIN, PRO_USER Contrôler l'attachement de la personne connectée à établissement demandée
deletePublication DELETE /travels/publications/{publication-id} PRO_ADMIN, PRO_USER Contrôler l'attachement de la personne connectée à établissement demandée
publishPublication POST /travels/publications/{publication-id}/publish PRO_ADMIN, PRO_USER Contrôler l'attachement de la personne connectée à établissement demandée
managePlaces POST /travels/publications/{publication-id}/manage-place Role pour api Technique ?
getTripPricing POST /travels/pricing PRO_ADMIN, PRO_USER, PART_USER
addReservation POST /travels/reservations PART_USER
listReservations GET /travels/reservations PRO_ADMIN, PRO_USER, PART_USER si PRO_ADMIN, PRO_USER Contrôler l'attachement de la personne connectée à établissement demandée
getReservation GET /travels/reservations/{reservation-id} PRO_ADMIN, PRO_USER, PART_USER si PRO_ADMIN, PRO_USER Contrôler l'attachement de la personne connectée à établissement demandée
putReservation PUT /travels/reservations/{reservation-id} PART_USER
deleteReservation DELETE /travels/reservations/{reservation-id} Role pour api Technique ?
addOpinion POST /travels/opinions PART_USER Contrôler si l'utilisateur qui a demandé cette resource a bien effectué une résrvation sur la publication passée en param
listOpinions GET /travels/opinions ALL
getOpinion GET /travels/opinions/{opinion-id} ALL
putOpinion PUT /travels/opinions/{opinion-id} PART_USER Contrôler l'attachement de la personne connectée à l'opinion en question
deleteOpinion DELETE /travels/opinions/{opinion-id} PART_USER Contrôler l'attachement de la personne connectée à l'opinion en question

2.4 Permissions par endpoint — API TransactionsApi

Endpoint ID Verbe Endpoint Rôles autorisés Commentaires
createTransaction POST /transactions Role pour api Technique ?

2.5 Permissions par endpoint — API communicationApi

Endpoint ID Verbe Endpoint Rôles autorisés Commentaires
sendMail POST /communication/mail Rôle pour api Technique ? Envoi d’un e-mail.
sendContactMessage POST /communication/contact ALL Création d’un message de contact via le formulaire “Contactez-nous”.
listContactMessage GET /communication/contact ZORNI_ADMIN Liste paginée des messages de contact.
getContactMessage GET /communication/contact/{contactMessage_id} ZORNI_ADMIN Récupération d’un message de contact spécifique.
addConversation POST /communication/conversations PART_USER Création d’une conversation entre un client et un agent.
listConversation GET /communication/conversations PRO_USER, PART_USER Contrôler si l'id de la personne conncetée correcpand à assignedAgentId ou customerId
getConversation GET /communication/conversations/{conversation-id} PRO_USER, PART_USER Contrôler si l'id de la personne conncetée correcpand à assignedAgentId ou customerId
putConversation PUT /communication/conversations/{conversation-id} PRO_USER, PART_USER Contrôler si l'id de la personne conncetée correcpand à assignedAgentId ou customerId
assignConversation PATCH /communication/conversations/{conversation-id} PRO_USER Contrôler si l'id de l'établissement de la personne conncetée correcpand à establishmentId de la conversation
listMessages GET /communication/conversations/{conversation-id}/messages PRO_USER, PART_USER Contrôler si l'id de la personne conncetée correcpand à assignedAgentId ou customerId

2.6 Permissions par endpoint — API notificationsApi

Endpoint ID Verbe Endpoint Rôles autorisés Commentaires
addNotification POST /notifications NO_ONE Evenet Kafka (possibilitée de supprimer la resource)
listNotifications GET /notifications PRO_USER, PART_USER Contrôler si l'id de la personne conncetée correcpand à receiver-id
getNotification GET /notifications/{notification-id} PRO_USER, PART_USER Contrôler si l'id de la personne conncetée correcpand à receiver-id
putNotification PUT /notifications/{notification-id} NO_ONE Evenet Kafka (possibilitée de supprimer la resource)

2.7 Permissions par endpoint — API uploadApi

Endpoint ID Verbe Endpoint Rôles autorisés Commentaires
uploadFlie POST /upload PRO_ADMIN, PRO_USER, PART_USER Chargement d’un fichier sur le serveur.
putUpload PUT /upload/{upload-id} PRO_ADMIN, PRO_USER, PART_USER Modification d’un fichier existant.
deleteUpload DELETE /upload/{upload-id} PRO_ADMIN, PRO_USER, PART_USER Suppression d’un fichier précédemment chargé.

2.8 Permissions par endpoint — API monitoringApi

Endpoint ID Verbe Endpoint Rôles autorisés Commentaires
getPartnerSummary GET /monitoring/summary PRO_ADMIN, PRO_USER Contrôler si la personne conncetéee est attachée à establishmentId passé dans les params

2.9 Permissions par endpoint — API taskApi (Dépriorisé pour le moment)

Endpoint ID Verbe Endpoint Rôles autorisés Commentaires
addTask POST /task Création d’une tâche en tant qu’objet métier.
listTask GET /task Liste l’ensemble des tâches existantes.
getTask GET /task/{task-id} Récupération d’une tâche à partir de son identifiant.
putTask PUT /task/{task-id} Modification d’une tâche existante.