Skip to content

Commit 89462fe

Browse files
myxiaoaoclaude
andcommitted
fix: 未绑定角色的菜单只有超级管理员可见
修改菜单权限检查逻辑: - 菜单没有绑定任何角色/权限时,普通用户不可见 - 只有超级管理员可以查看所有菜单(包括未绑定的) 同时修改权限中间件: - 菜单没有绑定角色时,普通用户不允许访问 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent 148e814 commit 89462fe

File tree

2 files changed

+12
-12
lines changed

2 files changed

+12
-12
lines changed

src/Http/Middleware/Permission.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,9 +85,9 @@ protected function checkMenuPermission(Request $request, $user): bool
8585

8686
$menuRoles = $menu->roles->pluck('slug')->toArray();
8787

88-
// 如果菜单没有绑定角色,允许访问
88+
// 如果菜单没有绑定角色,普通用户不允许访问
8989
if (empty($menuRoles)) {
90-
return true;
90+
return false;
9191
}
9292

9393
// 检查用户角色是否在菜单绑定的角色中

src/Layout/Menu.php

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -217,18 +217,9 @@ protected function checkPermission($item)
217217
return true;
218218
}
219219

220-
$permissionIds = $item['permission_id'] ?? null;
221-
$roles = array_column(Helper::array($item['roles'] ?? []), 'slug');
222-
$permissions = array_column(Helper::array($item['permissions'] ?? []), 'slug');
223-
224-
// 如果菜单没有绑定任何权限和角色,默认可见
225-
if (! $permissionIds && ! $roles && ! $permissions) {
226-
return true;
227-
}
228-
229220
$user = Admin::user();
230221

231-
// 未登录用户不能查看需要权限的菜单
222+
// 未登录用户不能查看菜单
232223
if (! $user) {
233224
return false;
234225
}
@@ -238,6 +229,15 @@ protected function checkPermission($item)
238229
return true;
239230
}
240231

232+
$permissionIds = $item['permission_id'] ?? null;
233+
$roles = array_column(Helper::array($item['roles'] ?? []), 'slug');
234+
$permissions = array_column(Helper::array($item['permissions'] ?? []), 'slug');
235+
236+
// 如果菜单没有绑定任何权限和角色,普通用户不可见
237+
if (! $permissionIds && ! $roles && ! $permissions) {
238+
return false;
239+
}
240+
241241
// 检查用户角色是否匹配菜单绑定的角色
242242
if (! empty($roles) && $user->visible($roles)) {
243243
return true;

0 commit comments

Comments
 (0)