Skip to content

feat(nginx-strangler): route /api/v1/admin/roles to server-nestjs - #2782

Open
shikanime wants to merge 2 commits into
pr/user-stranglerfrom
feat/admin-roles-routing
Open

shikanime wants to merge 2 commits into
pr/user-stranglerfrom
feat/admin-roles-routing

Conversation

@shikanime

@shikanime shikanime commented Sep 28, 2026 •

Copy link
Copy Markdown
Member

Issues liées

Refs #2781

Empilée via GitHub stacks : pile #2751 (#2749 → #2738 → #2739 → cette PR), base = pr/user-strangler. L'ordre de fusion est porté par la pile (retarget automatique au fil des fusions) ; prérequis de contenu : #2749 (cf. #2723).


Quel est le comportement actuel ?

/api/v1/admin/roles est encore servie par apps/server (aucune location dédiée dans le nginx-strangler). Le handler legacy countRolesMembers produit des NaN dès qu'un utilisateur porte un rôle admin adossé à OIDC : la validation de réponse échoue et GET /api/v1/admin/roles/member-counts renvoie une 500 (détail et reproduction dans #2781).

Quel est le nouveau comportement ?

Ajout de la location /api/v1/admin/roles dans apps/nginx-strangler/conf.d/routing.conf vers server-nestjs, dont getAdminRoleMemberCounts exclut déjà les ids OIDC (aucune valeur NaN). Les tests verrouillant le décompte sont portés par #2783 (PR indépendante, applicable sur main).

Cette PR introduit-elle un breaking change ?

Non.

Autres informations

  • Vérifications locales : nginx -t OK sur la configuration modifiée ; suite unitaire server-nestjs verte (80 fichiers, 665 tests, sur base main) ; lint OK ; 0 erreur TypeScript sur les fichiers modifiés.
  • Empilement : pile #2751, couche au-dessus de refactor(user): strangler offload routes to server-nestjs #2739. Le socle de la pile (21/08) précède le module admin-role : le test de décompte vit donc dans test(admin-role): lock member counts against OIDC role ids #2783 (indépendant), et cette couche se limite au routage (+9 lignes).
  • Rollback : commenter le bloc location puis nginx -s reload (procédure documentée en tête de routing.conf).

@shikanime

Copy link
Copy Markdown
Member Author

Vérification de bascule (bout en bout, locale)

Test réalisé avec le binaire nginx réel, la configuration routing.conf d'avant (main) et d'après (cette PR), face à deux upstreams simulés :

7/7 vérifications OK. CI : 32/32 checks verts.

@shikanime
shikanime force-pushed the feat/admin-roles-routing branch from a3d642f to cf607cc Compare September 28, 2026 14:06
@shikanime
shikanime changed the base branch from main to pr/user-strangler September 28, 2026 14:06
@shikanime
shikanime added this pull request to stack #2751 September 28, 2026 14:06
@shikanime shikanime closed this Sep 28, 2026
@shikanime shikanime reopened this Sep 28, 2026
@shikanime
shikanime force-pushed the feat/admin-roles-routing branch from cf607cc to 6a72d66 Compare September 28, 2026 14:16
StephaneTrebel
StephaneTrebel previously approved these changes Sep 29, 2026
@shikanime shikanime moved this to Backlog in Cloud Pi Native Sep 29, 2026
@shikanime shikanime added the enhancement New feature or request label Sep 29, 2026
@shikanime shikanime self-assigned this Sep 29, 2026
@shikanime shikanime added this to the 9.27.0 milestone Sep 29, 2026
@shikanime
shikanime removed this pull request from stack #2751 September 29, 2026 13:28
@shikanime
shikanime requested review from a team and removed request for StephaneTrebel September 29, 2026 13:28
@shikanime
shikanime added this pull request to stack #2794 September 29, 2026 13:51
StephaneTrebel
StephaneTrebel previously approved these changes Sep 30, 2026
@shikanime
shikanime dismissed StephaneTrebel’s stale review October 1, 2026 15:44

The merge-base changed after approval.

@shikanime
shikanime force-pushed the feat/admin-roles-routing branch from 7c4eeb2 to 19b5b08 Compare October 1, 2026 15:44

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

