o2o-negosium-original/backend/router/v1/auth/protocol.py
민헌 5940f54d2b feat(backend): supplier_users 기반 인증 재구축 및 단일세션 토큰 저장
- tbl_account 예시 인증 제거, supplier_users 기반으로 일원화(generic 네이밍 재사용)
- DBType USER/PARTNER 분리, AccountStatus/UserRole/TokenType enum 추가
- 보호 요청 시 su_id DB 존재/활성 검증(stateless JWT 빈틈 보완), 공급사명(partner.suppliers) 응답 포함
- 로그인 시 단일 세션 access/refresh 토큰을 supplier_user_tokens 에 저장(재로그인 시 교체)
- greenlet 의존성 추가, 인증 e2e 테스트(test_auth.py) 재작성

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 11:16:33 +09:00

49 lines
1.2 KiB
Python

from common.models.gmodel import Res_WebPacketProtocol, WebPacketProtocol
# 라우터 폴더마다 protocol.py 를 두고 Req_/Res_ 를 정의한다 (protocol 규약).
class AuthProtocol(WebPacketProtocol):
pass
class Req_Login(AuthProtocol):
id: str = ""
pw: str = ""
class Res_Login(Res_WebPacketProtocol):
su_id: str = ""
name: str = "" # 유저 개인 이름
supplier_id: str = "" # 소속 공급사(partner.suppliers)
supplier_name: str = "" # 공급사명
role: int = 0
access_token: str = ""
refresh_token: str = ""
class Req_CreateAccount(AuthProtocol):
supplier_id: str = "" # 소속 공급사(partner.suppliers.supplier_id)
id: str = "" # 로그인 ID
pw: str = ""
name: str = ""
email: str = ""
contact_number: str = ""
role: int = 1 # 1=user, 2=manager (UserRole)
class Res_CreateAccount(Res_WebPacketProtocol):
su_id: str = ""
class Res_RefreshToken(Res_WebPacketProtocol):
access_token: str = ""
class Res_Me(Res_WebPacketProtocol):
su_id: str = ""
id: str = ""
name: str = ""
supplier_id: str = ""
supplier_name: str = ""
role: int = 0