5.2.2 사용자 소셜 계정 개체: OAuthAccount 모델
OAuthAccount 모델은 소셜 로그인을 하면 해당 소셜 로그인 제공자(OAuth2 provider)의 계정 정보를 저장합니다. 그래야 어떤 소셜 로그인 계정이 어느 사용자 것인지 구분할 수 있기 때문입니다. 앞선 데이터베이스 모델링에 따르면 User 모델과 OAuthAccount는 1:N, 즉 한 사용자는 여러 소셜 로그인 계정을 갖습니다. 다음 코드를 User 모델 아래에 추가합니다.
파이썬(/appserver/apps/account/models.py)
# 생략
class OAuthAccount(SQLModel, table=True):
__tablename__ = "oauth_accounts"
__table_args__ = (
UniqueConstraint(
"provider",
"provider_account_id",
name="uq_provider_provider_account_id",
),
)
provider: str = Field(max_length=10, description="OAuth 제공자")
provider_account_id: str = Field(max_length=128, description="OAuth 제공자 계정 ID")
user_id: int = Field(foreign_key="users.id") # ①
user: User = Relationship() # ②