public function handle($request, Clousure $next) { $routeAs = route::currentRouteName(); $currentPermission = shopAuth::getSellerPermission(); //$currentPermission = false 表示为店主不用判断权限 //获取当前用户的路由权限 if ($currentPermission && !in_array($routeAs, $currentPermission)) { if (request::ajax()) { return response::json(array('error' => true, 'message' => '无操作权限')); } else { return redirect::action('topshop_ctl_index@nopermission'); } } return $next($request); }
/** * @brief 获取到商家中心的导航菜单和左边栏菜单 * * @return array $res */ private function __getMenu() { $currentPermission = shopAuth::getSellerPermission(); $defaultActionName = route::current()->getActionName(); $shopMenu = config::get('shop'); $shortcutMenuAction = $this->getShortcutMenu(); $sidebar['commonUser']['label'] = '常用菜单'; $sidebar['commonUser']['shortcutMenu'] = true; $sidebar['commonUser']['active'] = true; //是否展开 $sidebar['commonUser']['icon'] = 'glyphicon glyphicon-heart'; //$sidebar['commonUser']['menu'] = $commonUserMenu; foreach ((array) $shopMenu as $menu => $row) { if ($row['display'] === false) { continue; } foreach ((array) $row['menu'] as $k => $params) { //编辑常用菜单使用 if ($params['display'] !== false && (!$currentPermission || in_array($params['as'], $currentPermission))) { $allMenu[$menu]['label'] = $row['label']; if (in_array($params['action'], $shortcutMenuAction)) { $sidebar['commonUser']['menu'][] = $params; $params['isShortcutMenu'] = true; } $allMenu[$menu]['menu'][] = $params; } if ($row['shopIndex'] || !$currentPermission || $params['display'] && in_array($params['as'], $currentPermission)) { if (!$navbar[$menu]) { $navbar[$menu]['label'] = $row['label']; $navbar[$menu]['icon'] = $row['icon']; $navbar[$menu]['action'] = $navbar[$menu]['action'] ? $navbar[$menu]['action'] : $params['action']; $navbar[$menu]['default'] = false; } } //如果为当前的路由则高亮 if (!$navbar[$menu]['default'] && $params['action'] == $defaultActionName && $navbar[$menu]) { $navbar[$menu]['default'] = true; $selectMenu = $menu; } } if (!$row['shopIndex'] && $selectMenu == $menu) { foreach ((array) $row['menu'] as $k => $params) { $sidebar[$menu]['active'] = true; $sidebar[$menu]['label'] = $row['label']; $sidebar[$menu]['icon'] = $row['icon']; if (!$currentPermission || in_array($params['as'], $currentPermission)) { $params['default'] = $params['action'] == $defaultActionName ? true : false; $sidebar[$menu]['menu'][] = $params; } } } } $res['all'] = $allMenu; $res['navbar'] = $navbar; $res['sidebar'] = $sidebar; return $res; }