27 private \ilOrgUnitGlobalSettings
$set;
39 $this->
user = $DIC->user();
42 $this->assignmentRepo =
$dic[
"repo.UserAssignments"];
43 $this->operationRepo =
$dic[
"repo.Operations"];
44 $this->permissionRepo =
$dic[
"repo.Permissions"];
65 $assignment_of_user = $this->assignmentRepo->getByUsers([$for_user_id]);
66 $other_users_in_same_org_units = [];
67 foreach ($assignment_of_user as $assignment) {
68 $other_users_in_same_org_units += $this->assignmentRepo->getUsersByOrgUnits([$assignment->getOrguId()]);
71 return array_intersect($user_ids, $other_users_in_same_org_units);
95 return ($on_user_ids === array_intersect($on_user_ids, $filtered_user_ids)
96 && $filtered_user_ids === array_intersect($filtered_user_ids, $on_user_ids));
120 $operation = $this->operationRepo->find($pos_perm, $this->
getTypeForRefId($ref_id));
125 $allowed_user_ids = [];
126 foreach ($this->assignmentRepo->getPositionsByUser($user_id) as $position) {
127 $permissions = $this->permissionRepo->getLocalorDefault($ref_id, $position->getId());
128 if (!$permissions->isOperationIdSelected($operation->getOperationId())) {
132 foreach ($position->getAuthorities() as $authority) {
133 switch ($authority->getOver()) {
135 switch ($authority->getScope()) {
137 $allowed = $this->assignmentRepo->getUsersByUserAndPosition(
142 $allowed_user_ids = array_merge($allowed_user_ids, $allowed);
145 $allowed = $this->assignmentRepo->getUsersByUserAndPosition(
150 $allowed_user_ids = array_merge($allowed_user_ids, $allowed);
155 switch ($authority->getScope()) {
157 $allowed = $this->assignmentRepo->getFilteredUsersByUserAndPosition(
159 $authority->getPositionId(),
160 $authority->getOver(),
163 $allowed_user_ids = array_merge($allowed_user_ids, $allowed);
166 $allowed = $this->assignmentRepo->getFilteredUsersByUserAndPosition(
168 $authority->getPositionId(),
169 $authority->getOver(),
172 $allowed_user_ids = array_merge($allowed_user_ids, $allowed);
179 $allowed_user_ids[] = $this->
user->getId();
180 return array_intersect($user_ids, $allowed_user_ids);
190 $operation = $this->operationRepo->find($pos_perm, $this->
getTypeForRefId($ref_id));
196 foreach ($this->assignmentRepo->getPositionsByUser($current_user_id) as $position) {
197 $permissions = $this->permissionRepo->getLocalorDefault($ref_id, $position->getId());
198 if ($permissions->isOperationIdSelected($operation->getOperationId())) {
215 foreach ($this->assignmentRepo->getPositionsByUser($current_user_id) as $position) {
216 $permissions = $this->permissionRepo->getLocalorDefault($ref_id, $position->getId());
217 if (count($permissions->getOperations()) > 0) {
229 if ($this->
access->checkAccess($rbac_perm,
'', $ref_id)) {
250 if ($this->
access->checkAccess($rbac_perm,
'', $ref_id)) {
260 if ($this->
access->checkAccess($rbac_perm,
'', $ref_id)) {
274 return $this->
user->getId();
280 if (!isset(self::$ref_id_obj_type_map[$ref_id])) {
284 return self::$ref_id_obj_type_map[
$ref_id];
296 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)
Interface ilOrgUnitPositionAndRBACAccessHandler Provides access checks due to a users OrgUnit-Positio...
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)
Interface ilOrgUnitPositionAccessHandler Provides access checks due to a users OrgUnit-Positions.
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)