- 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>
49 lines
1.2 KiB
Python
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
|