Пример #1
0
 /**
  * 
  * Done
  * @return ViewModel
  */
 public function createAction()
 {
     $request = $this->getRequest();
     $entityManager = $this->getEntityManager();
     $roles = $entityManager->getRepository('Authorization\\Entity\\Role')->findAll();
     $formRoles = [];
     foreach ($roles as $role) {
         $formRoles[$role->getRoleId()] = $role->getRoleName();
     }
     $roleForm = new RoleForm($formRoles);
     if ($request->isPost()) {
         $data = $request->getPost();
         $roleForm->setInputFilter(new RoleFilter());
         $roleForm->setData($data);
         if ($roleForm->isValid()) {
             $data = $roleForm->getData();
             $role = new EntityRole();
             $role->setRoleName($data['role_name']);
             $parents = new ArrayCollection();
             foreach ($data['role_parent'] as $parentRoleId) {
                 $parents->add($entityManager->getReference('Authorization\\Entity\\Role', $parentRoleId));
             }
             $role->addParents($parents);
             try {
                 $entityManager->persist($role);
                 $entityManager->flush();
                 $this->redirect()->toRoute('authorization/role', array('action' => 'index'));
             } catch (Exception $ex) {
                 return new ViewModel(array('message' => $ex->getCode() . ': ' . $ex->getMessage()));
             }
         }
     }
     return new ViewModel(array('roleForm' => $roleForm));
 }
Пример #2
0
 /**
  * Apesar de não intuitivo este método define quem serão os ancestrais de $role.
  *
  * Durante a edição de um novo cargo este método insere todas os papéis dos quais o papel correspondente ao cargo
  * será herdeiro (herdará previlégios). Se o papel já possui herança com um dos papéis do vetor ele é ignorado.
  * 
  * @param Collection $roles
  * @return Self
  */
 public function addParentRoles(Collection $roles)
 {
     $currentRoles = $this->role->getParents();
     $remove = new ArrayCollection();
     $add = new ArrayCollection();
     foreach ($roles as $r) {
         if (!$currentRoles->contains($r)) {
             $add->add($r);
         }
     }
     foreach ($currentRoles as $r) {
         if (!$roles->contains($r)) {
             $remove->add($r);
         }
     }
     $this->role->removeParents($remove);
     $this->role->addParents($add);
     return $this;
 }