maxkb/apps/common/constants/permission_constants.py
2023-09-15 17:40:35 +08:00

99 lines
2.5 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# coding=utf-8
"""
@project: qabot
@Author
@file permission_constants.py
@date2023/9/13 18:23
@desc: 权限,角色 常量
"""
from enum import Enum
from typing import List
class Group(Enum):
"""
权限组 一个组一般对应前段一个菜单
"""
USER = "USER"
class Operate(Enum):
"""
一个权限组的操作权限
"""
READ = 'READ'
EDIT = "EDIT"
CREATE = "CREATE"
DELETE = "DELETE"
class Role:
def __init__(self, name: str, decs: str):
self.name = name
self.decs = decs
class RoleConstants(Enum):
ADMIN = Role("管理员", "管理员,预制目前不会使用")
USER = Role("用户", "用户所有权限")
SESSION = Role("会话", decs="只拥有应用会话框接口权限")
class Permission:
"""
权限信息
"""
def __init__(self, group: Group, operate: Operate, roles: List[RoleConstants]):
self.group = group
self.operate = operate
self.roleList = roles
def __str__(self):
return self.group.value + ":" + self.operate.value
class PermissionConstants(Enum):
"""
权限枚举
"""
USER_READ = Permission(group=Group.USER, operate=Operate.READ, roles=[RoleConstants.ADMIN, RoleConstants.USER])
USER_EDIT = Permission(group=Group.USER, operate=Operate.EDIT, roles=[RoleConstants.ADMIN, RoleConstants.USER])
USER_DELETE = Permission(group=Group.USER, operate=Operate.EDIT, roles=[RoleConstants.USER])
def get_permission_list_by_role(role: RoleConstants):
"""
根据角色 获取角色对应的权限
:param role: 角色
:return: 权限
"""
return list(map(lambda k: PermissionConstants[k],
list(filter(lambda k: PermissionConstants[k].value.roleList.__contains__(role),
PermissionConstants.__members__))))
class Auth:
"""
用于存储当前用户的角色和权限
"""
def __init__(self, role_list: List[RoleConstants], permission_list: List[PermissionConstants]):
self.role_list = role_list
self.permission_list = permission_list
class CompareConstants(Enum):
# 或者
OR = "OR"
# 并且
AND = "AND"
class ViewPermission:
def __init__(self, roleList: List[RoleConstants], permissionList: List[PermissionConstants],
compare=CompareConstants.OR):
self.roleList = roleList
self.permissionList = permissionList
self.compare = compare