chore(server-nestjs): rename role readonly to reader - #2654
Conversation
- Rename READONLY_* constants to READER_* across all server-nestjs modules (argocd, gitlab, nexus, registry, sonarqube, vault) - Rename oidcGroup paths from /console/readonly to /console/reader - Update AdminRole name from 'Lecture Seule Plateforme' to 'Lecteur Plateforme' - Update ProjectRole name from 'Lecture seule' to 'Lecteur' - Update French descriptions from 'lecture seule' to 'lecteur' - Add Prisma migration 20260615100000_rename_role_readonly_to_reader to rename existing roles in database - Update old server queries.ts for consistency - Update shared permissions labels from 'Lecture seule globale' to 'Lecture globale' - Update external plugins/argocd/src/infos.ts constants and oidcGroups Signed-off-by: Shikanime Deva <[email protected]> Co-authored-by: Automata <[email protected]>
The infos.ts rename from readonly to reader was not reflected in functions.ts and functions.spec.ts, causing TypeScript compilation errors on the argocd plugin build. - Rename imports/aliases from READONLY to READER - Rename config keys platformReadonlyGroupPath -> platformReaderGroupPath - Rename config keys projectReadonlyGroupPathSuffix -> projectReaderGroupPathSuffix - Rename values keys platformReadonlyGroup -> platformReaderGroup - Rename values keys projectReadonlyGroup -> projectReaderGroup Signed-off-by: Shikanime Deva <[email protected]> Co-authored-by: Automata <[email protected]>
|
|
🤖 Hey ! A preview of the application is available at : https://console-pr-2654.dso.cpin-hp.numerique-interieur.fr Please be patient, deployment may take a few minutes. |
shikanime
left a comment
There was a problem hiding this comment.
Verdict : Changements demandés (auto-revue : verdict posé en commentaire, l'API refuse REQUEST_CHANGES sur son propre PR)
Renommage cohérent dans l'ensemble et bien testé en unitaire (build, lint et les suites vitest vertes en local sur la branche). Trois incohérences de parcours subsistent toutefois : le module Nexus conserve des valeurs /console/readonly avec des clés de configuration orphelinées, le plugin gitlab garde ses anciens défauts, et les specs d'intégration assertent encore l'ancien chemin. La migration admin mérite aussi un découplage nom/chemin.
Points hors lignes modifiées :
- [🟠 Important]
plugins/gitlab/src/infos.tsgardeDEFAULT_AUDITOR_GROUP_PATHetDEFAULT_PROJECT_REPORTER_GROUP_PATH_SUFFIXsur/console/readonlyalors queapps/server-nestjs/src/modules/gitlab/gitlab.constants.tspasse à/console/readerdans cette même PR — le plugin créera donc des groupes avec l'ancien chemin. argocd est corrigé, gitlab pas ; appliquer le même renommage (constantes +value/placeholder). - [🟠 Important] Les specs e2e assertion encore
/console/readonly(ex.apps/server-nestjs/test/sonarqube.e2e-spec.ts:102,107,149) ; les jobs d'intégration échoueront après cette PR. À mettre à jour dans la même branche. - [🟡 Nit]
packages/test-utils/src/imports/data.ts:50-51seed encoreLecture Seule Plateforme+/console/readonly— aligner la fixture sur les nouveaux noms. - [📚 Note] Le renommage des chemins OIDC et des politiques Vault est break-by-design et documenté comme tel : les jobs de réconciliation recréent les nouveaux groupes, mais rien ne supprime les anciens (
platform--readonly,console-readonly, groupes Keycloak) ni ne re-liera les memberships existants. À expliciter dans la procédure de migration du corps de PR.
Revue d'outillage (mêmes constats, aucun blocage nouveau) : workspace jj console-pr2654 sur 1c931acb, build/lint/vitest au vert après génération Prisma + copie des .env locaux ; échecs initiaux tous environnementaux, aucun rejet lié au diff.
| UPDATE "AdminRole" | ||
| SET | ||
| "name" = 'Lecteur Plateforme', | ||
| "oidcGroup" = '/reader' |
There was a problem hiding this comment.
[🟠 Important] Ce UPDATE couple le nom et le chemin : toute ligne correspondant au nom ou à l'ancien chemin reçoit oidcGroup = '/reader' et le nom Lecteur Plateforme. Deux effets de bord : un rôle admin avec un chemin personnalisé (ex. /mon-organisation/readonly) est écrasé vers /reader, et un rôle avec un chemin /console/readonly mais un nom différent est renommé de force. Suggestion : découpler les critères — un UPDATE pour le nom (WHERE "name" = 'Lecture Seule Plateforme'), un pour le chemin (WHERE "oidcGroup" = '/readonly'), chacun ne modifiant que son champ.
| // Default group paths granting write and read access at the platform level | ||
| export const DEFAULT_PLATFORM_WRITE_GROUP_PATHS = '/console/admin' | ||
| export const DEFAULT_PLATFORM_READ_GROUP_PATHS = '/console/readonly,/console/security' | ||
| export const DEFAULT_PLATFORM_READER_GROUP_PATHS = '/console/readonly,/console/security' |
There was a problem hiding this comment.
[🟠 Important] Les constantes sont renommées vers READER mais leurs valeurs conservent /console/readonly — en décalage avec argocd, sonarqube, vault et registry qui passent tous à /console/reader. Par ailleurs, les clés de configuration changent (platformReadGroupPaths → platformReaderGroupPaths) sans migration des valeurs stockées : toute configuration admin existante sous l'ancienne clé est orphelinée et silencieusement remplacée par les défauts. Suggestion : aligner les valeurs sur /console/reader, et soit conserver les anciennes clés, soit migrer les lignes PluginDatastore concernées.
| }, | ||
| { | ||
| name: 'Lecture seule', | ||
| name: 'Lecture', |
There was a problem hiding this comment.
[🟡 Nit] apps/server est normalement hors périmètre (cible : server-nestjs). La cohérence avec le serveur legacy se défend ; à confirmer que cette exception est assumée, sinon la déplacer dans une PR dédiée.
| @@ -0,0 +1,20 @@ | |||
| -- Rename the system-managed 'readonly'/'Lecture seule' role to 'reader'/'Lecteur' across AdminRole and ProjectRole | |||
|
|
|||
| -- Rename ProjectRole: 'Lecture seule' -> 'Lecteur', '/console/readonly' -> '/console/reader' | |||
There was a problem hiding this comment.
[✨ Éloge] Migration idempotente guidée par WHERE sur les anciennes valeurs — exactement ce qu'il faut pour un renommage de rôles système, et bien couverte par les specs mis à jour.

0 New Issues
0 Fixed Issues
0 Accepted Issues
Issues liées
Aucune
Quel est le comportement actuel ?
Les rôles de type
readonlyutilisent les chemins OIDC suivants :/console/readonlypour les rôles de projet/readonlypour les rôles admin de plateformeLes constantes sont nommées
READONLY_*et les libellés français utilisent"lecture seule".
Quel est le nouveau comportement ?
Les rôles sont renommés de
readonlyàreader:/console/readonlyà/console/readeret de/readonlyà/readerREADONLY_*deviennentREADER_*Lecture Seule PlateformedevientLecteur PlateformeLecture seuledevientLecture(cohérent avec leserveur legacy)
Fichiers modifiés (22) :
apps/server-nestjs/: constantes, services, specs, utils pour tous lesmodules (argocd, gitlab, nexus, registry, sonarqube, vault, project)
apps/server-nestjs/src/prisma/migrations/20260615100000_rename_role_readonly_to_reader/migration.sql: migration DBapps/server/src/resources/project/queries.ts: cohérence serveur legacypackages/shared/src/utils/permissions.ts: libellés partagésplugins/argocd/src/infos.ts: plugin externeCette PR introduit-elle un breaking change ?
Oui — Les chemins OIDC
/console/readonlyet/readonlysont renommés en/console/readeret/reader. Les groupes Keycloak correspondants, lespolitiques Vault, et les configurations de plugins externes (ArgoCD, Nexus,
SonarQube, Registry, GitLab) doivent être réconciliés. La migration Prisma
gère la mise à jour des rôles existants en base, mais les groupes externes
(Keycloak, Vault) seront synchronisés automatiquement par les jobs de
réconciliation des plugins.
Procédure de migration :
20260615100000_rename_role_readonly_to_reader)OIDC externes avec les nouveaux chemins
readonlyversreaderAutres informations
WHEREsur les anciennes valeurs)