from typing import Optional from common.enums import AuthProvider, 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 Req_Signup(AuthProtocol): """id/pw 가입.""" id: str = "" password: str = "" name: Optional[str] = None email: str = "" class Req_GoogleLogin(AuthProtocol): """구글 로그인.""" credential: str = "" class Res_Login(Res_WebPacketProtocol): access_token: str = "" refresh_token: str = "" token_type: str = "bearer" class Req_UpdateMe(AuthProtocol): # 본인 정보 수정. 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 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 # 이 계정이 무엇으로 로그인하는가. provider: AuthProvider = AuthProvider.LOCAL