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