Compare commits
2 Commits
5639d8ac8e
...
238f704b22
Author | SHA1 | Date |
---|---|---|
|
238f704b22 | |
|
a9c68f9971 |
|
@ -62,7 +62,6 @@ interface MemberQueryRepository {
|
||||||
|
|
||||||
fun getMemberProfile(memberId: Long, myMemberId: Long): GetMemberProfileResponse
|
fun getMemberProfile(memberId: Long, myMemberId: Long): GetMemberProfileResponse
|
||||||
|
|
||||||
fun existsByEmail(email: String): Boolean
|
|
||||||
fun existsByNickname(nickname: String): Boolean
|
fun existsByNickname(nickname: String): Boolean
|
||||||
fun findNicknamesWithPrefix(prefix: String): List<String>
|
fun findNicknamesWithPrefix(prefix: String): List<String>
|
||||||
}
|
}
|
||||||
|
@ -486,14 +485,6 @@ class MemberQueryRepositoryImpl(
|
||||||
.fetchFirst()
|
.fetchFirst()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun existsByEmail(email: String): Boolean {
|
|
||||||
return queryFactory
|
|
||||||
.selectOne()
|
|
||||||
.from(member)
|
|
||||||
.where(member.email.eq(email))
|
|
||||||
.fetchFirst() != null
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun existsByNickname(nickname: String): Boolean {
|
override fun existsByNickname(nickname: String): Boolean {
|
||||||
return queryFactory
|
return queryFactory
|
||||||
.selectOne()
|
.selectOne()
|
||||||
|
|
|
@ -286,11 +286,22 @@ class MemberService(
|
||||||
isAdmin: Boolean = false,
|
isAdmin: Boolean = false,
|
||||||
isCreator: Boolean = false
|
isCreator: Boolean = false
|
||||||
): LoginResponse {
|
): LoginResponse {
|
||||||
val member = repository.findByEmail(email = email) ?: throw SodaException("로그인 정보를 확인해주세요.")
|
val member = repository.findByEmail(email = email) ?: throw SodaException("없는 계정입니다.")
|
||||||
|
|
||||||
if (!member.isActive) {
|
if (!member.isActive) {
|
||||||
throw SodaException("탈퇴한 계정입니다.\n고객센터로 문의해 주시기 바랍니다.")
|
throw SodaException("탈퇴한 계정입니다.\n고객센터로 문의해 주시기 바랍니다.")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (member.provider != MemberProvider.EMAIL) {
|
||||||
|
val provider = when (member.provider) {
|
||||||
|
MemberProvider.APPLE -> "애플"
|
||||||
|
MemberProvider.GOOGLE -> "구글"
|
||||||
|
else -> "카카오"
|
||||||
|
}
|
||||||
|
|
||||||
|
throw SodaException("해당 이메일은 $provider 계정으로 가입되어 있습니다. 해당 소셜 로그인을 사용해 주세요.")
|
||||||
|
}
|
||||||
|
|
||||||
if (isCreator && member.role != MemberRole.CREATOR) {
|
if (isCreator && member.role != MemberRole.CREATOR) {
|
||||||
throw SodaException("로그인 정보를 확인해주세요.")
|
throw SodaException("로그인 정보를 확인해주세요.")
|
||||||
}
|
}
|
||||||
|
@ -380,8 +391,23 @@ class MemberService(
|
||||||
fun duplicateCheckEmail(email: String): ApiResponse<Any> {
|
fun duplicateCheckEmail(email: String): ApiResponse<Any> {
|
||||||
validateEmail(email)
|
validateEmail(email)
|
||||||
|
|
||||||
if (repository.existsByEmail(email)) {
|
val findMember = repository.findByEmail(email)
|
||||||
|
|
||||||
|
if (findMember != null) {
|
||||||
|
if (findMember.provider == MemberProvider.EMAIL) {
|
||||||
throw SodaException("이미 사용중인 이메일 입니다.", "email")
|
throw SodaException("이미 사용중인 이메일 입니다.", "email")
|
||||||
|
} else {
|
||||||
|
val provider = when (findMember.provider) {
|
||||||
|
MemberProvider.APPLE -> "애플"
|
||||||
|
MemberProvider.GOOGLE -> "구글"
|
||||||
|
else -> "카카오"
|
||||||
|
}
|
||||||
|
|
||||||
|
throw SodaException(
|
||||||
|
"해당 이메일은 $provider 계정으로 이미 가입되어 있습니다. 해당 소셜 로그인을 사용해 주세요.",
|
||||||
|
"email"
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return ApiResponse.ok(message = "사용 가능한 이메일 입니다.")
|
return ApiResponse.ok(message = "사용 가능한 이메일 입니다.")
|
||||||
|
@ -741,7 +767,14 @@ class MemberService(
|
||||||
|
|
||||||
@Transactional
|
@Transactional
|
||||||
fun findOrRegister(googleUserInfo: GoogleUserInfo, container: String, marketingPid: String?): Member {
|
fun findOrRegister(googleUserInfo: GoogleUserInfo, container: String, marketingPid: String?): Member {
|
||||||
repository.findByGoogleId(googleUserInfo.sub)?.let { return it }
|
val findMember = repository.findByGoogleId(googleUserInfo.sub)
|
||||||
|
if (findMember != null) {
|
||||||
|
if (findMember.isActive) {
|
||||||
|
return findMember
|
||||||
|
} else {
|
||||||
|
throw SodaException("탈퇴한 계정입니다.\n고객센터로 문의해 주시기 바랍니다.")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
val stipulationTermsOfService = stipulationRepository.findByIdOrNull(StipulationIds.TERMS_OF_SERVICE_ID)
|
val stipulationTermsOfService = stipulationRepository.findByIdOrNull(StipulationIds.TERMS_OF_SERVICE_ID)
|
||||||
?: throw SodaException("잘못된 요청입니다\n앱 종료 후 다시 시도해 주세요.")
|
?: throw SodaException("잘못된 요청입니다\n앱 종료 후 다시 시도해 주세요.")
|
||||||
|
@ -749,10 +782,13 @@ class MemberService(
|
||||||
val stipulationPrivacyPolicy = stipulationRepository.findByIdOrNull(StipulationIds.PRIVACY_POLICY_ID)
|
val stipulationPrivacyPolicy = stipulationRepository.findByIdOrNull(StipulationIds.PRIVACY_POLICY_ID)
|
||||||
?: throw SodaException("잘못된 요청입니다\n앱 종료 후 다시 시도해 주세요.")
|
?: throw SodaException("잘못된 요청입니다\n앱 종료 후 다시 시도해 주세요.")
|
||||||
|
|
||||||
|
val email = googleUserInfo.email
|
||||||
|
checkEmail(email)
|
||||||
|
|
||||||
val nickname = nicknameGenerateService.generateUniqueNickname()
|
val nickname = nicknameGenerateService.generateUniqueNickname()
|
||||||
val member = Member(
|
val member = Member(
|
||||||
googleId = googleUserInfo.sub,
|
googleId = googleUserInfo.sub,
|
||||||
email = googleUserInfo.email,
|
email = email,
|
||||||
password = "",
|
password = "",
|
||||||
nickname = nickname,
|
nickname = nickname,
|
||||||
profileImage = "profile/default-profile.png",
|
profileImage = "profile/default-profile.png",
|
||||||
|
@ -774,7 +810,14 @@ class MemberService(
|
||||||
|
|
||||||
@Transactional
|
@Transactional
|
||||||
fun findOrRegister(kakaoUserInfo: KakaoUserInfo, container: String, marketingPid: String?): Member {
|
fun findOrRegister(kakaoUserInfo: KakaoUserInfo, container: String, marketingPid: String?): Member {
|
||||||
repository.findByKakaoId(kakaoUserInfo.id)?.let { return it }
|
val findMember = repository.findByKakaoId(kakaoUserInfo.id)
|
||||||
|
if (findMember != null) {
|
||||||
|
if (findMember.isActive) {
|
||||||
|
return findMember
|
||||||
|
} else {
|
||||||
|
throw SodaException("탈퇴한 계정입니다.\n고객센터로 문의해 주시기 바랍니다.")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
val stipulationTermsOfService = stipulationRepository.findByIdOrNull(StipulationIds.TERMS_OF_SERVICE_ID)
|
val stipulationTermsOfService = stipulationRepository.findByIdOrNull(StipulationIds.TERMS_OF_SERVICE_ID)
|
||||||
?: throw SodaException("잘못된 요청입니다\n앱 종료 후 다시 시도해 주세요.")
|
?: throw SodaException("잘못된 요청입니다\n앱 종료 후 다시 시도해 주세요.")
|
||||||
|
@ -782,10 +825,13 @@ class MemberService(
|
||||||
val stipulationPrivacyPolicy = stipulationRepository.findByIdOrNull(StipulationIds.PRIVACY_POLICY_ID)
|
val stipulationPrivacyPolicy = stipulationRepository.findByIdOrNull(StipulationIds.PRIVACY_POLICY_ID)
|
||||||
?: throw SodaException("잘못된 요청입니다\n앱 종료 후 다시 시도해 주세요.")
|
?: throw SodaException("잘못된 요청입니다\n앱 종료 후 다시 시도해 주세요.")
|
||||||
|
|
||||||
|
val email = kakaoUserInfo.email
|
||||||
|
checkEmail(email)
|
||||||
|
|
||||||
val nickname = nicknameGenerateService.generateUniqueNickname()
|
val nickname = nicknameGenerateService.generateUniqueNickname()
|
||||||
val member = Member(
|
val member = Member(
|
||||||
kakaoId = kakaoUserInfo.id,
|
kakaoId = kakaoUserInfo.id,
|
||||||
email = kakaoUserInfo.email,
|
email = email,
|
||||||
password = "",
|
password = "",
|
||||||
nickname = nickname,
|
nickname = nickname,
|
||||||
profileImage = "profile/default-profile.png",
|
profileImage = "profile/default-profile.png",
|
||||||
|
@ -804,4 +850,18 @@ class MemberService(
|
||||||
|
|
||||||
return member
|
return member
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun checkEmail(email: String) {
|
||||||
|
val member = repository.findByEmail(email)
|
||||||
|
|
||||||
|
if (member != null) {
|
||||||
|
val provider = when (member.provider) {
|
||||||
|
MemberProvider.APPLE -> "애플"
|
||||||
|
MemberProvider.GOOGLE -> "구글"
|
||||||
|
else -> "카카오"
|
||||||
|
}
|
||||||
|
|
||||||
|
throw SodaException("해당 이메일은 $provider 계정으로 가입되어 있습니다. 해당 소셜 로그인을 사용해 주세요.")
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue