feat(19.6.1-01): Administrators screen and cross-controller record actions

- pact.HasAdminActionExtensions / AdminActionExtension: plugins add record
  actions to any admin controller by ID, merged at boot before permission
  validation (unknown target, no preview, duplicate name stop the boot)
- internal summercms.cabana pseudo-plugin, appended only when some plugin
  registers admin controllers: Administrators list and preview, settings
  link under System, backend.manage_users and backend.manage_roles with no
  role grants
- backend::lang user, user.role and permissions copy (en, pl)
- smoke tests: compile-time seam and settings, Postgres list/preview/action
This commit is contained in:
Jakub Zych
2026-10-22 10:59:23 +02:00
parent 88ec4df2b3
commit 7340241f22
19 changed files with 1239 additions and 5 deletions

View File

@@ -131,6 +131,7 @@ relation:
pending_note: Changes in this section are saved together with the record.
settings:
title: Settings
category_system: "System"
empty: No settings are available.
saved: Settings saved
back: Back to settings
@@ -422,3 +423,105 @@ reorder:
moved: ":name moved to position :position of :total."
nested: ":name is now inside :parent."
unnested: ":name moved out to level :level."
user:
name: "Administrator"
list_title: "Administrators"
new: "New administrator"
edit: "Edit administrator"
preview: "Administrator details"
list_empty: "No administrators in this view. Clear the search and filters, or create an administrator."
menu_label: "Administrators"
menu_description: "Manage administrator accounts, their roles and permissions."
login: "Login"
first_name: "First name"
last_name: "Last name"
email: "Email"
role_field: "Role"
last_login: "Last sign-in"
superuser: "Superuser"
created_at: "Created"
filter_activated: "Active"
filter_deleted: "Deleted"
filter_deleted_hide: "Hide deleted"
filter_deleted_only: "Only deleted"
state_deleted: "Deleted"
state_deactivated: "Deactivated"
delete_selected_confirm:
one: "Delete :count administrator? They are signed out at once. Deleted accounts can be restored."
other: "Delete :count administrators? They are signed out at once. Deleted accounts can be restored."
account: "Account"
permissions: "Permissions"
password: "Password"
password_comment: "At least 4 characters. When editing, leave blank to keep the current password."
password_confirmation: "Confirm password"
role_comment: "The role sets this administrator's permissions. Single permissions can be adjusted on the Permissions tab."
role_none: "No role"
superuser_comment: "Grants every permission in the admin, including managing other administrators. Permission overrides below are not used while this is on."
permission_overrides: "Permission overrides"
permission_overrides_comment: "Inherit follows the role. Allow and Deny apply to this administrator only."
delete_confirm: "Delete this administrator? They are signed out at once. The account can be restored from the list."
activate: "Activate"
activate_confirm: "Activate this administrator? They can sign in again, and their existing API tokens work again."
activate_selected_confirm: "Activate the selected administrators? They can sign in again, and their existing API tokens work again."
activated: "Administrator activated"
activated_selected: "Selected administrators activated"
deactivate: "Deactivate"
deactivate_confirm: "Deactivate this administrator? They are signed out at once and cannot sign in until activated again."
deactivate_selected_confirm: "Deactivate the selected administrators? They are signed out at once and cannot sign in until activated again."
deactivated: "Administrator deactivated"
deactivated_selected: "Selected administrators deactivated"
restore: "Restore"
restore_confirm: "Restore this administrator? If the account is active, they can sign in again and their existing API tokens work again."
restore_selected_confirm: "Restore the selected administrators? Active accounts can sign in again, and their existing API tokens work again."
restored: "Administrator restored"
restored_selected: "Selected administrators restored"
trashed_hint_title: "This account has been deleted"
trashed_hint_desc: "It cannot be used to sign in. Use Restore to bring it back."
deactivated_hint_title: "This account is deactivated"
deactivated_hint_desc: "It cannot be used to sign in. Use Activate to allow sign-in again."
self_hint_title: "This is your account"
self_hint_desc: "You can change your name, login and email here. Your role, permissions, superuser access and activation can only be changed by another administrator. Change your password in My account."
superuser_forbidden: "Only a superuser can grant, remove or change superuser access."
role_ceiling: "You can only assign roles whose permissions you have yourself."
self_privileged: "You cannot change your own role, permissions, superuser access or activation. Ask another administrator."
self_delete: "You cannot delete your own account."
self_deactivate: "You cannot deactivate your own account."
last_superuser: "This is the last active superuser, so it cannot be deactivated, deleted or lose superuser access. Make another administrator a superuser first."
outranked: "This administrator has permissions you do not have, so you cannot change, deactivate or delete their account."
own_password: "Change your own password in My account, where your current password is checked."
login_taken: "This login is already used by another administrator."
login_taken_deleted: "This login belongs to a deleted administrator. Restore that account instead of creating a new one."
email_taken: "This email is already used by another administrator."
email_taken_deleted: "This email belongs to a deleted administrator. Restore that account instead of creating a new one."
role:
name: "Role"
list_title: "Roles"
new: "New role"
edit: "Edit role"
list_empty: "No roles in this view. Clear the search, or create a role."
menu_label: "Roles"
menu_description: "Define roles and the permissions they grant."
name_field: "Name"
name_comment: "Shown in the role picker on the administrator form."
code_field: "Code"
code_comment: "A unique identifier used by plugins and the API. The code of a system role cannot be changed."
description_field: "Description"
is_system: "System role"
permissions_field: "Granted permissions"
permissions_comment: "Every administrator with this role gets the checked permissions."
delete_confirm: "Delete this role? This cannot be undone. A role that is still assigned to administrators cannot be deleted."
delete_selected_confirm:
one: "Delete :count role? This cannot be undone."
other: "Delete :count roles? This cannot be undone."
delete_has_users:
one: "The role “:name” is assigned to :count administrator. Give them another role first. Deleted accounts count too."
other: "The role “:name” is assigned to :count administrators. Give them another role first. Deleted accounts count too."
delete_system: "System roles cannot be deleted."
code_locked: "The code of a system role cannot be changed."
code_taken: "This code is already used by another role."
permissions:
tab_system: "System"
manage_users: "Manage administrators"
manage_users_comment: "Create, edit, deactivate and delete administrator accounts."
manage_roles: "Manage roles"
manage_roles_comment: "Create and edit roles and the permissions they grant."

