/** * @param User $entity * @param EntityManager $em * @param UnitOfWork $uow */ protected function ensureDefaultUserCalendarExist(User $entity, EntityManager $em, UnitOfWork $uow) { $assignedOrganizations = $entity->getOrganizations(); foreach ($assignedOrganizations as $organization) { if (!$this->isCalendarExists($em, $entity, $organization)) { $this->createCalendar($em, $uow, $entity, $organization); } } }
/** * @param User $user * @param Organization $organization * @throws BadCredentialsException */ protected function checkUserOrganization(User $user, Organization $organization) { if (!$user->getOrganizations()->contains($organization) || !$organization->isEnabled()) { throw new BadCredentialsException(sprintf("You don't have access to organization '%s'", $organization->getName())); } }
/** * Get user organization by id * * @param User $user * @param integer $id * @return Organization */ public function getEnabledUserOrganizationById(User $user, $id) { return $user->getOrganizations()->filter(function (Organization $item) use($id) { return $item->getId() == $id && $item->isEnabled(); }); }
public function testOrganizations() { $user = new User(); $disabledOrganization = new Organization(); $organization = new Organization(); $organization->setEnabled(true); $user->setOrganizations(new ArrayCollection(array($organization))); $this->assertContains($organization, $user->getOrganizations()); $user->removeOrganization($organization); $this->assertNotContains($organization, $user->getOrganizations()); $user->addOrganization($organization); $this->assertContains($organization, $user->getOrganizations()); $user->addOrganization($disabledOrganization); $result = $user->getOrganizations(true); $this->assertTrue($result->count() == 1); $this->assertSame($result->first(), $organization); }
/** * Checks if user can be set as owner by given user * * @param User $currentUser * @param User $newUser * @param string $accessLevel * @param OwnerTreeProvider $treeProvider * @param Organization $organization * * @return bool */ public function canUserBeSetAsOwner(User $currentUser, User $newUser, $accessLevel, OwnerTreeProvider $treeProvider, Organization $organization) { $userId = $newUser->getId(); if ($accessLevel == AccessLevel::SYSTEM_LEVEL) { return true; } elseif ($accessLevel == AccessLevel::BASIC_LEVEL && $userId == $currentUser->getId()) { return true; } elseif ($accessLevel == AccessLevel::GLOBAL_LEVEL && $newUser->getOrganizations()->contains($organization)) { return true; } else { $resultBuIds = []; if ($accessLevel == AccessLevel::LOCAL_LEVEL) { $resultBuIds = $treeProvider->getTree()->getUserBusinessUnitIds($currentUser->getId(), $organization->getId()); } elseif ($accessLevel == AccessLevel::DEEP_LEVEL) { $resultBuIds = $treeProvider->getTree()->getUserSubordinateBusinessUnitIds($currentUser->getId(), $organization->getId()); } if (!empty($resultBuIds)) { $newUserBuIds = $treeProvider->getTree()->getUserBusinessUnitIds($userId, $organization->getId()); $intersectBUIds = array_intersect($resultBuIds, $newUserBuIds); return !empty($intersectBUIds); } } return false; }