소셜 로그인 이메일 미필수 정책 적용
소셜 로그인 시 이메일 동의 없이도 계정 생성이 가능하도록 변경합니다. Member 엔티티의 email 필드를 선택 사항으로 변경하고, 관련 API 응답 및 인증 로직에서 이메일이 없는 경우에 대한 처리를 추가합니다.
This commit is contained in:
@@ -346,7 +346,7 @@ class MemberService(
|
||||
userId = member.id!!,
|
||||
token = jwt,
|
||||
nickname = member.nickname,
|
||||
email = member.email,
|
||||
email = member.email ?: "",
|
||||
profileImage = if (member.profileImage != null) {
|
||||
"$cloudFrontHost/${member.profileImage}"
|
||||
} else {
|
||||
@@ -454,8 +454,16 @@ class MemberService(
|
||||
}
|
||||
|
||||
override fun loadUserByUsername(username: String): UserDetails {
|
||||
val member = repository.findByEmail(email = username)
|
||||
?: throw UsernameNotFoundException(username)
|
||||
val member = if (username.startsWith("member:")) {
|
||||
val id = username.substringAfter("member:").toLongOrNull()
|
||||
if (id != null) {
|
||||
repository.findByIdOrNull(id)
|
||||
} else {
|
||||
null
|
||||
}
|
||||
} else {
|
||||
repository.findByEmail(email = username)
|
||||
} ?: throw UsernameNotFoundException(username)
|
||||
|
||||
return MemberAdapter(member)
|
||||
}
|
||||
@@ -592,7 +600,7 @@ class MemberService(
|
||||
|
||||
@Transactional
|
||||
fun signOut(signOutRequest: SignOutRequest, user: User) {
|
||||
val member = repository.findByEmail(user.username)
|
||||
val member = findMemberByUsername(user.username)
|
||||
?: throw SodaException(messageKey = "common.error.bad_credentials")
|
||||
if (
|
||||
member.provider == MemberProvider.EMAIL &&
|
||||
@@ -620,11 +628,7 @@ class MemberService(
|
||||
|
||||
@Transactional
|
||||
fun updateNickname(profileUpdateRequest: ProfileUpdateRequest, user: User) {
|
||||
if (profileUpdateRequest.email != user.username) {
|
||||
throw SodaException(messageKey = "common.error.bad_credentials")
|
||||
}
|
||||
|
||||
val member = repository.findByEmail(user.username)
|
||||
val member = findMemberByUsername(user.username)
|
||||
?: throw SodaException(messageKey = "common.error.bad_credentials")
|
||||
|
||||
if (profileUpdateRequest.nickname != null) {
|
||||
@@ -652,11 +656,7 @@ class MemberService(
|
||||
|
||||
@Transactional
|
||||
fun profileUpdate(profileUpdateRequest: ProfileUpdateRequest, user: User): ProfileResponse {
|
||||
if (profileUpdateRequest.email != user.username) {
|
||||
throw SodaException(messageKey = "common.error.bad_credentials")
|
||||
}
|
||||
|
||||
val member = repository.findByEmail(user.username)
|
||||
val member = findMemberByUsername(user.username)
|
||||
?: throw SodaException(messageKey = "common.error.bad_credentials")
|
||||
|
||||
if (profileUpdateRequest.modifyPassword != null) {
|
||||
@@ -729,7 +729,7 @@ class MemberService(
|
||||
|
||||
@Transactional
|
||||
fun profileImageUpdate(multipartFile: MultipartFile, user: User): String {
|
||||
val member = repository.findByEmail(user.username)
|
||||
val member = findMemberByUsername(user.username)
|
||||
?: throw SodaException(messageKey = "common.error.bad_credentials")
|
||||
|
||||
val metadata = ObjectMetadata()
|
||||
@@ -932,7 +932,24 @@ class MemberService(
|
||||
return MemberResolveResult(member = member, isNew = true)
|
||||
}
|
||||
|
||||
private fun checkEmail(email: String) {
|
||||
private fun findMemberByUsername(username: String): Member? {
|
||||
return if (username.startsWith("member:")) {
|
||||
val id = username.substringAfter("member:").toLongOrNull()
|
||||
if (id != null) {
|
||||
repository.findByIdOrNull(id)
|
||||
} else {
|
||||
null
|
||||
}
|
||||
} else {
|
||||
repository.findByEmail(email = username)
|
||||
}
|
||||
}
|
||||
|
||||
private fun checkEmail(email: String?) {
|
||||
if (email.isNullOrBlank()) {
|
||||
return
|
||||
}
|
||||
|
||||
val member = repository.findByEmail(email)
|
||||
|
||||
if (member != null) {
|
||||
|
||||
Reference in New Issue
Block a user