public function testFromOrganization()
 {
     $organization = new BusinessUnit();
     $class = new \ReflectionClass($organization);
     $prop = $class->getProperty('id');
     $prop->setAccessible(true);
     $prop->setValue($organization, self::IDENTITY_ID);
     $securityIdentity = BusinessUnitSecurityIdentity::fromBusinessUnit($organization);
     $this->assertEquals(self::IDENTITY_ID, $securityIdentity->getId());
     $this->assertEquals(self::IDENTITY_CLASS, $securityIdentity->getClass());
 }
 /**
  * {@inheritdoc}
  */
 public function getSecurityIdentities(TokenInterface $token)
 {
     $sids = parent::getSecurityIdentities($token);
     // business unit security identities
     if (!$token instanceof AnonymousToken) {
         $user = $token->getUser();
         if ($user instanceof User) {
             foreach ($user->getBusinessUnits() as $businessUnit) {
                 $sids[] = BusinessUnitSecurityIdentity::fromBusinessUnit($businessUnit);
             }
         }
     }
     return $sids;
 }
Example #3
0
 /**
  * {@inheritdoc}
  *
  * @param string|RoleInterface|UserInterface|TokenInterface|BusinessUnitInterface $identity
  */
 public function getSid($identity)
 {
     if (is_string($identity)) {
         return new RoleSecurityIdentity($identity);
     } elseif ($identity instanceof RoleInterface) {
         return new RoleSecurityIdentity($identity->getRole());
     } elseif ($identity instanceof UserInterface) {
         return UserSecurityIdentity::fromAccount($identity);
     } elseif ($identity instanceof TokenInterface) {
         return UserSecurityIdentity::fromToken($identity);
     } elseif ($identity instanceof BusinessUnitInterface) {
         return BusinessUnitSecurityIdentity::fromBusinessUnit($identity);
     }
     throw new \InvalidArgumentException(sprintf('$identity must be a string or implement one of RoleInterface, UserInterface, TokenInterface,' . ' BusinessUnitInterface (%s given)', is_object($identity) ? get_class($identity) : gettype($identity)));
 }
Example #4
0
 /**
  * Generate SIDs from entities
  *
  * @param Share $model
  *
  * @return array
  */
 protected function generateSids(Share $model)
 {
     $newSids = [];
     foreach ($model->getEntities() as $entity) {
         if ($entity instanceof User) {
             $newSids[] = UserSecurityIdentity::fromAccount($entity);
         } elseif ($entity instanceof BusinessUnit) {
             $newSids[] = BusinessUnitSecurityIdentity::fromBusinessUnit($entity);
         }
     }
     return $newSids;
 }