コード例 #1
0
ファイル: EntityListener.php プロジェクト: xamin123/platform
 /**
  * @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()));
     }
 }
コード例 #3
0
 /**
  * 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();
     });
 }
コード例 #4
0
ファイル: UserTest.php プロジェクト: xamin123/platform
 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);
 }
コード例 #5
0
 /**
  * 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;
 }