Skip to content

Commit

Permalink
imp: add dev resource and refac authResource
Browse files Browse the repository at this point in the history
  • Loading branch information
DongGeon0908 committed Jul 7, 2024
1 parent 4c6e9f1 commit 2485189
Show file tree
Hide file tree
Showing 5 changed files with 34 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -63,3 +63,7 @@ class SpringDocConfig(
)
}
}

object SwaggerTag {
const val DEV_TAG = "Dev Resource, 테스트용 API"
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import com.hero.alignlab.common.encrypt.EncryptData
import com.hero.alignlab.common.encrypt.Encryptor
import com.hero.alignlab.config.database.TransactionTemplates
import com.hero.alignlab.domain.auth.model.AuthContextImpl
import com.hero.alignlab.domain.auth.model.AuthUser
import com.hero.alignlab.domain.auth.model.AuthUserImpl
import com.hero.alignlab.domain.auth.model.AuthUserToken
import com.hero.alignlab.domain.auth.model.request.SignInRequest
Expand All @@ -14,10 +15,13 @@ import com.hero.alignlab.domain.user.application.CredentialUserInfoService
import com.hero.alignlab.domain.user.application.UserService
import com.hero.alignlab.domain.user.domain.CredentialUserInfo
import com.hero.alignlab.domain.user.domain.UserInfo
import com.hero.alignlab.domain.user.model.response.UserInfoResponse
import com.hero.alignlab.exception.ErrorCode
import com.hero.alignlab.exception.InvalidRequestException
import com.hero.alignlab.exception.InvalidTokenException
import com.hero.alignlab.extension.coExecute
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
import org.springframework.stereotype.Service
import reactor.core.publisher.Mono
import java.time.LocalDateTime
Expand Down Expand Up @@ -91,4 +95,12 @@ class AuthFacade(

return SignInResponse(accessToken)
}

suspend fun getUserInfo(user: AuthUser): UserInfoResponse {
val userInfo = withContext(Dispatchers.IO) {
userService.getUserByIdOrThrowSync(user.uid)
}

return UserInfoResponse.from(userInfo)
}
}
Original file line number Diff line number Diff line change
@@ -1,17 +1,15 @@
package com.hero.alignlab.domain.auth.resource

import com.hero.alignlab.domain.auth.application.AuthFacade
import com.hero.alignlab.domain.auth.model.AuthUser
import com.hero.alignlab.domain.auth.model.request.SignInRequest
import com.hero.alignlab.domain.auth.model.request.SignUpRequest
import com.hero.alignlab.extension.wrapCreated
import com.hero.alignlab.extension.wrapOk
import io.swagger.v3.oas.annotations.Operation
import io.swagger.v3.oas.annotations.tags.Tag
import org.springframework.http.MediaType
import org.springframework.web.bind.annotation.PostMapping
import org.springframework.web.bind.annotation.RequestBody
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RestController
import org.springframework.web.bind.annotation.*

@Tag(name = "Auth 인증 및 인가 관리")
@RestController
Expand All @@ -30,4 +28,10 @@ class AuthResource(
suspend fun signUp(
@RequestBody request: SignInRequest,
) = authFacade.signIn(request).wrapOk()

@Operation(summary = "토큰 기반으로 유저 정보를 조회")
@GetMapping("/api/v1/auth/me")
suspend fun getUserInfo(
user: AuthUser
) = authFacade.getUserInfo(user).wrapOk()
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package com.hero.alignlab.domain.user.application

import com.hero.alignlab.domain.auth.model.AuthUser
import com.hero.alignlab.domain.user.domain.UserInfo
import com.hero.alignlab.domain.user.infrastructure.UserInfoRepository
import com.hero.alignlab.domain.user.model.response.UserInfoResponse
Expand Down Expand Up @@ -28,9 +27,9 @@ class UserService(
return userInfoRepository.save(userInfo)
}

suspend fun getUserInfo(user: AuthUser): UserInfoResponse {
suspend fun getUserInfo(id: Long): UserInfoResponse {
val userInfo = withContext(Dispatchers.IO) {
getUserByIdOrThrowSync(user.uid)
getUserByIdOrThrowSync(id)
}

return UserInfoResponse.from(userInfo)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,24 +1,25 @@
package com.hero.alignlab.domain.user.resource

import com.hero.alignlab.domain.auth.model.AuthUser
import com.hero.alignlab.config.swagger.SwaggerTag.DEV_TAG
import com.hero.alignlab.domain.user.application.UserService
import com.hero.alignlab.extension.wrapOk
import io.swagger.v3.oas.annotations.Operation
import io.swagger.v3.oas.annotations.tags.Tag
import org.springframework.http.MediaType
import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.PathVariable
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RestController

@Tag(name = "사용자 관리")
@Tag(name = DEV_TAG)
@RestController
@RequestMapping(produces = [MediaType.APPLICATION_JSON_VALUE])
class UserResource(
class DevUserResource(
private val userService: UserService,
) {
@Operation(summary = "토큰 기반으로 유저 정보를 조회")
@GetMapping("/api/v1/users/me")
@Operation(summary = "유저 정보 조회")
@GetMapping("/api/dev/v1/users/{id}")
suspend fun getUserInfo(
user: AuthUser
) = userService.getUserInfo(user).wrapOk()
@PathVariable id: Long,
) = userService.getUserInfo(id).wrapOk()
}

0 comments on commit 2485189

Please sign in to comment.