| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- <?php
- declare (strict_types=1);
- namespace app\controller;
- use app\BaseController;
- use app\service\MenuService;
- use think\facade\Request;
- class Menu extends BaseController
- {
- /**
- * 获取用户菜单树
- */
- public function getMenuTree()
- {
- $loginInfo = checkUserLogin();
- if (!$loginInfo) {
- return json_error([], '请先登录');
- }
-
- try {
- $menuTree = MenuService::getMenuTree($loginInfo);
- return json_success($menuTree, '获取菜单成功');
- } catch (\Exception $e) {
- return json_error([], '获取菜单失败:' . $e->getMessage());
- }
- }
- /**
- * 获取面包屑导航
- */
- public function getBreadcrumb()
- {
- $loginInfo = checkUserLogin();
- if (!$loginInfo) {
- return json_error([], '请先登录');
- }
- $menuId = Request::get('menu_id', 0, 'intval');
- if (!$menuId) {
- return json_error([], '菜单ID不能为空');
- }
- try {
- $breadcrumb = MenuService::getBreadcrumb($menuId);
- return json_success($breadcrumb, '获取面包屑导航成功');
- } catch (\Exception $e) {
- return json_error([], '获取面包屑导航失败:' . $e->getMessage());
- }
- }
- /**
- * 获取所有控制器权限配置(用于角色权限分配)
- */
- public function getControllerPermissions()
- {
- $loginInfo = checkUserLogin();
- if (!$loginInfo) {
- return json_error([], '请先登录');
- }
-
- // 检查是否有查看权限配置的权限
- if (!checkPermission($loginInfo, 'Permission', 'list')) {
- return json_error([], '没有查看权限配置的权限');
- }
- try {
- $permissions = MenuService::getControllerPermissions();
- return json_success($permissions, '获取权限配置成功');
- } catch (\Exception $e) {
- return json_error([], '获取权限配置失败:' . $e->getMessage());
- }
- }
- /**
- * 根据控制器检查菜单权限
- */
- public function checkMenuPermission()
- {
- $loginInfo = checkUserLogin();
- if (!$loginInfo) {
- return json_error([], '请先登录');
- }
- $controller = Request::get('controller', '', 'trim');
- $action = Request::get('action', '', 'trim');
- if (empty($controller)) {
- return json_error([], '控制器名称不能为空');
- }
- $hasPermission = false;
- if (empty($action)) {
- // 只检查控制器权限
- $hasPermission = checkPermission($loginInfo, $controller, 'list');
- } else {
- // 检查具体操作权限
- $hasPermission = checkPermission($loginInfo, $controller, $action);
- }
- return json_success([
- 'has_permission' => $hasPermission,
- 'controller' => $controller,
- 'action' => $action
- ], $hasPermission ? '有权限访问' : '无权限访问');
- }
- }
|