dashboard-nanobot/backend/schemas/sys_auth.py

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()