feat: add admin session rbac foundation
This commit is contained in:
1 parent
8f000811a8
commit
2cdf7f9d7a
22 files changed
+1945
-68
No files matched your search
@@ -658,3 +658,84 @@ class ConciergeAdvisorPatch(BaseModel):
|
||||
@classmethod
|
||||
def normalize_patch_details(cls, value: list[dict[str, str]]) -> list[dict[str, str]]:
|
||||
return [ConciergeDetailIn.model_validate(detail).model_dump() for detail in value]
|
||||
|
||||
|
||||
DataScope = Literal["all", "dept", "dept_and_children", "custom_dept", "self"]
|
||||
MenuType = Literal["directory", "page", "button"]
|
||||
|
||||
|
||||
class AdminRoleCreate(BaseModel):
|
||||
name: str = Field(min_length=1, max_length=80)
|
||||
code: str = Field(min_length=1, max_length=80, pattern=r"^[a-z][a-z0-9_:-]*$")
|
||||
dataScope: DataScope = "self"
|
||||
description: str | None = Field(default=None, max_length=500)
|
||||
isActive: bool = True
|
||||
menuIds: list[str] = Field(default_factory=list, max_length=500)
|
||||
deptIds: list[str] = Field(default_factory=list, max_length=500)
|
||||
|
||||
|
||||
class AdminRolePatch(BaseModel):
|
||||
name: str | None = Field(default=None, min_length=1, max_length=80)
|
||||
code: str | None = Field(default=None, min_length=1, max_length=80, pattern=r"^[a-z][a-z0-9_:-]*$")
|
||||
dataScope: DataScope | None = None
|
||||
description: str | None = Field(default=None, max_length=500)
|
||||
isActive: bool | None = None
|
||||
menuIds: list[str] | None = Field(default=None, max_length=500)
|
||||
deptIds: list[str] | None = Field(default=None, max_length=500)
|
||||
|
||||
|
||||
class AdminMenuCreate(BaseModel):
|
||||
parentId: str | None = None
|
||||
name: str = Field(min_length=1, max_length=80)
|
||||
type: MenuType = "page"
|
||||
path: str | None = Field(default=None, max_length=200)
|
||||
componentKey: str | None = Field(default=None, max_length=120)
|
||||
permissionCode: str | None = Field(default=None, max_length=120)
|
||||
icon: str | None = Field(default=None, max_length=80)
|
||||
sortOrder: int = Field(default=0, ge=0)
|
||||
isVisible: bool = True
|
||||
isActive: bool = True
|
||||
|
||||
|
||||
class AdminMenuPatch(BaseModel):
|
||||
parentId: str | None = None
|
||||
name: str | None = Field(default=None, min_length=1, max_length=80)
|
||||
type: MenuType | None = None
|
||||
path: str | None = Field(default=None, max_length=200)
|
||||
componentKey: str | None = Field(default=None, max_length=120)
|
||||
permissionCode: str | None = Field(default=None, max_length=120)
|
||||
icon: str | None = Field(default=None, max_length=80)
|
||||
sortOrder: int | None = Field(default=None, ge=0)
|
||||
isVisible: bool | None = None
|
||||
isActive: bool | None = None
|
||||
|
||||
|
||||
class AdminDepartmentCreate(BaseModel):
|
||||
parentId: str | None = None
|
||||
name: str = Field(min_length=1, max_length=120)
|
||||
sortOrder: int = Field(default=0, ge=0)
|
||||
isActive: bool = True
|
||||
|
||||
|
||||
class AdminDepartmentPatch(BaseModel):
|
||||
parentId: str | None = None
|
||||
name: str | None = Field(default=None, min_length=1, max_length=120)
|
||||
sortOrder: int | None = Field(default=None, ge=0)
|
||||
isActive: bool | None = None
|
||||
|
||||
|
||||
class AdminUserCreate(BaseModel):
|
||||
email: EmailStr
|
||||
name: str = Field(min_length=1, max_length=80)
|
||||
password: str = Field(min_length=8, max_length=128)
|
||||
isActive: bool = True
|
||||
roleIds: list[str] = Field(default_factory=list, max_length=100)
|
||||
deptIds: list[str] = Field(default_factory=list, max_length=100)
|
||||
|
||||
|
||||
class AdminUserPatch(BaseModel):
|
||||
name: str | None = Field(default=None, min_length=1, max_length=80)
|
||||
password: str | None = Field(default=None, min_length=8, max_length=128)
|
||||
isActive: bool | None = None
|
||||
roleIds: list[str] | None = Field(default=None, max_length=100)
|
||||
deptIds: list[str] | None = Field(default=None, max_length=100)
|
||||
Reference in new issue
Block a user