from typing import Optional from pydantic import Field from common.enums import UserRole from common.models.gmodel import Res_WebPacketProtocol, WebPacketProtocol # 라우터 폴더마다 protocol.py 를 두고 Req_/Res_ 를 정의한다 (protocol 규약). class AuthProtocol(WebPacketProtocol): pass class Req_Login(AuthProtocol): id: str = "" password: str = "" class Res_Login(Res_WebPacketProtocol): access_token: str = "" refresh_token: str = "" token_type: str = "bearer" class Req_UpdateMe(AuthProtocol): # 본인 정보 수정. role·company·id 는 받지 않는다(자기 권한·소속 변경 불가). name: Optional[str] = None email: Optional[str] = None contact_number: Optional[str] = None password: Optional[str] = None # 비밀번호 변경(옵션). 비우면 유지 class Res_RefreshToken(Res_WebPacketProtocol): access_token: str = "" token_type: str = "bearer" class CompanyData(WebPacketProtocol): company_id: str = "" name: str = "" class Res_Me(Res_WebPacketProtocol): user_id: str = "" id: str = "" name: Optional[str] = None email: Optional[str] = None contact_number: Optional[str] = None role: UserRole = UserRole.USER company: Optional[CompanyData] = Field(default=None)