Skip to content

fix(auth): renvoyer les rôles admin dérivés des groupes OIDC dans la charge utile de session - #2837

Merged
shikanime merged 1 commit into
mainfrom
fix/auth-session-admin-role-ids
Oct 8, 2026
Merged

shikanime merged 1 commit into
mainfrom
fix/auth-session-admin-role-ids

Conversation

@shikanime

Copy link
Copy Markdown
Member

Pourquoi

Depuis la bascule de GET /api/v1/auth vers server-nestjs (cef4b7c), la charge utile de session ne renvoie plus les rôles admin dérivés des groupes OIDC. AuthController.auth retourne la ligne brute de la base — adminRoleIds persistés seuls — alors que le legacy logViaSession fusionnait persistés ∪ rôles matchés par oidcGroup dans la réponse, sans jamais persister cette union.

Preuve (préviews 2026-10-08, même identité Keycloak, même session_state) : pile pr-2782 (nestjs) → adminRoleIds: [] ; pile pr-2816 (legacy) → deux rôles. Le client (stores/user.ts) calcule myAdminRoles puis adminPerms depuis ce champ : tout le gating d'UI admin tombe pour les administrateurs par groupe OIDC.

Quoi

  • KeycloakJwtService.validatePayload expose l'union dédupliquée persistés ∪ rôles oidc-matchés dans le contexte (maybeAdminContext) — une seule requête listMatchingAdminRoles alimente le bitmask et les ids ; les rôles globaux restent exclus de l'union, parité exacte de logViaSession.
  • UserContext / décorateur AuthUser / gardes UserGuard et ProjectGuard propagent adminRoleIds.
  • AuthController.auth substitue l'union aux ids persistés dans la charge utile de session.
  • Aucune écriture en base à la connexion : le reconciler Keycloak reste seul propriétaire de la persistance (convention établie).

References

Related: #2835
#2835

Co-authored-by: Automata <automata@shikanime.studio>
Signed-off-by: William Phetsinorath <william.phetsinorath-open@interieur.gouv.fr>
Change-Id: Ib4c3e29a5b12e9029bd271649c324c996a6a6964
@shikanime
shikanime requested a review from a team as a code owner October 8, 2026 09:28
@github-actions github-actions Bot added the built label Oct 8, 2026
@cloud-pi-native-sonarqube

Copy link
Copy Markdown

@shikanime shikanime self-assigned this Oct 8, 2026
@shikanime shikanime added this to the 9.27.0 milestone Oct 8, 2026

@StephaneTrebel StephaneTrebel left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Verdict : changements demandés, uniquement pour l’intégration. Le diff rétablit la liste dédupliquée des rôles OIDC dans le contexte puis la session, sans la persister, et les tests/CI passent sur ce head. La branche est toutefois à 5 commits derrière main ; rebase et nouveaux checks requis avant approbation finale.

@StephaneTrebel
StephaneTrebel self-requested a review October 8, 2026 11:59
@shikanime
shikanime added this pull request to the merge queue Oct 8, 2026
Merged via the queue into main with commit efa5d2a Oct 8, 2026
34 checks passed
@shikanime
shikanime deleted the fix/auth-session-admin-role-ids branch October 8, 2026 12:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

🐛 [BUG] - La connexion server-nestjs ne renvoie pas les rôles admin dérivés des groupes OIDC

2 participants