| 항목 | 내용 |
|---|---|
| Context명 | 인증 |
| 영문명 | Identity |
| 도메인 분류 | Supporting |
| 담당 팀 | Backend Team |
| 작성일 | 2025-12-28 |
Identity Context는 FanPulse 서비스의 사용자 인증 및 계정 관리를 담당합니다. 이메일/비밀번호 기반 인증과 OAuth(Google) 소셜 로그인을 지원하며, JWT 토큰 기반으로 세션을 관리합니다. 모든 다른 Context의 인증 제공자 역할을 합니다.
| 한글 | 영문 | 정의 |
|---|---|---|
| 사용자 | User | 서비스에 가입한 회원 |
| 인증 토큰 | AuthToken | JWT 기반 액세스/리프레시 토큰 |
| OAuth 계정 | OAuthAccount | 소셜 로그인으로 연동된 외부 계정 |
| 사용자 설정 | UserSettings | 개인화 설정 (테마, 언어, 알림) |
| 비밀번호 해시 | PasswordHash | 암호화된 비밀번호 |
| 세션 | Session | 로그인 상태가 유지되는 기간 |
| Aggregate | 설명 | Root Entity |
|---|---|---|
| User | 사용자 계정 및 인증 정보 관리 | User |
| AuthToken | 인증 토큰 발급 및 관리 | AuthToken |
| UserSettings | 사용자 개인화 설정 관리 | UserSettings |
classDiagram
class User {
<<Aggregate Root>>
+UserId id
+Email email
+Username username
+PasswordHash passwordHash
+CreatedAt createdAt
+register(command: RegisterCommand): User
+updateProfile(command: UpdateProfileCommand): void
+changePassword(command: ChangePasswordCommand): void
+linkOAuthAccount(account: OAuthAccount): void
+delete(): void
}
class UserId {
<<Value Object>>
+UUID value
}
class Email {
<<Value Object>>
+String value
+validate(): Boolean
}
class Username {
<<Value Object>>
+String value
+validate(): Boolean
}
class PasswordHash {
<<Value Object>>
+String value
+matches(rawPassword: String): Boolean
}
class OAuthAccount {
<<Entity>>
+OAuthAccountId id
+OAuthProvider provider
+String providerUserId
+Email email
+CreatedAt createdAt
}
class OAuthProvider {
<<Value Object>>
GOOGLE
}
User *-- UserId
User *-- Email
User *-- Username
User *-- PasswordHash
User "1" -- "0..*" OAuthAccount
OAuthAccount *-- OAuthProvider
불변식 (Invariants):
핵심 행위:
register(): 새 사용자 등록, UserRegistered 이벤트 발행updateProfile(): 프로필 정보 수정changePassword(): 비밀번호 변경linkOAuthAccount(): OAuth 계정 연동delete(): 회원 탈퇴 (소프트 삭제)