View File

@@ -141,6 +141,7 @@ relation:
pending_note: Zmiany w tej sekcji zostaną zapisane razem z rekordem.
settings:
title: Ustawienia
category_system: "System"
empty: Brak dostępnych ustawień.
saved: Zapisano ustawienia
back: Wróć do ustawień
@@ -450,3 +451,111 @@ reorder:
moved: "Przeniesiono :name na pozycję :position z :total."
nested: ":name jest teraz wewnątrz :parent."
unnested: "Przeniesiono :name na poziom :level."
user:
name: "Administrator"
list_title: "Administratorzy"
new: "Nowy administrator"
edit: "Edytuj administratora"
preview: "Szczegóły administratora"
list_empty: "Brak administratorów w tym widoku. Wyczyść wyszukiwanie i filtry lub utwórz administratora."
menu_label: "Administratorzy"
menu_description: "Zarządzaj kontami administratorów, ich rolami i uprawnieniami."
login: "Login"
first_name: "Imię"
last_name: "Nazwisko"
email: "E-mail"
role_field: "Rola"
last_login: "Ostatnie logowanie"
superuser: "Superużytkownik"
created_at: "Utworzono"
filter_activated: "Aktywny"
filter_deleted: "Usunięci"
filter_deleted_hide: "Ukryj usuniętych"
filter_deleted_only: "Tylko usunięci"
state_deleted: "Usunięty"
state_deactivated: "Dezaktywowany"
delete_selected_confirm:
one: "Usunąć :count administratora? Zostanie od razu wylogowany. Usunięte konta można przywrócić."
few: "Usunąć :count administratorów? Zostaną od razu wylogowani. Usunięte konta można przywrócić."
many: "Usunąć :count administratorów? Zostaną od razu wylogowani. Usunięte konta można przywrócić."
other: "Usunąć :count administratora? Zostaną od razu wylogowani. Usunięte konta można przywrócić."
account: "Konto"
permissions: "Uprawnienia"
password: "Hasło"
password_comment: "Co najmniej 4 znaki. Przy edycji zostaw puste, aby zachować obecne hasło."
password_confirmation: "Potwierdź hasło"
role_comment: "Rola określa uprawnienia administratora. Pojedyncze uprawnienia można zmienić w zakładce Uprawnienia."
role_none: "Brak roli"
superuser_comment: "Daje wszystkie uprawnienia w panelu, w tym zarządzanie innymi administratorami. Gdy jest włączone, nadpisania uprawnień poniżej nie są używane."
permission_overrides: "Nadpisania uprawnień"
permission_overrides_comment: "Dziedzicz oznacza ustawienie z roli. Zezwól i Odmów dotyczą tylko tego administratora."
delete_confirm: "Usunąć tego administratora? Zostanie od razu wylogowany. Konto można przywrócić z listy."
activate: "Aktywuj"
activate_confirm: "Aktywować tego administratora? Będzie mógł się zalogować, a jego dotychczasowe tokeny API znów zadziałają."
activate_selected_confirm: "Aktywować zaznaczonych administratorów? Będą mogli się zalogować, a ich dotychczasowe tokeny API znów zadziałają."
activated: "Aktywowano administratora"
activated_selected: "Aktywowano zaznaczonych administratorów"
deactivate: "Dezaktywuj"
deactivate_confirm: "Dezaktywować tego administratora? Zostanie od razu wylogowany i nie zaloguje się, dopóki konto nie zostanie ponownie aktywowane."
deactivate_selected_confirm: "Dezaktywować zaznaczonych administratorów? Zostaną od razu wylogowani i nie zalogują się, dopóki ich konta nie zostaną ponownie aktywowane."
deactivated: "Dezaktywowano administratora"
deactivated_selected: "Dezaktywowano zaznaczonych administratorów"
restore: "Przywróć"
restore_confirm: "Przywrócić tego administratora? Jeśli konto jest aktywne, będzie mógł się zalogować, a jego dotychczasowe tokeny API znów zadziałają."
restore_selected_confirm: "Przywrócić zaznaczonych administratorów? Aktywne konta będą mogły się zalogować, a ich dotychczasowe tokeny API znów zadziałają."
restored: "Przywrócono administratora"
restored_selected: "Przywrócono zaznaczonych administratorów"
trashed_hint_title: "To konto zostało usunięte"
trashed_hint_desc: "Nie można się na nie zalogować. Użyj „Przywróć”, aby je odzyskać."
deactivated_hint_title: "To konto jest dezaktywowane"
deactivated_hint_desc: "Nie można się na nie zalogować. Użyj „Aktywuj”, aby ponownie zezwolić na logowanie."
self_hint_title: "To Twoje konto"
self_hint_desc: "Tutaj zmienisz imię, nazwisko, login i e-mail. Rolę, uprawnienia, dostęp superużytkownika i aktywację może zmienić tylko inny administrator. Hasło zmień w sekcji Moje konto."
superuser_forbidden: "Tylko superużytkownik może nadawać, odbierać lub zmieniać dostęp superużytkownika."
role_ceiling: "Możesz przypisywać tylko role, których uprawnienia sam posiadasz."
self_privileged: "Nie możesz zmieniać własnej roli, uprawnień, dostępu superużytkownika ani aktywacji. Poproś innego administratora."
self_delete: "Nie możesz usunąć własnego konta."
self_deactivate: "Nie możesz dezaktywować własnego konta."
last_superuser: "To ostatni aktywny superużytkownik, więc nie można go dezaktywować, usunąć ani odebrać mu dostępu superużytkownika. Najpierw nadaj ten dostęp innemu administratorowi."
outranked: "Ten administrator ma uprawnienia, których nie masz, więc nie możesz zmieniać, dezaktywować ani usuwać jego konta."
own_password: "Własne hasło zmień w sekcji Moje konto, która sprawdza obecne hasło."
login_taken: "Ten login jest już używany przez innego administratora."
login_taken_deleted: "Ten login należy do usuniętego administratora. Przywróć to konto zamiast tworzyć nowe."
email_taken: "Ten adres e-mail jest już używany przez innego administratora."
email_taken_deleted: "Ten adres e-mail należy do usuniętego administratora. Przywróć to konto zamiast tworzyć nowe."
role:
name: "Rola"
list_title: "Role"
new: "Nowa rola"
edit: "Edytuj rolę"
list_empty: "Brak ról w tym widoku. Wyczyść wyszukiwanie lub utwórz rolę."
menu_label: "Role"
menu_description: "Określ role i uprawnienia, które nadają."
name_field: "Nazwa"
name_comment: "Wyświetlana na liście ról w formularzu administratora."
code_field: "Kod"
code_comment: "Unikalny identyfikator używany przez wtyczki i API. Kodu roli systemowej nie można zmienić."
description_field: "Opis"
is_system: "Rola systemowa"
permissions_field: "Nadane uprawnienia"
permissions_comment: "Każdy administrator z tą rolą otrzymuje zaznaczone uprawnienia."
delete_confirm: "Usunąć tę rolę? Tej operacji nie można cofnąć. Roli przypisanej do administratorów nie można usunąć."
delete_selected_confirm:
one: "Usunąć :count rolę? Tej operacji nie można cofnąć."
few: "Usunąć :count role? Tej operacji nie można cofnąć."
many: "Usunąć :count ról? Tej operacji nie można cofnąć."
other: "Usunąć :count roli? Tej operacji nie można cofnąć."
delete_has_users:
one: "Rola „:name” jest przypisana do :count administratora. Najpierw przydziel mu inną rolę. Liczą się też usunięte konta."
few: "Rola „:name” jest przypisana do :count administratorów. Najpierw przydziel im inną rolę. Liczą się też usunięte konta."
many: "Rola „:name” jest przypisana do :count administratorów. Najpierw przydziel im inną rolę. Liczą się też usunięte konta."
other: "Rola „:name” jest przypisana do :count administratora. Najpierw przydziel inną rolę. Liczą się też usunięte konta."
delete_system: "Ról systemowych nie można usunąć."
code_locked: "Kodu roli systemowej nie można zmienić."
code_taken: "Ten kod jest już używany przez inną rolę."
permissions:
tab_system: "System"
manage_users: "Zarządzanie administratorami"
manage_users_comment: "Tworzenie, edycja, dezaktywacja i usuwanie kont administratorów."
manage_roles: "Zarządzanie rolami"
manage_roles_comment: "Tworzenie i edycja ról oraz uprawnień, które nadają."