feat: manage a user's groups from the user form, privileged groups locked

- groups relation field on the user form, the only writer of users_groups
- UsersGroup pivot model
- AdminRelationLocks: adding or removing a group whose code is in
  golem15.user.privileged_groups needs golem15.users.manage_privileged_groups,
  on create and on update; refused saves answer 403 and write nothing
- TestAdminUserGroupsField and TestAdminPrivilegedGroups
This commit is contained in:
Jakub Zych
2026-10-05 13:44:15 +02:00
parent 5805c6347f
commit 9611708792
8 changed files with 504 additions and 6 deletions

View File

@@ -53,6 +53,7 @@ users:
unsuspend_success: User has been unsuspended.
privileged_member_forbidden: This user belongs to a privileged group. You do not have permission to change their email or password. Nothing was saved.
privileged_member_delete_forbidden: Users who belong to a privileged group cannot be deleted without the permission to manage privileged groups. Nothing was deleted.
privileged_group_forbidden: You do not have permission to change membership of privileged groups. Nothing was saved.
user:
label: User
id: ID
@@ -72,6 +73,8 @@ user:
confirm_password: Password Confirmation
confirm_password_comment: Enter the password again to confirm it.
avatar: Avatar
groups: Groups
empty_groups: There are no user groups available.
permissions_tab: Permissions
group:
label: Group

View File

@@ -53,6 +53,7 @@ users:
unsuspend_success: Udało się odblokować użytkownika.
privileged_member_forbidden: Ten użytkownik należy do grupy uprzywilejowanej. Nie masz uprawnień do zmiany jego adresu e-mail ani hasła. Nic nie zostało zapisane.
privileged_member_delete_forbidden: Użytkowników należących do grupy uprzywilejowanej nie można usunąć bez uprawnienia do zarządzania grupami uprzywilejowanymi. Nic nie zostało usunięte.
privileged_group_forbidden: Nie masz uprawnień do zmiany członkostwa w grupach uprzywilejowanych. Nic nie zostało zapisane.
user:
label: Użytkownik
id: ID
@@ -72,6 +73,8 @@ user:
confirm_password: Potwierdzenie hasła
confirm_password_comment: Wprowadź ponownie hasło, aby je potwierdzić.
avatar: Avatar
groups: Grupy
empty_groups: Brak dostępnych grup użytkowników.
permissions_tab: Uprawnienia
group:
label: Grupa