feat(settings): cross-app language preference

gscMy /settings now hosts a single Language picker.

- Persisted in admin.users.locale (keyed by gscSID). Per the
  gsc-identity-boundaries decision, locale is one of the explicitly
  allowed app-local preference columns.
- Cross-app effect via NEXT_LOCALE cookie set with
  Domain=.gosec.internal — every sibling host on *.gosec.internal
  picks it up on the next request (no relogin, no DB read).
- Server action prisma.user.upsert + cookies().set; client form
  reloads after save so next-intl re-resolves immediately.

This deliberately collapses the previous kitchen-sink AccountSettings
page (which depended on the broken gscUserId/getUserEffectiveSettings
path) — full settings UI will return when the database/users.ts
redesign in Phase-2 lands.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Super User
2026-05-18 14:53:35 +02:00
parent 9b0a1847c2
commit a63aa4e2b7
4 changed files with 182 additions and 28 deletions

View File

@@ -31,7 +31,7 @@ spec:
spec:
containers:
- name: my-ui
image: registry.gosec.internal/gsc-my/ui:v0.1.5
image: registry.gosec.internal/gsc-my/ui:v0.1.6
imagePullPolicy: Always
ports:
- containerPort: 3000