assign role roles

This commit is contained in:
2026-03-13 21:11:48 +01:00
parent b89fd792bf
commit aaea038619
20 changed files with 495 additions and 11 deletions

View File

@@ -56,6 +56,7 @@ $selectedTenantIds = $selectedTenantIds ?? [];
$showRoles = $showRoles ?? false;
$roles = $roles ?? [];
$selectedRoleIds = $selectedRoleIds ?? [];
$visibleSelectedRoleIds = $visibleSelectedRoleIds ?? $selectedRoleIds;
$showDepartments = $showDepartments ?? false;
$departmentOptionsByTenant = $departmentOptionsByTenant ?? [];
$selectedDepartmentIds = $selectedDepartmentIds ?? [];
@@ -681,7 +682,7 @@ foreach ($tenants as $tenant) {
require templatePath('partials/app-empty-state.phtml');
?>
<?php else: ?>
<?php multiSelectForm('user-roles', 'role_ids', 'Assigned roles', 'Select roles', $roles, $selectedRoleIds, $isReadOnly); ?>
<?php multiSelectForm('user-roles', 'role_ids', 'Assigned roles', 'Select roles', $roles, $visibleSelectedRoleIds, $isReadOnly); ?>
<?php endif; ?>
</details>
<?php endif; ?>

View File

@@ -62,6 +62,10 @@ if ($allowedTenantIds) {
$tenants = [];
}
$roles = $roleService->listActive();
$assignableRoleService = app(\MintyPHP\Service\Access\AssignableRoleService::class);
$assignableRoleIds = $assignableRoleService->listAssignableRoleIdsForActor($currentUserId);
$assignableRoleIdMap = array_fill_keys($assignableRoleIds, true);
$roles = array_values(array_filter($roles, static fn (array $r): bool => isset($assignableRoleIdMap[(int) ($r['id'] ?? 0)])));
$selectedTenantIds = [];
$selectedRoleIds = [];
$selectedDepartmentIds = [];

View File

@@ -117,7 +117,12 @@ if (!$primaryTenantId && count($selectedTenantIds) === 1) {
}
$roles = $roleService->listActive();
$assignableRoleService = app(\MintyPHP\Service\Access\AssignableRoleService::class);
$assignableRoleIds = $assignableRoleService->listAssignableRoleIdsForActor($currentUserId);
$assignableRoleIdMap = array_fill_keys($assignableRoleIds, true);
$roles = array_values(array_filter($roles, static fn (array $r): bool => isset($assignableRoleIdMap[(int) ($r['id'] ?? 0)])));
$selectedRoleIds = $userRoleRepository->listRoleIdsByUserId($userId);
$visibleSelectedRoleIds = array_values(array_intersect($selectedRoleIds, $assignableRoleIds));
$permissionRows = $canViewPermissionsTable
? $rolePermissionRepository->listPermissionsWithRolesByRoleIds($selectedRoleIds)
: [];
@@ -233,7 +238,8 @@ if ($request->hasBody('email')) {
$userId,
$tenantIdsForSync,
$selectedRoleIds,
$selectedDepartmentIds
$selectedDepartmentIds,
$currentUserId
);
if (!$assignmentsSynced) {
$errorBag->addGlobal(t('User assignments can not be updated'));