Description
요구 사항
-
이메일 여러 개를 등록할 수 있다.
- 등록한 이메일 중 primary email을 선택할 수 있다. (user는 primary email을 무조건 단 하나 가지고 있다.)
- 이메일을 검증할 수 있다. (발송된 verification code 입력 등)
- 이메일로 user를 특정할 수 있다.
- 이메일은
auth_account
테이블과 relationship을 가지지 않는다.
-
이메일 등록 시 아래 과정을 수행한다.
function add_email_address() { if (email in user_email) { throw error("User already exists") } send confirm email } function confirm_email_registration() { create user_email }
-
Auth provider가 추가되는 경우를 고려해 로그인 시 아래 과정을 수행한다.
// 같은 provider를 이용해 로그인한 기록 존재 if ((provider, provider_account_id) in auth_account) { return existing user } // 같은 이메일, 다른 provider로 로그인한 기록 존재 if (email in user_email) { create auth_account with existing user return existing user } // 첫 로그인 create new user create auth_account with created user create user_email return created user
고려 사항
user
조회 시 primary email을 가져올 일이 많다면 비정규화?
목표가 아닌 것
- 새로운 auth provider를 추가한다.
- 두 user를 병합한다.