diff --git a/application/admin/controller/Index.php b/application/admin/controller/Index.php index 9457a26a5..00de0e75a 100644 --- a/application/admin/controller/Index.php +++ b/application/admin/controller/Index.php @@ -3,15 +3,43 @@ namespace app\admin\controller; use controller\BasicAdmin; +use library\Tools; use think\Db; class Index extends BasicAdmin { public function index() { $this->assign('ptitle', '后台管理'); + $menuList = Db::name('SystemMenu')->field('title,id,pid,url,icon')->where('status', '1')->select(); + $result = Tools::arr2tree($menuList); + $this->assign('menus', $this->_filterMenu($result)); return view(); } + /** + * 后台主菜单权限过滤 + * --- 权限只检测节点三级 + * @param array $menus + * @return array + */ + private function _filterMenu($menus) { + foreach ($menus as $key => &$menu) { + if (!empty($menu['sub'])) { + $menu['sub'] = $this->_filterMenu($menu['sub']); + } + if (!empty($menu['sub'])) { + $menu['url'] = '#'; + } elseif (stripos($menu['url'], 'http') === 0) { + continue; + } elseif ($menu['url'] !== '#' && auth(join('/', array_slice(explode('/', $menu['url']), 0, 3)))) { + $menu['url'] = url($menu['url']); + } else { + unset($menus[$key]); + } + } + return $menus; + } + public function main() { $version = Db::query('select version() as ver'); $version = array_pop($version); diff --git a/application/common.php b/application/common.php index 1864f5380..a14300058 100644 --- a/application/common.php +++ b/application/common.php @@ -53,6 +53,15 @@ function decode($string) { return unserialize(base64_decode($data)); } +/** + * RBAC节点权限验证 + * @param string $node + * @return bool + */ +function auth($node) { + return true; +} + /** * 从配置表读取配置信息 * @param string $name diff --git a/application/extra/view/admin.left.html b/application/extra/view/admin.left.html index 8b097b997..09a00190c 100644 --- a/application/extra/view/admin.left.html +++ b/application/extra/view/admin.left.html @@ -4,122 +4,49 @@ -
-
\ No newline at end of file diff --git a/application/extra/view/admin.top.html b/application/extra/view/admin.top.html index 0cb7c38d1..7163a328d 100644 --- a/application/extra/view/admin.top.html +++ b/application/extra/view/admin.top.html @@ -6,13 +6,19 @@ - - 系统信息 + {volist name='menus' id='pmenu'} + {empty name='pmenu.sub'} + + {notempty name='$pmenu.icon'}{/notempty} {$pmenu.title} - - 系统管理 + {else/} + + {notempty name='$pmenu.icon'}{/notempty} {$pmenu.title} + {/empty} + {/volist} +