Ejemplo n.º 1
0
 /**
  *  检查用户权限
  * @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');
             }
         }
     }
 }
Ejemplo n.º 2
0
 /**
  * [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;
 }
Ejemplo n.º 3
0
 public function _initRoute(Dispatcher $dispatcher)
 {
     $router = $dispatcher->getRouter();
     $rest = RegisterRest::initRegister();
     $router->addConfig(new Yaf\Config\Simple($rest));
 }