fix: 俱乐部超级管理000001可添加/管理本店后台用户,无需集团权限

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
XingQue
2026-07-26 02:14:33 +08:00
parent 98b4526efa
commit 6443336bd9
2 changed files with 43 additions and 13 deletions

View File

@@ -190,27 +190,36 @@ def get_switchable_club_ids(user):
def can_manage_roles_for_club(user, permissions, club_id):
"""
是否可为指定俱乐部分配/移除功能角色。
集团高层:全部俱乐部;否则须在该俱乐部拥有 000001 超级管理权限。
是否可为指定俱乐部分配/移除功能角色、添加本店后台用户
集团高层:全部俱乐部;否则须在该俱乐部拥有 000001 超级管理(不必有集团权限
"""
if can_manage_admin_assignments(user, permissions):
return True
cid = (club_id or '').strip()
if not cid:
return False
from jituan.services.club_rbac import resolve_permission_codes_for_club
codes = resolve_permission_codes_for_club(user, cid)
return '000001' in codes
from jituan.constants import DATA_SCOPE_SINGLE
from jituan.services.club_rbac import resolve_effective_permission_codes
# 与菜单/verify_kefu 同一套:含 legacy避免「页面能进但添加按钮出不来」
codes = resolve_effective_permission_codes(user, cid, DATA_SCOPE_SINGLE)
return '000001' in (codes or [])
def get_manageable_club_ids(user, permissions=None):
"""当前操作者可管理角色分配的俱乐部集合。"""
def get_manageable_club_ids(user, permissions=None, current_club_id=None):
"""
当前操作者可管理角色/后台用户的俱乐部集合。
current_club_id若请求上下文已带 000001务必把当前顶栏俱乐部算进去。
"""
if can_manage_admin_assignments(user, permissions):
return {c.club_id for c in Club.query.filter(status=1)}
return {
ids = {
c.club_id for c in Club.query.filter(status=1)
if can_manage_roles_for_club(user, permissions, c.club_id)
}
cid = (current_club_id or '').strip()
if cid and permissions and '000001' in permissions:
ids.add(cid)
return ids
def can_access_admin_user_management(user, permissions=None):