Connexion (Keycloak + NextAuth)
Les utilisateurs se connectent via Keycloak (OpenID Connect) ; NextAuth gère la session. À la connexion, Solya lit les groupes Keycloak de l’utilisateur :- Les groupes suivent la convention
tenant-<org-name>(p. ex.tenant-adidas). Chacun se résout en une organisation interne. - Le groupe spécial
ops-adminsmarque un administrateur opérationnel.
La session
Une session porte l’organisation active et l’accès effectif de l’utilisateur dedans :organizationId/organizationName— l’organisation active.availableOrganizationIds— chaque organisation à laquelle l’utilisateur peut accéder.defaultOrganizationId— l’organisation de secours.roleseteffectivePermissions— les rôles de l’utilisateur et l’union des permissions (directes + équipe) dans l’organisation active.currency,languageet un flagisOpsAdmin.
Portée d’organisation (multi-tenancy)
Chaque entité est limitée parorganizationId, et l’organisation active est dérivée
de la session authentifiée, jamais de l’entrée client. Les actions serveur et les routes API
résolvent l’organisation, puis les services exécutent toutes les requêtes par rapport à elle — donc un utilisateur ou un token
ne peut jamais lire ou écrire que les données de sa propre organisation.
Changer d’organisation
Un utilisateur appartenant à plusieurs organisations en a une active sélectionnée parmi (dans l’ordre) : leur choix enregistré, puis leur défaut, puis la première disponible. Changer réactive l’organisation active pour les requêtes suivantes ; les rôles et permissions sont ré-résolus pour l’org nouvellement active.Deux façons de se connecter
| Appelant | Mécanisme |
|---|---|
| Navigateur (humain) | Cookie de session NextAuth établi via Keycloak |
| Programme / agent | Token de compte de service Authorization: Bearer solya_sa_… (limité à l’organisation) — voir Authentification |

