"""权限点定义与角色默认权限""" # ---- 权限点 ---- PERMISSIONS = { # 用户管理 "user:view": "查看用户列表", "user:create": "创建用户", "user:edit": "编辑用户", "user:delete": "删除用户", "user:assign_permissions": "分配权限", # 账号管理 "account:view_all": "查看所有账号(完整字段)", "account:view_assigned": "查看分配给自己的账号(仅用户名)", "account:import": "导入账号", "account:assign": "分配账号给客服", "account:delete": "删除账号", # 登录任务 "login:batch": "发起批量登录", "login:view_all": "查看所有登录任务", "login:view_assigned": "查看自己账号的登录任务", # Cookie "cookie:view": "查看 Cookie", "cookie:export": "导出 Cookie", # 代理 & 白名单 "proxy:manage": "代理配置管理", "whitelist:manage": "白名单配置管理", "whitelist:test": "测试白名单", # 系统 "system:settings": "系统设置", "audit:view": "查看审计日志", } # ---- 角色默认权限 ---- ROLE_PERMISSIONS = { "super_admin": list(PERMISSIONS.keys()), # 全部权限 "operation": [ "account:view_all", "account:import", "account:assign", "account:delete", "login:batch", "login:view_all", "cookie:view", "cookie:export", "proxy:manage", "whitelist:manage", "whitelist:test", ], "support": [ "account:view_assigned", ], } # 角色中文映射 ROLE_LABELS = { "super_admin": "超级管理员", "operation": "运营", "support": "客服", } def get_role_permissions(role: str) -> list[str]: """获取角色拥有的权限列表。""" return ROLE_PERMISSIONS.get(role, []) def get_user_permissions(user) -> list[str]: """获取用户的实际权限列表。 优先使用用户自定义权限(custom_permissions), 若为 None 则回退到角色默认权限。 """ if user.custom_permissions is not None: return user.custom_permissions return get_role_permissions(user.role) def has_permission(role: str, permission: str) -> bool: """检查角色是否拥有某权限(仅检查角色默认权限,不考虑自定义权限)。 注意:对于需要考虑用户自定义权限的场景,请使用 user_has_permission()。 """ return permission in get_role_permissions(role) def user_has_permission(user, permission: str) -> bool: """检查用户是否拥有某权限(考虑自定义权限)。 优先使用用户的 custom_permissions,若为 None 则回退到角色默认权限。 """ return permission in get_user_permissions(user)