Inheritance: implements Resource\Acl\RuleInterface
Esempio n. 1
0
 /**
  * Save rule
  *
  * @param array $values
  * @param bool $isUser
  * @param \Newscoop\Entity\Acl\Rule|null $rule
  * @return \Newscoop\Entity\Acl\Rule|null
  */
 public function save(array $values, $isUser = false, Rule $rule = null)
 {
     $role = $this->getEntityManager()->getReference('Newscoop\\Entity\\Acl\\Role', (int) $values['role']);
     $resource = (string) $values['resource'];
     $action = (string) $values['action'];
     $type = array_key_exists('type', $values) && strtolower($values['type']) == 'allow' ? 'allow' : 'deny';
     $conflicts = $this->findBy(array('role' => (int) $values['role'], 'resource' => $resource, 'action' => $action));
     foreach ($conflicts as $conflict) {
         $this->getEntityManager()->remove($conflict);
     }
     $this->getEntityManager()->flush();
     if ('deny' == $type && !$isUser) {
         // don't add deny rules for user groups
         return;
     }
     if (null === $rule) {
         $rule = new Rule();
     }
     $rule->setType($values['type']);
     $rule->setRole($role);
     $rule->setResource($resource);
     $rule->setAction($action);
     $this->getEntityManager()->persist($rule);
     $this->getEntityManager()->flush();
     return $rule;
 }
 public function getAction()
 {
     $this->__load();
     return parent::getAction();
 }