fix: 소셜로그인시 유저 행동데이터 SIGN_UP 중복 기록 버그
- 소셜로그인 시 isNew 플래그를 통해 회원가입/로그인을 구분하여 SIGN_UP 중복 기록 버그 수정
This commit is contained in:
parent
ced35af66d
commit
73c9a90ae3
|
@ -351,11 +351,13 @@ class MemberController(
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
userActionService.recordAction(
|
if (response.isNew) {
|
||||||
memberId = response.memberId,
|
userActionService.recordAction(
|
||||||
actionType = ActionType.SIGN_UP,
|
memberId = response.memberId,
|
||||||
pushToken = request.pushToken
|
actionType = ActionType.SIGN_UP,
|
||||||
)
|
pushToken = request.pushToken
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
return ApiResponse.ok(message = "회원가입을 축하드립니다.", data = response.loginResponse)
|
return ApiResponse.ok(message = "회원가입을 축하드립니다.", data = response.loginResponse)
|
||||||
}
|
}
|
||||||
|
@ -380,11 +382,13 @@ class MemberController(
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
userActionService.recordAction(
|
if (response.isNew) {
|
||||||
memberId = response.memberId,
|
userActionService.recordAction(
|
||||||
actionType = ActionType.SIGN_UP,
|
memberId = response.memberId,
|
||||||
pushToken = request.pushToken
|
actionType = ActionType.SIGN_UP,
|
||||||
)
|
pushToken = request.pushToken
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
return ApiResponse.ok(message = "회원가입을 축하드립니다.", data = response.loginResponse)
|
return ApiResponse.ok(message = "회원가입을 축하드립니다.", data = response.loginResponse)
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,6 +33,7 @@ import kr.co.vividnext.sodalive.member.signUp.SignUpRequest
|
||||||
import kr.co.vividnext.sodalive.member.signUp.SignUpRequestV2
|
import kr.co.vividnext.sodalive.member.signUp.SignUpRequestV2
|
||||||
import kr.co.vividnext.sodalive.member.signUp.SignUpResponse
|
import kr.co.vividnext.sodalive.member.signUp.SignUpResponse
|
||||||
import kr.co.vividnext.sodalive.member.signUp.SignUpValidator
|
import kr.co.vividnext.sodalive.member.signUp.SignUpValidator
|
||||||
|
import kr.co.vividnext.sodalive.member.social.MemberResolveResult
|
||||||
import kr.co.vividnext.sodalive.member.social.google.GoogleUserInfo
|
import kr.co.vividnext.sodalive.member.social.google.GoogleUserInfo
|
||||||
import kr.co.vividnext.sodalive.member.social.kakao.KakaoUserInfo
|
import kr.co.vividnext.sodalive.member.social.kakao.KakaoUserInfo
|
||||||
import kr.co.vividnext.sodalive.member.stipulation.Stipulation
|
import kr.co.vividnext.sodalive.member.stipulation.Stipulation
|
||||||
|
@ -800,11 +801,11 @@ class MemberService(
|
||||||
container: String,
|
container: String,
|
||||||
marketingPid: String?,
|
marketingPid: String?,
|
||||||
pushToken: String?
|
pushToken: String?
|
||||||
): Member {
|
): MemberResolveResult {
|
||||||
val findMember = repository.findByGoogleId(googleUserInfo.sub)
|
val findMember = repository.findByGoogleId(googleUserInfo.sub)
|
||||||
if (findMember != null) {
|
if (findMember != null) {
|
||||||
if (findMember.isActive) {
|
if (findMember.isActive) {
|
||||||
return findMember
|
return MemberResolveResult(member = findMember, isNew = false)
|
||||||
} else {
|
} else {
|
||||||
throw SodaException("탈퇴한 계정입니다.\n고객센터로 문의해 주시기 바랍니다.")
|
throw SodaException("탈퇴한 계정입니다.\n고객센터로 문의해 주시기 바랍니다.")
|
||||||
}
|
}
|
||||||
|
@ -847,7 +848,7 @@ class MemberService(
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
return member
|
return MemberResolveResult(member = member, isNew = true)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Transactional
|
@Transactional
|
||||||
|
@ -856,11 +857,11 @@ class MemberService(
|
||||||
container: String,
|
container: String,
|
||||||
marketingPid: String?,
|
marketingPid: String?,
|
||||||
pushToken: String?
|
pushToken: String?
|
||||||
): Member {
|
): MemberResolveResult {
|
||||||
val findMember = repository.findByKakaoId(kakaoUserInfo.id)
|
val findMember = repository.findByKakaoId(kakaoUserInfo.id)
|
||||||
if (findMember != null) {
|
if (findMember != null) {
|
||||||
if (findMember.isActive) {
|
if (findMember.isActive) {
|
||||||
return findMember
|
return MemberResolveResult(member = findMember, isNew = false)
|
||||||
} else {
|
} else {
|
||||||
throw SodaException("탈퇴한 계정입니다.\n고객센터로 문의해 주시기 바랍니다.")
|
throw SodaException("탈퇴한 계정입니다.\n고객센터로 문의해 주시기 바랍니다.")
|
||||||
}
|
}
|
||||||
|
@ -903,7 +904,7 @@ class MemberService(
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
return member
|
return MemberResolveResult(member = member, isNew = true)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun checkEmail(email: String) {
|
private fun checkEmail(email: String) {
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
package kr.co.vividnext.sodalive.member.social
|
||||||
|
|
||||||
|
import kr.co.vividnext.sodalive.member.Member
|
||||||
|
|
||||||
|
data class MemberResolveResult(
|
||||||
|
val member: Member,
|
||||||
|
val isNew: Boolean
|
||||||
|
)
|
|
@ -5,5 +5,6 @@ import kr.co.vividnext.sodalive.member.login.LoginResponse
|
||||||
data class SocialLoginResponse(
|
data class SocialLoginResponse(
|
||||||
val memberId: Long,
|
val memberId: Long,
|
||||||
val marketingPid: String?,
|
val marketingPid: String?,
|
||||||
val loginResponse: LoginResponse
|
val loginResponse: LoginResponse,
|
||||||
|
val isNew: Boolean
|
||||||
)
|
)
|
||||||
|
|
|
@ -27,7 +27,8 @@ class GoogleAuthService(
|
||||||
): SocialLoginResponse {
|
): SocialLoginResponse {
|
||||||
val googleUserInfo = googleService.getUserInfo(idToken)
|
val googleUserInfo = googleService.getUserInfo(idToken)
|
||||||
?: throw SodaException("구글 로그인을 하지 못했습니다. 다시 시도해 주세요")
|
?: throw SodaException("구글 로그인을 하지 못했습니다. 다시 시도해 주세요")
|
||||||
val member = memberService.findOrRegister(googleUserInfo, container, marketingPid, pushToken)
|
val memberResolveResult = memberService.findOrRegister(googleUserInfo, container, marketingPid, pushToken)
|
||||||
|
val member = memberResolveResult.member
|
||||||
val principal = MemberAdapter(member)
|
val principal = MemberAdapter(member)
|
||||||
val authToken = GoogleAuthenticationToken(idToken, principal.authorities)
|
val authToken = GoogleAuthenticationToken(idToken, principal.authorities)
|
||||||
authToken.setPrincipal(principal)
|
authToken.setPrincipal(principal)
|
||||||
|
@ -53,7 +54,8 @@ class GoogleAuthService(
|
||||||
return SocialLoginResponse(
|
return SocialLoginResponse(
|
||||||
memberId = member.id!!,
|
memberId = member.id!!,
|
||||||
marketingPid = marketingPid,
|
marketingPid = marketingPid,
|
||||||
loginResponse = loginResponse
|
loginResponse = loginResponse,
|
||||||
|
isNew = memberResolveResult.isNew
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,7 +27,8 @@ class KakaoAuthService(
|
||||||
): SocialLoginResponse {
|
): SocialLoginResponse {
|
||||||
val kakaoUserInfo = kakaoService.getUserInfo(accessToken)
|
val kakaoUserInfo = kakaoService.getUserInfo(accessToken)
|
||||||
?: throw SodaException("카카오 로그인을 하지 못했습니다. 다시 시도해 주세요")
|
?: throw SodaException("카카오 로그인을 하지 못했습니다. 다시 시도해 주세요")
|
||||||
val member = memberService.findOrRegister(kakaoUserInfo, container, marketingPid, pushToken)
|
val memberResolveResult = memberService.findOrRegister(kakaoUserInfo, container, marketingPid, pushToken)
|
||||||
|
val member = memberResolveResult.member
|
||||||
val principal = MemberAdapter(member)
|
val principal = MemberAdapter(member)
|
||||||
val authToken = KakaoAuthenticationToken(accessToken, principal.authorities)
|
val authToken = KakaoAuthenticationToken(accessToken, principal.authorities)
|
||||||
authToken.setPrincipal(principal)
|
authToken.setPrincipal(principal)
|
||||||
|
@ -53,7 +54,8 @@ class KakaoAuthService(
|
||||||
return SocialLoginResponse(
|
return SocialLoginResponse(
|
||||||
memberId = member.id!!,
|
memberId = member.id!!,
|
||||||
marketingPid = marketingPid,
|
marketingPid = marketingPid,
|
||||||
loginResponse = loginResponse
|
loginResponse = loginResponse,
|
||||||
|
isNew = memberResolveResult.isNew
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue