public function indexAction() { $return_array = array(); // danh sách resources $resource_table = $this->getServiceLocator()->get('Permission\\Model\\JosAdminResourceTable'); $resources = $resource_table->getResourceByArrayConditionAndArrayColumn(array('is_hidden' => 0), array('resource_id', 'resource', 'resource_name', 'parent_id', 'resource_type')); // sử dụng plugin $plugin_tree = $this->TreePlugin(); $resources = $plugin_tree->outputTree($resources, 0); // get danh sách quyền $jos_admin_role_table = $this->getServiceLocator()->get('Permission\\Model\\JosAdminRoleTable'); $roles = $jos_admin_role_table->getRoleByArrayConditionAndArrayColumn(); // edit permission form $edit_permission_form = new EditPermissionForm($roles, $resources, $this->getServiceLocator()); // kiểm tra post dữ liệu $request = $this->getRequest(); if ($request->isPost()) { $post = $request->getPost(); $edit_permission_form->setData($post); // kiểm tra form nếu hợp lệ if ($edit_permission_form->isValid()) { // lấy role_id đã post $role_id = $post['role_id']; unset($post['role_id']); // kiểm tra role id có tồn tại không $roles_exist = $jos_admin_role_table->getRoleByArrayConditionAndArrayColumn(array('role_id' => $role_id), array('role_name')); if ($roles_exist) { $jos_admin_rule_table = $this->getServiceLocator()->get('Permission\\Model\\JosAdminRuleTable'); $jos_admin_rule_table->deleteRuleByRoleId($role_id); foreach ($post as $key => $p) { if ($p) { // lưu quyền truy cập module vào bảng rule, để khi chọn lại rule này thì checkbox bằng true $rule = new JosAdminRule(); $rule->setRoleId($role_id); $rule->setResourceId($p); $jos_admin_rule_table->saveResource($rule); } } $this->flashMessenger()->addSuccessMessage('Chúc mừng, Cập nhật quyền thành công.'); return $this->redirect()->toRoute('permission/permission', array('index')); } // Lỗi, role id không tồn tại $this->flashMessenger()->addErrorMessage('Thông báo, Role không tồn tại. Vui lòng kiểm tra lại!'); return $this->redirect()->toRoute('permission/permission', array('index')); } } $return_array['resources'] = $resources; $return_array['edit_permission_form'] = $edit_permission_form; return $return_array; }
public function saveResource(JosAdminRule $rule) { $data = array('rule_id' => $rule->getRuleId(), 'role_id' => $rule->getRoleId(), 'resource_id' => $rule->getResourceId()); $rule_id = (int) $rule->getRuleId(); if ($rule_id == 0) { $this->tableGateway->insert($data); } else { if ($this->getRuleByArrayConditionAndArrayColumn(array('rule_id' => $rule_id), array('resource_id'))) { $this->tableGateway->update($data, array('rule_id' => $rule_id)); } else { return false; } } return true; }