public function indexAction()
 {
     if ($this->request->isPost()) {
         //Validate the role
         $role = Roles::findFirstById($this->request->getPost('role_id'));
         if ($role) {
             if ($this->request->hasPost('permissions')) {
                 //Deletes the current permissions
                 $role->getPermissions()->delete();
                 //Save the new permissions
                 foreach ($this->request->getPost('permissions') as $permission) {
                     $parts = explode('.', $permission);
                     $permission = new Permissions();
                     $permission->rolesId = $role->id;
                     $permission->resource = $parts[0];
                     $permission->action = $parts[1];
                     $permission->save();
                 }
                 $this->flash->success('Permissions were updated with success');
             }
             //Rebuild the ACL with
             $this->acl->rebuild();
             //Pass the current permissions to the view
             $this->view->permissions = $this->acl->getPermissions($role);
         }
         $this->view->role = $role;
     }
 }
 /**
  * Deletes a Profile
  *
  * @param int $id
  */
 public function deleteAction($id)
 {
     $profile = Roles::findFirstById($id);
     if (!$profile) {
         $this->flash->error("Роль не найдена");
         return $this->dispatcher->forward(array('action' => 'index'));
     }
     if (!$profile->delete()) {
         $this->flash->error($profile->getMessages());
     } else {
         $this->flash->success("Роль удалена");
     }
     return $this->dispatcher->forward(array('action' => 'index'));
 }
Exemple #3
0
 /**
  * Rebuils the access list into a file
  *
  */
 public function rebuild()
 {
     $acl = new AclMemory();
     $acl->setDefaultAction(\Phalcon\Acl::DENY);
     //Register roles
     $profiles = Roles::find('active = "Y"');
     foreach ($profiles as $profile) {
         $acl->addRole(new AclRole($profile->name));
     }
     foreach ($this->_privateResources as $resource => $actions) {
         $acl->addResource(new AclResource($resource), $actions);
     }
     //Grant acess to private area to role Users
     foreach ($profiles as $profile) {
         //Grant permissions in "permissions" model
         foreach ($profile->getPermissions() as $permission) {
             $acl->allow($profile->name, $permission->resource, $permission->action);
         }
         //Always grant these permissions
         $acl->allow($profile->name, 'users', 'changePassword');
     }
     file_put_contents(__DIR__ . '/../../../var/cache/acl/data.txt', serialize($acl));
     //Store the ACL in APC
     if (function_exists('apc_store')) {
         apc_store('shop-acl', $acl);
     }
     return $acl;
 }