From 6fe4818743259e5129b92307f0f7f01c93f0baed Mon Sep 17 00:00:00 2001 From: Quentin BEY Date: Wed, 20 Nov 2024 16:56:33 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=93=9D(docs)=20light=20doc=20about=20org?= =?UTF-8?q?=20&=20SP?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This introduces a very light documentation about the newly introduced models. --- docs/organizations.md | 41 ++++++++++++++++++++++++++++++++++++++++ docs/serviceProviders.md | 28 +++++++++++++++++++++++++++ 2 files changed, 69 insertions(+) create mode 100644 docs/organizations.md create mode 100644 docs/serviceProviders.md diff --git a/docs/organizations.md b/docs/organizations.md new file mode 100644 index 0000000..cdbd924 --- /dev/null +++ b/docs/organizations.md @@ -0,0 +1,41 @@ +# Organization model + +## Purpose + +The initial `Organization` model allows to regroup `User` and `Team` under a same object. + +While the purpose was purely technical in the first place, few features emerged afterward. + + +## Link with the `User` model + +Each user must have a "default" organization. + +When a user logs in: + +- The backend tries to get an existing organization from a "registration ID" or from the user's mail domain +- If the organization does not exist, it is created using the "registration ID" and fallbacks on the user's mail domain +- The user organization is set to this organization. + +**Note:** While deploying the new code, we allow the already existing user to not have one. + + +## Link with the `Team` model + +Each team must have an organization. This organization is not defined by the user, but automatically set +using the user's organization. + +The team's organization does not restrict the users who can be added to the team. + +There is currently no feature relying on the team organization. + +**Note:** While deploying the new code, we allow the teams to not have one. + + +## Organization-related features + +### Organization UI + +A new interface can be created to allow users to see all members of an organization. +This could be used along with the contacts. + diff --git a/docs/serviceProviders.md b/docs/serviceProviders.md new file mode 100644 index 0000000..4426600 --- /dev/null +++ b/docs/serviceProviders.md @@ -0,0 +1,28 @@ +# ServiceProvider model + +## Purpose + +The `ServiceProvider` model represents a ... service provider, also known as "tools using some data from this project". + + +## Link with the `Organization` model + +An organization can be linked to several service providers. +The goal here, is to allow users of an organization to have access, to a service provider or not. +The first implementation does not have any feature related, but the first feature will probably be +to list applications visible in the "all application menu" (aka "la gaufre"). + + +## Link with the `Team` model + +A team can be linked to several service providers. +This is used as a filter when a service provider calls the resource server, only the teams linked to +this service provider are returned. This is mandatory for data segregation: we don't want all service +providers to be able to list all data regarding other service providers. + + +## Limitations + +There is currently no way to provision all the service providers automatically. So when a service provider +creates a team via the resource server, we create the `ServiceProvider` on the fly, without any understandable name. +This will need to be improved later.