Skip to content

Commit

Permalink
fix :: 로그인 회원가입 로직 수정
Browse files Browse the repository at this point in the history
  • Loading branch information
HyunSu1768 committed Apr 17, 2024
1 parent 90a627f commit 3f7bf61
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 27 deletions.
Original file line number Diff line number Diff line change
@@ -1,42 +1,33 @@
package xquare.app.xquareinfra.domain.auth.service

import kotlinx.serialization.json.Json
import org.springframework.stereotype.Service
import org.springframework.transaction.annotation.Transactional
import xquare.app.xquareinfra.domain.auth.adapter.dto.request.LoginRequest
import xquare.app.xquareinfra.domain.auth.adapter.dto.response.TokenResponse
import xquare.app.xquareinfra.domain.auth.application.port.`in`.LoginUseCase
import xquare.app.xquareinfra.domain.auth.application.port.out.GenerateJwtPort
import xquare.app.xquareinfra.domain.user.application.port.out.FindUserPort
import xquare.app.xquareinfra.domain.user.application.port.out.SaveUserPort
import xquare.app.xquareinfra.domain.user.domain.Role
import xquare.app.xquareinfra.domain.user.domain.User
import xquare.app.xquareinfra.infrastructure.exception.BusinessLogicException
import xquare.app.xquareinfra.infrastructure.exception.XquareException
import xquare.app.xquareinfra.infrastructure.feign.client.dsm.DsmLoginClient
import xquare.app.xquareinfra.infrastructure.feign.client.dsm.dto.GetDsmUserInfoResponse

@Transactional
@Service
class LoginService(
private val dsmLoginClient: DsmLoginClient,
private val generateJwtPort: GenerateJwtPort
private val generateJwtPort: GenerateJwtPort,
private val findUserPort: FindUserPort
): LoginUseCase {
override fun login(loginRequest: LoginRequest): TokenResponse {
val feignResponse = dsmLoginClient.getUserInfo(
val user = findUserPort.findByAccountId(loginRequest.accountId) ?: throw BusinessLogicException.USER_NOT_FOUND
val userInfo = dsmLoginClient.getUserInfo(
accountId = loginRequest.accountId,
password = loginRequest.password
)

if(feignResponse.status() >= 400) {
throw XquareException.UNAUTHORIZED
}

val userInfo = Json.decodeFromString<GetDsmUserInfoResponse>(feignResponse.body().toString())
val tokenPair = generateJwtPort.generateTokens(userInfo.id)
val tokenPair = generateJwtPort.generateTokens(user.id.toString())
return TokenResponse(
accessToken = tokenPair.first,
refreshToken = tokenPair.second
)
}
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package xquare.app.xquareinfra.domain.auth.service

import kotlinx.serialization.json.Json
import org.springframework.stereotype.Service
import org.springframework.transaction.annotation.Transactional
import xquare.app.xquareinfra.domain.auth.adapter.dto.request.SignupRequest
Expand All @@ -10,9 +9,7 @@ import xquare.app.xquareinfra.domain.user.application.port.out.SaveUserPort
import xquare.app.xquareinfra.domain.user.domain.Role
import xquare.app.xquareinfra.domain.user.domain.User
import xquare.app.xquareinfra.infrastructure.exception.BusinessLogicException
import xquare.app.xquareinfra.infrastructure.exception.XquareException
import xquare.app.xquareinfra.infrastructure.feign.client.dsm.DsmLoginClient
import xquare.app.xquareinfra.infrastructure.feign.client.dsm.dto.GetDsmUserInfoResponse

@Transactional
@Service
Expand All @@ -22,21 +19,15 @@ class SignupService(
private val existsUserPort: ExistsUserPort
): SignupUseCase {
override fun signup(signupRequest: SignupRequest) {
val feignResponse = dsmLoginClient.getUserInfo(
val userInfo = dsmLoginClient.getUserInfo(
accountId = signupRequest.accountId,
password = signupRequest.password
)

if(feignResponse.status() >= 400) {
throw XquareException.UNAUTHORIZED
}

if(existsUserPort.existsByAccountId(signupRequest.accountId)) {
throw BusinessLogicException.USER_ALREADY_EXISTS
}

val userInfo = Json.decodeFromString<GetDsmUserInfoResponse>(feignResponse.body().toString())

userInfo.run {
saveUserPort.saveUser(
User(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,5 @@ import xquare.app.xquareinfra.infrastructure.feign.client.dsm.dto.GetDsmUserInfo
@FeignClient(name = "dsm-login", url = "https://prod-server.xquare.app/dsm-login")
interface DsmLoginClient {
@GetMapping("/user/user-data")
fun getUserInfo(@RequestParam("account_id") accountId: String, @RequestParam("password") password: String): feign.Response
fun getUserInfo(@RequestParam("account_id") accountId: String, @RequestParam("password") password: String): GetDsmUserInfoResponse
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
package xquare.app.xquareinfra.infrastructure.feign.client.dsm.dto

import com.fasterxml.jackson.annotation.JsonProperty
import com.fasterxml.jackson.databind.PropertyNamingStrategies
import com.fasterxml.jackson.databind.annotation.JsonNaming
import kotlinx.serialization.Serializable

@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy::class)
@Serializable
data class GetDsmUserInfoResponse(
val id: String,
Expand All @@ -12,5 +16,9 @@ data class GetDsmUserInfoResponse(
val classNum: Int,
val num: Int,
val userRole: DsmUserRole,
val birthDay: String
val birthDay: String,
@JsonProperty("profileImgUrl")
val profileImgUrl: String,
@JsonProperty("clubName")
val clubName: String
)

0 comments on commit 3f7bf61

Please sign in to comment.