"""权限点定义与角色默认权限""" # ---- 权限点 ---- PERMISSIONS = { # 用户管理 "user:view": "查看用户列表", "user:create": "创建用户", "user:edit": "编辑用户", "user:rename": "修改用户名", "user:delete": "删除用户", "user:assign_permissions": "分配权限", # 账号管理 "account:view_all": "查看所有账号(仅用户名、标签、分配)", "account:view_full": "查看账号完整字段(密码/邮箱,仅管理员)", "account:view_assigned": "查看分配给自己的账号", "account:import": "导入账号", "account:tag": "修改账号标签", "account:check": "账号检测", "account:assign": "分配账号给客服", "account:delete": "删除账号", # 登录任务 "login:batch": "发起批量登录", "login:view_all": "查看所有登录任务", "login:view_assigned": "查看自己账号的登录任务", # Cookie "cookie:view": "查看 Cookie", "cookie:operate": "检测/重登已分配账号 Cookie(不含查看)", "cookie:export": "导出 Cookie", # 斗鱼活动 "douyu:task": "斗鱼任务管理", "douyu:config": "斗鱼配置管理", "yyb:session": "应用宝扫码登录与角色查询", "yyb:recharge": "应用宝充值与付款", "yyb:manage": "接管并操作他人的应用宝任务", "yyb:history": "查看应用宝充值历史", # 虎牙 "huya:account": "虎牙账号管理(兼容旧权限)", "huya:view_all": "查看所有虎牙账号", "huya:view_assigned": "查看分配给自己的虎牙账号", "huya:import": "导入/登录虎牙账号", "huya:tag": "修改虎牙账号标签", "huya:assign": "分配虎牙账号", "huya:delete": "删除虎牙账号", "huya:cookie:view": "查看虎牙 Cookie", "huya:cookie:export": "导出/清除虎牙 Cookie", "huya:task": "虎牙任务管理", "huya:bind": "虎牙绑定操作", "huya:recharge": "虎牙充值操作", "huya:config": "虎牙配置管理", # 代理 & 白名单 "proxy:manage": "代理配置管理", "whitelist:manage": "白名单配置管理", "whitelist:test": "测试白名单", # 系统 "system:settings": "系统设置", "audit:view": "查看审计日志", } # ---- 角色默认权限 ---- ROLE_PERMISSIONS = { "super_admin": list(PERMISSIONS.keys()), # 全部权限 "operation": [ "account:view_all", "account:import", "account:tag", "account:check", "account:assign", "login:batch", "login:view_all", "cookie:view", "cookie:export", "douyu:task", "douyu:config", "yyb:session", "yyb:recharge", "yyb:manage", "yyb:history", "huya:account", "huya:view_all", "huya:import", "huya:tag", "huya:assign", "huya:delete", "huya:cookie:view", "huya:cookie:export", "huya:task", "huya:bind", "huya:recharge", "huya:config", "proxy:manage", "whitelist:manage", "whitelist:test", ], "support": [ "account:view_assigned", "account:tag", "cookie:operate", "douyu:task", "yyb:session", "yyb:history", "huya:view_assigned", "huya:tag", "huya:task", ], } # 角色中文映射 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)