url, array('admin/index/login', 'admin/index/logout', 'admin/index/verify'))) { $this->redirect('admin/index/login'); } if (!in_array($this->url, array('admin/index/login', 'admin/index/logout', 'admin/index/verify'))) { //获取公众号 $this->assign('site',''); //菜单设置 $this->setMenu(); $this->setMeta(); } } final protected function checkRule($group,$url) { $is = false; $RuleId = db('auth_rule')->where('name',$url)->value('id'); if(empty($RuleId)){ return false; } $Rules = db('auth_group')->where('id',$group)->value('rules'); $Rules = explode(',',$Rules); foreach($Rules as $k=>$v){ if($RuleId==$v){ $is = true; } } return $is; } protected function setMenu() { //一级分类 $category = array(); $controller = $this->url; $where['pid'] = 0; $where['hide'] = 0; $where['type'] = 'admin'; $category = db('menu')->field('id,title,url,icon,"" as style')->where($where)->order('sort asc')->select(); $categoryisid = session('user_auth.uid'); $u_group = session('user_auth.group'); foreach ($category as $key => $value) { $isOneRule = $this->checkRule($u_group,$value['url']); if ($u_group != 999 && $isOneRule==false) { unset($category[$key]); continue; //继续循环 } } foreach ($category as $k => $v ) { if (strpos($v['url'],$controller) !==false) { $category [$k]['style'] = "active"; } $where = array(); $where['pid'] = $v['id']; $where['hide'] = 0; $second_urls = db('Menu')->where($where)->field('id,pid,title,url,icon,tip')->order('sort')->select(); // 检测2级菜单权限 $to_check_urls = array(); foreach ($second_urls as $key=>$value) { if ($controller == $value['url']) { $second_urls[$key]['style'] = "active"; }else{ $pid = db('Menu')->where(['url'=>$controller,'hide'=>0])->where('group','')->value('pid'); if($pid){ $third_url = db('Menu')->where(['id'=>$pid,'hide'=>0])->value('url'); if($third_url == $value['url']){ $second_urls[$key]['style'] = "active"; }else{ $second_urls[$key]['style'] = ""; } }else{ $second_urls[$key]['style'] = ""; } } $isTreeRule = $this->checkRule($u_group,$value['url']); if ($u_group !=999 && $isTreeRule==false) { unset($second_urls[$key]); continue; //继续循环 } } $category [$k]['doc'] = $second_urls; } $this->assign('__menu__', $category); } }