fix: 后台用户菜单对俱乐部超级管理000001可见(page_id兜底)

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
XingQue
2026-07-26 02:21:18 +08:00
parent 6443336bd9
commit 7cb41bf4d7
2 changed files with 9 additions and 2 deletions

View File

@@ -30,10 +30,14 @@ def _has_super_perm(permissions):
def _page_visible(page, permissions, user):
page_id = getattr(page, 'page_id', '') or ''
if page.require_group_manage:
return can_manage_admin_assignments(user)
if getattr(page, 'require_admin_user_manage', False):
# 后台用户:本店超级管理 000001 / 集团 / 系统超管均可。
# 注意:历史上 DB 模型缺 require_admin_user_manage 字段,导致该页永远不可见,必须按 page_id 兜底。
if page_id == 'admin.user' or getattr(page, 'require_admin_user_manage', False):
return can_access_admin_user_management(user, permissions)
if page.require_super:
@@ -165,6 +169,7 @@ def build_menu_access_payload(request, username=None):
path_by_id = {p.page_id: p.path for p in pages if p.path}
visible_paths = [path_by_id[pid] for pid in visible_ids if pid in path_by_id]
is_super = _has_super_perm(permissions) or is_system_super_admin(request.user)
return {
'visible_page_ids': sorted(set(visible_ids)),
'visible_paths': visible_paths,
@@ -178,6 +183,7 @@ def build_menu_access_payload(request, username=None):
'roles_in_scope': roles_detail,
'can_switch_club': bool(club_ctx.get('can_switch_club')),
'is_group_admin': bool(club_ctx.get('is_group_admin')),
'is_super': bool(is_super),
'menu_ready': True,
'menu_source': menu_source,
}, None

View File

@@ -54,8 +54,9 @@ KEFU_MENU_ROW_DEFS = [
'require_group_manage': True},
{'page_id': 'admin.club-config', 'name': '俱乐部密钥配置', 'path': '/admin/club-config', 'parent_id': 'admin', 'sort_order': 73,
'require_group_manage': True},
# require_super 兜底(旧 DB 无 require_admin_user_manage 列时仍可显示);运行时仍按 page_id=admin.user 走用户管理闸门
{'page_id': 'admin.user', 'name': '后台用户', 'path': '/admin/user', 'parent_id': 'admin', 'sort_order': 74,
'require_admin_user_manage': True},
'require_super': True, 'require_admin_user_manage': True},
{'page_id': 'admin.operation-log', 'name': '操作日志', 'path': '/admin/operation-log', 'parent_id': 'admin', 'sort_order': 75,
'perm_codes': ['czrz666']},
{'page_id': 'punishment', 'name': '处罚管理', 'path': '/punishment', 'parent_id': '', 'sort_order': 80,