62 lines
1.2 KiB
Python
62 lines
1.2 KiB
Python
from typing import List, Optional
|
|
|
|
from pydantic import BaseModel, constr
|
|
|
|
RoleIDRegex = constr(regex=r"^ROLE\d{2}$")
|
|
PtypeRegex = constr(regex="p")
|
|
|
|
|
|
class CreateRolePolicyReqBody(BaseModel):
|
|
module: str = "模块"
|
|
ptype: PtypeRegex
|
|
sub: str = "sub 角色"
|
|
obj: str = "obj 资源"
|
|
act: str = "act 操作"
|
|
|
|
class Config:
|
|
use_enum_values = True
|
|
|
|
|
|
class EditRolePolicyReqBody(BaseModel):
|
|
obj: Optional[str] = None
|
|
act: Optional[str] = None
|
|
|
|
def del_null_value(self):
|
|
_dict = self.dict()
|
|
for key in list(_dict.keys()):
|
|
if not _dict.get(key):
|
|
del _dict[key]
|
|
return _dict
|
|
|
|
|
|
class RoleAccessPolicyResBody(BaseModel):
|
|
ptype: PtypeRegex
|
|
sub: str = "sub 角色"
|
|
obj: str = "obj 资源"
|
|
act: str = "act 操作"
|
|
|
|
class Config:
|
|
use_enum_values = True
|
|
|
|
|
|
class RolePolicyResBody(BaseModel):
|
|
id: str
|
|
module: str = "模块"
|
|
ptype: PtypeRegex
|
|
sub: str = "sub 角色"
|
|
obj: str = "obj 资源"
|
|
act: str = "act 操作"
|
|
|
|
class Config:
|
|
use_enum_values = True
|
|
|
|
|
|
class CreateReqBody(BaseModel):
|
|
name: str
|
|
|
|
|
|
class RoleFullResBody(BaseModel):
|
|
id: str
|
|
name: str
|
|
raps: List[RolePolicyResBody]
|