diff --git a/apps/portal-admin/src/locale/messages.fr.xlf b/apps/portal-admin/src/locale/messages.fr.xlf index 07ce70e..ea3fc4a 100644 --- a/apps/portal-admin/src/locale/messages.fr.xlf +++ b/apps/portal-admin/src/locale/messages.fr.xlf @@ -21,6 +21,10 @@ Users — APF Portal Admin Utilisateurs — Administration APF Portal + + User scopes — APF Portal Admin + Périmètres utilisateur — Administration APF Portal + Profile — APF Portal Admin Profil — Administration APF Portal diff --git a/apps/portal-bff/src/admin/user-scopes.service.ts b/apps/portal-bff/src/admin/user-scopes.service.ts index 1a9a8ac..8f5b965 100644 --- a/apps/portal-bff/src/admin/user-scopes.service.ts +++ b/apps/portal-bff/src/admin/user-scopes.service.ts @@ -194,7 +194,15 @@ export class UserScopesService { // ADR-0026 PR 1's "no FK on UserScope.value" rationale lets the // value persist even after the target is decommissioned, so we // validate only at the write path. - let exists: boolean; + // + // Initialise `exists = false` so TypeScript sees it as definitely + // assigned regardless of how the switch lands (the type-system + // can't see that `VALUE_BEARING_KINDS.has` already narrowed + // `kind` to the three branches). If somehow a non-value-bearing + // kind reached this code, the false default makes the next `if` + // throw with the same friendly "does not match" message — safe + // by construction. + let exists = false; switch (kind) { case 'etablissement': exists =