test(cabana): cover My account profile, password and avatar

- account_internal_test: metadata subtitle reader and writer (NULL, blank,
  null, [], invalid JSON, non-objects, key preservation, NULL on the last
  key), the attachOne contract, avatar cap, unique-violation mapping,
  English fallbacks, and 401 for non-backend principals on all three routes
- account_test (Postgres): profile payload incl. copied WinterCMS metadata
  and avatar rows, trimmed profile saves and metadata keys, the forbidden-key
  allow-list with unchanged rows, email rules, password rules, the failed
  attempt log, Bearer and cookie session effects, CSRF, avatar upload,
  refusals (SVG, HTML as PNG, size, part shape, 413, no bucket) with no row
  or blob left, replace and remove with blob cleanup
- lagoon: TestBackendAdminMetadataColumn covers type, Winter row round trip,
  rollback of only the column and re-migrate
- SPA: AccountView, the user menu account item and avatar image,
  setCurrentUser and profileInitials; lang fixture gains myaccount keys
This commit is contained in:
2026-10-09 17:59:27 +02:00
parent 4f1cda33d7
commit 89611eaaf9
7 changed files with 1733 additions and 64 deletions

View File

@@ -282,6 +282,81 @@
"many": "Odłączono :count rekordów",
"other": "Odłączono :count rekordu"
},
"backend::lang.myaccount.avatar": {
"other": "Awatar"
},
"backend::lang.myaccount.avatar_hint": {
"other": "JPG, PNG, GIF lub WebP, maksymalnie 2 MB."
},
"backend::lang.myaccount.avatar_remove": {
"other": "Usuń zdjęcie"
},
"backend::lang.myaccount.avatar_remove_confirm": {
"other": "Usunąć awatar?"
},
"backend::lang.myaccount.avatar_removed": {
"other": "Usunięto awatar"
},
"backend::lang.myaccount.avatar_saved": {
"other": "Zapisano awatar"
},
"backend::lang.myaccount.avatar_upload": {
"other": "Wgraj zdjęcie"
},
"backend::lang.myaccount.current_password": {
"other": "Obecne hasło"
},
"backend::lang.myaccount.current_password_invalid": {
"other": "Obecne hasło jest nieprawidłowe."
},
"backend::lang.myaccount.email": {
"other": "E-mail"
},
"backend::lang.myaccount.field_not_editable": {
"other": "Tego pola nie można zmienić w ustawieniach konta."
},
"backend::lang.myaccount.first_name": {
"other": "Imię"
},
"backend::lang.myaccount.last_name": {
"other": "Nazwisko"
},
"backend::lang.myaccount.login": {
"other": "Login"
},
"backend::lang.myaccount.menu_description": {
"other": "Zmień imię, nazwisko, e-mail, podtytuł i hasło."
},
"backend::lang.myaccount.menu_label": {
"other": "Moje konto"
},
"backend::lang.myaccount.password": {
"other": "Nowe hasło"
},
"backend::lang.myaccount.password_comment": {
"other": "Pozostaw puste, aby zachować obecne hasło."
},
"backend::lang.myaccount.password_confirmation": {
"other": "Powtórz nowe hasło"
},
"backend::lang.myaccount.password_section": {
"other": "Zmiana hasła"
},
"backend::lang.myaccount.profile": {
"other": "Profil"
},
"backend::lang.myaccount.saved": {
"other": "Zapisano konto"
},
"backend::lang.myaccount.subtitle": {
"other": "Podtytuł"
},
"backend::lang.myaccount.subtitle_comment": {
"other": "Krótki opis pod Twoim imieniem, na przykład rola lub stanowisko."
},
"backend::lang.myaccount.subtitle_unavailable": {
"other": "Nie można zapisać podtytułu, ponieważ zapisane metadane profilu nie są obiektem JSON."
},
"backend::lang.nav.breadcrumbs": {
"other": "Ścieżka nawigacji"
},