| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- from datetime import datetime
- from typing import TYPE_CHECKING
- from core_domain import (
- PermissionCheckContract,
- PermissionCheckResultContract,
- RoleAssignmentContract,
- RoleAssignmentStatus,
- RoleContract,
- RoleStatus,
- UserContract,
- UserStatus,
- )
- from core_shared import JSONValue
- from pydantic import BaseModel, Field
- if TYPE_CHECKING:
- from app.db.models import Role, RoleAssignment, User
- class UserCreateRequest(BaseModel):
- username: str
- password: str | None = Field(default=None, min_length=8)
- display_name: str | None = None
- email: str | None = None
- metadata_json: dict[str, JSONValue] = Field(default_factory=dict)
- class UserStatusUpdateRequest(BaseModel):
- status: UserStatus
- class UserResponse(UserContract):
- @classmethod
- def from_entity(cls, entity: "User") -> "UserResponse":
- return cls.model_validate(entity, from_attributes=True)
- class LoginUserResponse(BaseModel):
- id: str
- username: str
- display_name: str | None = None
- email: str | None = None
- status: UserStatus
- metadata_json: dict[str, JSONValue] = Field(default_factory=dict)
- last_login_time: datetime | None = None
- created_time: datetime
- @classmethod
- def from_entity(cls, entity: "User") -> "LoginUserResponse":
- return cls.model_validate(entity, from_attributes=True)
- class LoginRequest(BaseModel):
- username: str
- password: str
- class LoginResponse(BaseModel):
- access_token: str
- token_type: str = "bearer"
- expires_time: datetime
- user: LoginUserResponse
- class TokenVerifyRequest(BaseModel):
- access_token: str
- class TokenVerifyResponse(BaseModel):
- active: bool
- user_id: str | None = None
- username: str | None = None
- expires_time: datetime | None = None
- reason: str | None = None
- class RoleCreateRequest(BaseModel):
- code: str
- name: str
- description: str | None = None
- permissions_json: list[str] = Field(default_factory=list)
- class RoleStatusUpdateRequest(BaseModel):
- status: RoleStatus
- class RoleResponse(RoleContract):
- @classmethod
- def from_entity(cls, entity: "Role") -> "RoleResponse":
- return cls.model_validate(entity, from_attributes=True)
- class RoleAssignmentCreateRequest(BaseModel):
- user_id: str
- role_id: str
- scope_type: str | None = None
- scope_id: str | None = None
- expires_time: datetime | None = None
- class RoleAssignmentStatusUpdateRequest(BaseModel):
- status: RoleAssignmentStatus
- class RoleAssignmentResponse(RoleAssignmentContract):
- @classmethod
- def from_entity(cls, entity: "RoleAssignment") -> "RoleAssignmentResponse":
- return cls.model_validate(entity, from_attributes=True)
- class PermissionCheckRequest(PermissionCheckContract):
- pass
- class PermissionCheckResponse(PermissionCheckResultContract):
- pass
|