19 declare(strict_types=1);
30 protected int $managed_user_id,
31 protected int $managing_user_id,
37 $rbacreview = $this->domain->rbac()->review();
40 if (in_array(
SYSTEM_ROLE_ID, $rbacreview->assignedRoles($this->managing_user_id),
true)) {
41 $global_roles = $rbacreview->getGlobalRolesArray();
42 } elseif ($tmp_obj?->getTimeLimitOwner() === $this->ref_id) {
43 $global_roles = $rbacreview->getGlobalAssignableRoles();
49 $rbacreview->getAssignableChildRoles($this->ref_id)
56 $lng = $this->domain->lng();
57 $rbacreview = $this->domain->rbac()->review();
58 $rbacadmin = $this->domain->rbac()->admin();
62 throw new \Exception(
$lng->txt(
'no_global_role_left'));
65 $assigned_roles = $rbacreview->assignedRoles($this->managed_user_id);
66 foreach ($roles as $role) {
67 if (in_array((
int) $role[
'obj_id'], $ids,
true) && !in_array((
int) $role[
'obj_id'], $assigned_roles,
true)) {
68 $rbacadmin->assignUser((
int) $role[
'obj_id'], $this->managed_user_id);
70 if (in_array((
int) $role[
'obj_id'], $ids,
true) && in_array((
int) $role[
'obj_id'], $assigned_roles,
true)) {
71 $rbacadmin->deassignUser((
int) $role[
'obj_id'], $this->managed_user_id);
78 $rbacreview = $this->domain->rbac()->review();
81 if ($tmp_obj->getTimeLimitOwner() !== $this->ref_id &&
82 !in_array(
SYSTEM_ROLE_ID, $rbacreview->assignedRoles($this->managing_user_id),
true)) {
87 $assigned = $rbacreview->assignedRoles($this->managed_user_id);
90 if (!in_array(
SYSTEM_ROLE_ID, $rbacreview->assignedRoles($this->managing_user_id),
true)) {
91 $ga = $rbacreview->getGlobalAssignableRoles();
93 $ga = $rbacreview->getGlobalRolesArray();
95 $global_assignable = [];
96 foreach ($ga as $role) {
97 $global_assignable[] = $role[
'obj_id'];
100 $has_global_role =
false;
101 foreach ($rbacreview->getGlobalRoles() as $gb_role_id) {
103 if (in_array($gb_role_id, $ids,
true) &&
104 !in_array($gb_role_id, $assigned,
true)) {
105 $has_global_role =
true;
108 if (in_array($gb_role_id, $assigned,
true) &&
109 !in_array($gb_role_id, $ids,
true)) {
110 $has_global_role =
true;
113 return $has_global_role;
checkGlobalRoles(array $ids)
__construct(protected InternalDomainService $domain, protected int $ref_id, protected int $managed_user_id, protected int $managing_user_id,)
static getInstanceByObjId(?int $obj_id, bool $stop_on_error=true)
get an instance of an Ilias object by object id
switchAssignment(array $ids)