26 private \ilOrgUnitGlobalSettings
$set;
38 $this->
user = $DIC->user();
41 $this->assignmentRepo =
$dic[
"repo.UserAssignments"];
42 $this->operationRepo =
$dic[
"repo.Operations"];
43 $this->permissionRepo =
$dic[
"repo.Permissions"];
64 $assignment_of_user = $this->assignmentRepo->getByUsers([$for_user_id]);
65 $other_users_in_same_org_units = [];
66 foreach ($assignment_of_user as $assignment) {
67 $other_users_in_same_org_units += $this->assignmentRepo->getUsersByOrgUnits([$assignment->getOrguId()]);
70 return array_intersect($user_ids, $other_users_in_same_org_units);
94 return ($on_user_ids === array_intersect($on_user_ids, $filtered_user_ids)
95 && $filtered_user_ids === array_intersect($filtered_user_ids, $on_user_ids));
119 $operation = $this->operationRepo->find($pos_perm, $this->
getTypeForRefId($ref_id));
124 $allowed_user_ids = [];
125 foreach ($this->assignmentRepo->getPositionsByUser($user_id) as $position) {
126 $permissions = $this->permissionRepo->getLocalorDefault($ref_id, $position->getId());
127 if (!$permissions->isOperationIdSelected($operation->getOperationId())) {
131 foreach ($position->getAuthorities() as $authority) {
132 switch ($authority->getOver()) {
134 switch ($authority->getScope()) {
136 $allowed = $this->assignmentRepo->getUsersByUserAndPosition(
141 $allowed_user_ids = array_merge($allowed_user_ids, $allowed);
144 $allowed = $this->assignmentRepo->getUsersByUserAndPosition(
149 $allowed_user_ids = array_merge($allowed_user_ids, $allowed);
154 switch ($authority->getScope()) {
156 $allowed = $this->assignmentRepo->getFilteredUsersByUserAndPosition(
158 $authority->getPositionId(),
159 $authority->getOver(),
162 $allowed_user_ids = array_merge($allowed_user_ids, $allowed);
165 $allowed = $this->assignmentRepo->getFilteredUsersByUserAndPosition(
167 $authority->getPositionId(),
168 $authority->getOver(),
171 $allowed_user_ids = array_merge($allowed_user_ids, $allowed);
178 $allowed_user_ids[] = $this->
user->getId();
179 return array_intersect($user_ids, $allowed_user_ids);
189 $operation = $this->operationRepo->find($pos_perm, $this->
getTypeForRefId($ref_id));
195 foreach ($this->assignmentRepo->getPositionsByUser($current_user_id) as $position) {
196 $permissions = $this->permissionRepo->getLocalorDefault($ref_id, $position->getId());
197 if ($permissions->isOperationIdSelected($operation->getOperationId())) {
214 foreach ($this->assignmentRepo->getPositionsByUser($current_user_id) as $position) {
215 $permissions = $this->permissionRepo->getLocalorDefault($ref_id, $position->getId());
216 if (count($permissions->getOperations()) > 0) {
228 if ($this->
access->checkAccess($rbac_perm,
'', $ref_id)) {
249 if ($this->
access->checkAccess($rbac_perm,
'', $ref_id)) {
259 if ($this->
access->checkAccess($rbac_perm,
'', $ref_id)) {
273 return $this->
user->getId();
279 if (!isset(self::$ref_id_obj_type_map[$ref_id])) {
283 return self::$ref_id_obj_type_map[
$ref_id];
295 return $this->
set->isPositionAccessActiveForObject($obj_id);
__construct(ilAccess $access)
isUserBasedOnPositionsAllowedTo(int $which_user_id, string $permission, array $on_user_ids)
ilOrgUnitPermissionDBRepository $permissionRepo
hasUserRBACorAnyPositionAccess(string $rbac_perm, int $ref_id)
checkPositionAccess(string $pos_perm, int $ref_id)
filterUserIdsByPositionOfCurrentUser(string $pos_perm, int $ref_id, array $user_ids)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
getTypeForRefId(int $ref_id)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
ilOrgUnitUserAssignmentDBRepository $assignmentRepo
isPositionActiveForRefId(int $ref_id)
static _lookupObjectId(int $ref_id)
hasCurrentUserAnyPositionAccess(int $ref_id)
filterUserIdsByPositionOfUser(int $user_id, string $pos_perm, int $ref_id, array $user_ids)
static array $ref_id_obj_type_map
checkRbacOrPositionPermissionAccess(string $rbac_perm, string $pos_perm, int $ref_id)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
filterUserIdsForCurrentUsersPositionsAndPermission(array $user_ids, string $permission)
filterUserIdsByRbacOrPositionOfCurrentUser(string $rbac_perm, string $pos_perm, int $ref_id, array $user_ids)
filterUserIdsForUsersPositionsAndPermission(array $user_ids, int $for_user_id, string $permission)
isCurrentUserBasedOnPositionsAllowedTo(string $permission, array $on_user_ids)
static _lookupType(int $id, bool $reference=false)
ilOrgUnitGlobalSettings $set
const SCOPE_SUBSEQUENT_ORGUS
ilOrgUnitOperationDBRepository $operationRepo
getObjIdForRefId(int $ref_id)