더북(TheBook)

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()   # ②

 

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.