/** * 检查用户权限 * @param Request_Abstract * @param Response_Abstract * @return [type] */ public function checkMemberPermission(Request_Abstract $request, Response_Abstract $response) { $config = Application::app()->getConfig()->get("roles")->toArray(); // 是否开启权限检查 if ($config and $config['permission'] == false) { return; } $rest = RegisterRest::initRegister(); // 获取当前路由 $this->current_key = $this->getSystemAction($request->getControllerName(), $request->getActionName(), $rest); // 如果路由不存在,跳转到默认路由位置。 // 必须在 RegisterRest 注册 route 才能获取访问权限 if (!$this->current_key) { $request->setControllerName('Index'); $request->setActionName('index'); return; } $check = explode(',', $config['check']); $member = explode(',', $config['member']); if ($this->current_key) { $members = MembersManage::instance(); $user = $members->getCurrentSession(); $controlName = explode('_', $this->current_key); $userpermission = isset($user['permission']) ? explode(',', $user['permission']) : array(); // 如果是超级管理员,不检查权限。 if ($user && $user['role_id'] == 1) { return; } if ($user) { // 检查普通用户的权限 if ($user and $user['role_id'] > 1 and !in_array($this->current_key, $userpermission)) { $request->setControllerName('Index'); $request->setActionName('index'); } } else { //获取匿名用户禁止路由权限 if (in_array($controlName[0], $check)) { $request->setControllerName('Index'); $request->setActionName('index'); } } } }
/** * [getAllRoles description] * @return [type] [description] */ public function getAllRoles() { $cate = RoleCategory::instance(); $categorys = $cate->order("sort")->fetchList(); $roles = RegisterRest::initRegister(); $rolesgroup = array(); if ($categorys) { foreach ($categorys as $key => $category) { $rolesgroup[$key]['name'] = $category['summary']; $rolesgroup[$key]['key'] = $category['name']; foreach ($roles as $key2 => $value) { $controller = explode('_', $key2); if ($category['name'] == $controller[0]) { $rolesgroup[$key]['group'][] = array('name' => $value['name'], 'key' => $key2); } } } } return $rolesgroup; }
public function _initRoute(Dispatcher $dispatcher) { $router = $dispatcher->getRouter(); $rest = RegisterRest::initRegister(); $router->addConfig(new Yaf\Config\Simple($rest)); }