🔴 blocking — GitHub indique mergeStateStatus=BEHIND. La couche est bien au-dessus de pr/user-strangler, mais sa pile n’est pas intégrable : #2739 est elle-même BEHIND, #2738 a des changements demandés et le prérequis #2749 est encore ouvert. Merci de faire rebaser/retargeter la pile dans son ordre, puis de relancer et laisser terminer la CI avant une revue fonctionnelle finale ; ledger #2781 : 0/4, 0 fil ouvert.

@shikanime
shikanime force-pushed the feat/admin-roles-routing branch from 19b5b08 to e78eecc Compare October 2, 2026 08:15
@shikanime shikanime reopened this Oct 2, 2026
@shikanime
shikanime force-pushed the feat/admin-roles-routing branch 3 times, most recently from 33f6230 to 78ce60f Compare October 2, 2026 11:56
@shikanime
shikanime force-pushed the feat/admin-roles-routing branch from 78ce60f to 2738e60 Compare October 2, 2026 12:12

@shikanime shikanime left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Verdict : Commentaire

L'état de pile signalé le 01/10 est régularisé : #2739 et #2770 ne sont plus DIRTY, la couche est MERGEABLE sur pr/user-strangler ; le prérequis de contenu #2749 reste ouvert par conception (pile #2751, ordre porté par les retargets automatiques). Diff minimal : location /api/v1/admin/roles (9 lignes) vers server-nestjs, dont getAdminRoleMemberCounts exclut déjà les ids OIDC — la correction du NaN de #2781 vient du routage, sans patch au legacy gelé. CI verte hormis le scan de vulnérabilités en cours (run 37005363893), scan de sécurité du diff : néant.

✨ Le test de décompte vit dans #2783, applicable sur main, plutôt que dans cette couche — la couche de routage reste à 9 lignes, pile propre.

StephaneTrebel
StephaneTrebel previously approved these changes Oct 2, 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.

La bascule isole correctement le préfixe admin-role vers le module Nest déjà enregistré ; les spécifications de décompte ont été livrées par #2783. Ledger #2781 : 1/4 vérifié (tests), la règle de routage reste conditionnée par la fusion de #2749 ; fils résolus et CI verte sur cette tête.

@shikanime
shikanime dismissed StephaneTrebel’s stale review October 2, 2026 14:02

The merge-base changed after approval.

StephaneTrebel
StephaneTrebel previously approved these changes Oct 2, 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.

Approbation renouvelée sans constat sur le diff. La livraison reste conditionnée par #2749 et la résolution du conflit affiché par GitHub avant toute fusion.

@shikanime
shikanime dismissed StephaneTrebel’s stale review October 2, 2026 15:04

The merge-base changed after approval.

@shikanime
shikanime force-pushed the feat/admin-roles-routing branch from 2738e60 to 9a77e8c Compare October 2, 2026 15:08
@shikanime shikanime closed this Oct 2, 2026
@shikanime
shikanime force-pushed the feat/admin-roles-routing branch from 9a77e8c to 93bbf69 Compare October 2, 2026 15:42
@shikanime shikanime reopened this Oct 2, 2026
shikanime and others added 2 commits October 2, 2026 16:35
Signed-off-by: William Phetsinorath <william.phetsinorath-open@interieur.gouv.fr>
Change-Id: I39d0c71b5912f708ff91995e286f4e076a6a6964

Co-authored-by: Automata <automata@shikanime.studio>
server-nestjs already excludes OIDC-backed role ids from member counts,
while the frozen legacy handler computes NaN for them, fails the response
contract and turns GET /api/v1/admin/roles/member-counts into a 500.

The route flip depends on the adminRole event bridge (#2749) landing
first.

Refs #2781

Co-authored-by: Automata <automata@shikanime.studio>
Signed-off-by: William Phetsinorath <william.phetsinorath-open@interieur.gouv.fr>
Change-Id: I7d36cd930692f7b476d37909077bb7166a6a6964
@shikanime
shikanime force-pushed the feat/admin-roles-routing branch from 020a40b to 6a3a204 Compare October 2, 2026 16:35
@cloud-pi-native-sonarqube

Copy link
Copy Markdown

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

built enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants