37 lines
1010 B
Python
37 lines
1010 B
Python
from enum import Enum
|
|
|
|
class UserRole(str, Enum):
|
|
"""用户角色枚举"""
|
|
ADMIN = "ADMIN" # 管理员 - 完全权限
|
|
OPERATOR = "OPERATOR" # 操作员 - 可修改数据
|
|
USER = "USER" # 普通用户 - 读写权限
|
|
VIEWER = "VIEWER" # 观察者 - 仅查询权限
|
|
|
|
def __str__(self):
|
|
return self.value
|
|
|
|
@classmethod
|
|
def get_hierarchy(cls) -> dict:
|
|
"""
|
|
获取角色层级(数字越大权限越高)
|
|
"""
|
|
return {
|
|
cls.VIEWER: 1,
|
|
cls.USER: 2,
|
|
cls.OPERATOR: 3,
|
|
cls.ADMIN: 4,
|
|
}
|
|
|
|
def has_permission(self, required_role: 'UserRole') -> bool:
|
|
"""
|
|
检查当前角色是否有足够权限
|
|
|
|
Args:
|
|
required_role: 需要的最低角色
|
|
|
|
Returns:
|
|
True if has permission
|
|
"""
|
|
hierarchy = self.get_hierarchy()
|
|
return hierarchy[self] >= hierarchy[required_role]
|