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);
76 $current_user_id = $this->getCurrentUsersId();
78 return $this->isUserBasedOnPositionsAllowedTo($current_user_id, $permission, $on_user_ids);
88 $filtered_user_ids = $this->filterUserIdsForUsersPositionsAndPermission(
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));
102 $current_user_id = $this->getCurrentUsersId();
104 return $this->filterUserIdsByPositionOfUser($current_user_id, $pos_perm,
$ref_id, $user_ids);
115 if (!$this->isPositionActiveForRefId(
$ref_id)) {
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);
185 if (!$this->isPositionActiveForRefId(
$ref_id)) {
189 $operation = $this->operationRepo->find($pos_perm, $this->getTypeForRefId(
$ref_id));
193 $current_user_id = $this->getCurrentUsersId();
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())) {
208 if (!$this->isPositionActiveForRefId(
$ref_id)) {
212 $current_user_id = $this->getCurrentUsersId();
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) {
232 if (!$this->isPositionActiveForRefId(
$ref_id)) {
236 return $this->checkPositionAccess($pos_perm,
$ref_id);
253 return $this->filterUserIdsByPositionOfCurrentUser($pos_perm,
$ref_id, $user_ids);
263 return $this->hasCurrentUserAnyPositionAccess(
$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];
293 $obj_id = $this->getObjIdForRefId(
$ref_id);
295 return $this->
set->isPositionAccessActiveForObject($obj_id);
Class ilAccessHandler Checks access for ILIAS objects.
static _lookupObjectId(int $ref_id)
static _lookupType(int $id, bool $reference=false)
const SCOPE_SUBSEQUENT_ORGUS
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
getTypeForRefId(int $ref_id)
__construct(ilAccess $access)
ilOrgUnitPermissionDBRepository $permissionRepo
ilOrgUnitUserAssignmentDBRepository $assignmentRepo
filterUserIdsByRbacOrPositionOfCurrentUser(string $rbac_perm, string $pos_perm, int $ref_id, array $user_ids)
isUserBasedOnPositionsAllowedTo(int $which_user_id, string $permission, array $on_user_ids)
filterUserIdsByPositionOfCurrentUser(string $pos_perm, int $ref_id, array $user_ids)
isCurrentUserBasedOnPositionsAllowedTo(string $permission, array $on_user_ids)
isPositionActiveForRefId(int $ref_id)
hasUserRBACorAnyPositionAccess(string $rbac_perm, int $ref_id)
getObjIdForRefId(int $ref_id)
hasCurrentUserAnyPositionAccess(int $ref_id)
checkRbacOrPositionPermissionAccess(string $rbac_perm, string $pos_perm, int $ref_id)
static array $ref_id_obj_type_map
checkPositionAccess(string $pos_perm, int $ref_id)
filterUserIdsForCurrentUsersPositionsAndPermission(array $user_ids, string $permission)
ilOrgUnitOperationDBRepository $operationRepo
filterUserIdsForUsersPositionsAndPermission(array $user_ids, int $for_user_id, string $permission)
ilOrgUnitGlobalSettings $set
filterUserIdsByPositionOfUser(int $user_id, 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...
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
if(!file_exists('../ilias.ini.php'))