o2o-negosium-original/negodata/backend/router/v1/auth/protocol.py
Mina Choi a40257ddc1 [feat] negodata: 회원관리 / 최고관리자(OWNER)
- OWNER 권한 신설, 최고관리자가 자기 회사 소속 직원(USER) 계정 생성·수정·삭제 관리
- 회사 사용자 API(/v1/company/user/*), 회원관리 페이지·폼
- 로그인/프로필 흐름 정비, 무인증 계정생성(/auth/create) 제거

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-29 13:31:32 +09:00

51 lines
1.3 KiB
Python

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)