Example #1
0
 /**
  * @param string|array|AssertionInterface $assertion
  * @return null|AssertionInterface
  */
 protected function normalizeAssertion($assertion)
 {
     if (!$assertion) {
         return;
     }
     if ($assertion instanceof AssertionInterface) {
         return $assertion;
     }
     $assertion = (array) $assertion;
     if (count($assertion) > 1) {
         $assertionAggregate = new AssertionAggregate();
         foreach ($ruleData['assertion'] as $plugin) {
             if (is_string($plugin) && $this->assertionPluginManager->has($plugin)) {
                 $plugin = $this->assertionPluginManager->get($plugin);
             }
             if ($plugin instanceof AssertionInterface) {
                 $assertionAggregate->addAssertion($plugin);
             }
         }
         return $assertionAggregate;
     }
     $assertion = reset($assertion);
     if (!$assertion instanceof AssertionInterface) {
         if (is_string($assertion) && $this->assertionPluginManager->has($assertion)) {
             $assertion = $this->assertionPluginManager->get($assertion);
         } else {
             $assertion = null;
         }
     }
     return $assertion;
 }
Example #2
0
 /**
  * @param array $rule
  * @throws InvalidRuleException
  * @return Rule
  */
 protected function loadRule(array $rule)
 {
     switch (count($rule)) {
         case 4:
             list($roles, $resources, $privileges, $assertion) = $rule;
             if (is_string($assertion)) {
                 $assertion = $this->assertionPluginManager->get($assertion);
             }
             return new Rule($roles, $resources, $privileges, $assertion);
         case 3:
             list($roles, $resources, $privileges) = $rule;
             return new Rule($roles, $resources, $privileges);
         case 2:
             list($roles, $resources) = $rule;
             return new Rule($roles, $resources);
         default:
             throw new InvalidRuleException('Invalid rule definition: ' . print_r($rule, true));
     }
 }