154 lines
3.6 KiB
Python
154 lines
3.6 KiB
Python
from typing import List, Optional
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
class SysAuthLoginRequest(BaseModel):
|
|
username: str
|
|
password: str
|
|
|
|
|
|
class SysAuthMenuItem(BaseModel):
|
|
menu_key: str
|
|
parent_key: str = ""
|
|
title: str
|
|
title_en: str = ""
|
|
menu_type: str = "item"
|
|
route_path: str = ""
|
|
icon: str = ""
|
|
permission_key: str = ""
|
|
sort_order: int = 100
|
|
children: List["SysAuthMenuItem"] = Field(default_factory=list)
|
|
|
|
|
|
class SysAuthRolePayload(BaseModel):
|
|
id: int = 0
|
|
role_key: str
|
|
name: str
|
|
|
|
|
|
class SysAuthUserPayload(BaseModel):
|
|
id: int
|
|
username: str
|
|
display_name: str
|
|
role: Optional[SysAuthRolePayload] = None
|
|
|
|
|
|
class SysAssignedBotPayload(BaseModel):
|
|
id: str
|
|
name: str
|
|
enabled: bool = True
|
|
node_id: str = ""
|
|
node_display_name: str = ""
|
|
docker_status: str = "STOPPED"
|
|
image_tag: str = ""
|
|
|
|
|
|
class SysRoleSummaryResponse(BaseModel):
|
|
id: int
|
|
role_key: str
|
|
name: str
|
|
description: str = ""
|
|
is_active: bool = True
|
|
sort_order: int = 100
|
|
user_count: int = 0
|
|
menu_keys: List[str] = Field(default_factory=list)
|
|
permission_keys: List[str] = Field(default_factory=list)
|
|
|
|
|
|
class SysRoleListResponse(BaseModel):
|
|
items: List[SysRoleSummaryResponse] = Field(default_factory=list)
|
|
|
|
|
|
class SysRoleUpsertRequest(BaseModel):
|
|
role_key: str
|
|
name: str
|
|
description: str = ""
|
|
is_active: bool = True
|
|
sort_order: int = 100
|
|
menu_keys: List[str] = Field(default_factory=list)
|
|
permission_keys: List[str] = Field(default_factory=list)
|
|
|
|
|
|
class SysRoleGrantMenuItem(BaseModel):
|
|
menu_key: str
|
|
parent_key: str = ""
|
|
title: str
|
|
title_en: str = ""
|
|
menu_type: str = "item"
|
|
route_path: str = ""
|
|
icon: str = ""
|
|
sort_order: int = 100
|
|
children: List["SysRoleGrantMenuItem"] = Field(default_factory=list)
|
|
|
|
|
|
class SysPermissionSummaryResponse(BaseModel):
|
|
id: int
|
|
permission_key: str
|
|
name: str
|
|
menu_key: str = ""
|
|
action: str = "view"
|
|
description: str = ""
|
|
sort_order: int = 100
|
|
|
|
|
|
class SysRoleGrantBootstrapResponse(BaseModel):
|
|
menus: List[SysRoleGrantMenuItem] = Field(default_factory=list)
|
|
permissions: List[SysPermissionSummaryResponse] = Field(default_factory=list)
|
|
|
|
|
|
class SysUserSummaryResponse(BaseModel):
|
|
id: int
|
|
username: str
|
|
display_name: str
|
|
is_active: bool = True
|
|
last_login_at: Optional[str] = None
|
|
role: Optional[SysAuthRolePayload] = None
|
|
bot_ids: List[str] = Field(default_factory=list)
|
|
|
|
|
|
class SysUserListResponse(BaseModel):
|
|
items: List[SysUserSummaryResponse] = Field(default_factory=list)
|
|
|
|
|
|
class SysUserCreateRequest(BaseModel):
|
|
username: str
|
|
display_name: str
|
|
password: str
|
|
role_id: int
|
|
is_active: bool = True
|
|
bot_ids: List[str] = Field(default_factory=list)
|
|
|
|
|
|
class SysUserUpdateRequest(BaseModel):
|
|
display_name: str
|
|
password: str = ""
|
|
role_id: int
|
|
is_active: bool = True
|
|
bot_ids: List[str] = Field(default_factory=list)
|
|
|
|
|
|
class SysProfileUpdateRequest(BaseModel):
|
|
display_name: str
|
|
password: str = ""
|
|
|
|
|
|
class SysAuthBootstrapResponse(BaseModel):
|
|
token: str = ""
|
|
expires_at: Optional[str] = None
|
|
user: SysAuthUserPayload
|
|
menus: List[SysAuthMenuItem] = Field(default_factory=list)
|
|
permissions: List[str] = Field(default_factory=list)
|
|
home_path: str = "/dashboard"
|
|
assigned_bots: List[SysAssignedBotPayload] = Field(default_factory=list)
|
|
|
|
|
|
class SysAuthStatusResponse(BaseModel):
|
|
enabled: bool = True
|
|
user_count: int = 0
|
|
default_username: str = "admin"
|
|
|
|
|
|
SysAuthMenuItem.model_rebuild()
|
|
SysRoleGrantMenuItem.model_rebuild()
|