Skip to content

Commit

Permalink
[auth] refactoring 2
Browse files Browse the repository at this point in the history
  • Loading branch information
Noverish committed Mar 31, 2024
1 parent e2bc503 commit 2533eb6
Show file tree
Hide file tree
Showing 42 changed files with 177 additions and 151 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
package kim.hyunsub.auth.bo.admin

import kim.hyunsub.auth.model.api.ApiUser
import kim.hyunsub.auth.model.dto.admin.AdminUserCreateParams
import kim.hyunsub.auth.model.dto.auth.UserCreateParams
import kim.hyunsub.auth.model.dto.auth.UserCreateResult
import kim.hyunsub.auth.repository.UserAuthorityRepository
import kim.hyunsub.auth.repository.UserRepository
import kim.hyunsub.auth.service.UserService
import kim.hyunsub.common.web.model.SimpleResponse
import org.springframework.stereotype.Service

@Service
class AdminUserBo(
private val userService: UserService,
private val userRepository: UserRepository,
private val userAuthorityRepository: UserAuthorityRepository,
) {
fun list(): List<ApiUser> {
val users = userRepository.findAll()
val userAuthorities = userAuthorityRepository.findAll()

val authorityMap = userAuthorities.groupBy { it.userIdNo }

return users
.map { UserCreateResult(it, authorityMap[it.idNo] ?: emptyList()) }
.map { it.toApi() }
}

fun get(idNo: String): ApiUser {
return userService.get(idNo).toApi()
}

fun create(params: AdminUserCreateParams): ApiUser {
val userCreateParams = UserCreateParams(
username = params.name,
password = "password",
)

return userService.create(userCreateParams).toApi()
}

fun delete(idNo: String): SimpleResponse {
userService.delete(idNo)
return SimpleResponse()
}

private fun UserCreateResult.toApi() = ApiUser(
idNo = user.idNo,
username = user.username,
authorities = authorities.map { it.authorityId },
)
}
24 changes: 12 additions & 12 deletions hyunsub-auth/src/main/kotlin/kim/hyunsub/auth/bo/auth/RegisterBo.kt
Original file line number Diff line number Diff line change
@@ -1,14 +1,12 @@
package kim.hyunsub.auth.bo.auth

import at.favre.lib.crypto.bcrypt.BCrypt
import kim.hyunsub.auth.config.AuthConstants
import kim.hyunsub.auth.model.dto.auth.RegisterParams
import kim.hyunsub.auth.model.dto.auth.RegisterResult
import kim.hyunsub.auth.model.dto.auth.UserCreateParams
import kim.hyunsub.auth.repository.UserRepository
import kim.hyunsub.auth.repository.entity.User
import kim.hyunsub.auth.repository.generateId
import kim.hyunsub.auth.service.CaptchaService
import kim.hyunsub.auth.service.RsaKeyService
import kim.hyunsub.auth.service.UserService
import kim.hyunsub.common.web.error.ErrorCode
import kim.hyunsub.common.web.error.ErrorCodeException
import mu.KotlinLogging
Expand All @@ -19,6 +17,7 @@ class RegisterBo(
private val userRepository: UserRepository,
private val captchaService: CaptchaService,
private val rsaKeyService: RsaKeyService,
private val userService: UserService,
) {
private val log = KotlinLogging.logger { }

Expand All @@ -31,8 +30,8 @@ class RegisterBo(
throw ErrorCodeException(ErrorCode.CAPTCHA_FAILURE)
}

val user = userRepository.findByUsername(username)
if (user != null) {
val exist = userRepository.findByUsername(username)
if (exist != null) {
throw ErrorCodeException(ErrorCode.ALREADY_EXIST_USERNAME)
}

Expand All @@ -44,12 +43,13 @@ class RegisterBo(
throw ErrorCodeException(ErrorCode.SHORT_PASSWORD)
}

val idNo = userRepository.generateId()
val hashed = BCrypt.withDefaults().hashToString(AuthConstants.BCRYPT_COST, password.toCharArray())
val newUser = User(idNo = idNo, username = username, password = hashed)
log.debug("newUser: {}", newUser)
userRepository.saveAndFlush(newUser)
val user = userService.create(
UserCreateParams(
username = username,
password = password,
)
)

return RegisterResult(idNo)
return RegisterResult(user.user.idNo)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@ package kim.hyunsub.auth.bo.user
import at.favre.lib.crypto.bcrypt.BCrypt
import jakarta.servlet.http.HttpServletResponse
import kim.hyunsub.auth.config.AuthConstants
import kim.hyunsub.auth.model.Profile
import kim.hyunsub.auth.model.dto.ProfileUpdateParams
import kim.hyunsub.auth.model.dto.ProfileUpdateResult
import kim.hyunsub.auth.model.api.ApiProfile
import kim.hyunsub.auth.model.dto.user.ProfileUpdateParams
import kim.hyunsub.auth.model.dto.user.ProfileUpdateResult
import kim.hyunsub.auth.repository.UserRepository
import kim.hyunsub.auth.service.CookieGenerator
import kim.hyunsub.auth.service.ProfileService
Expand Down Expand Up @@ -67,11 +67,11 @@ class ProfileBo(
return result
}

fun detail(userId: String): Profile {
fun detail(userId: String): ApiProfile {
val user = userRepository.findByIdOrNull(userId)
?: throw ErrorCodeException(ErrorCode.NO_SUCH_USER)

return Profile(
return ApiProfile(
username = user.username,
historyNum = 0,
deviceNum = 0,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package kim.hyunsub.auth.controller.admin

import kim.hyunsub.auth.model.user.ApiAuthority
import kim.hyunsub.auth.model.api.ApiAuthority
import kim.hyunsub.auth.repository.AuthorityRepository
import kim.hyunsub.common.web.annotation.Authorized
import org.springframework.web.bind.annotation.GetMapping
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package kim.hyunsub.auth.controller.admin

import kim.hyunsub.auth.model.dto.ModifyUserAuthorityParams
import kim.hyunsub.auth.model.dto.admin.AdminUserAuthorityParams
import kim.hyunsub.auth.repository.UserAuthorityRepository
import kim.hyunsub.auth.repository.entity.UserAuthority
import kim.hyunsub.common.web.annotation.Authorized
Expand All @@ -21,15 +21,15 @@ class AdminUserAuthorityController(
private val log = KotlinLogging.logger { }

@PutMapping("")
fun putUserAuthority(@RequestBody params: ModifyUserAuthorityParams): SimpleResponse {
fun putUserAuthority(@RequestBody params: AdminUserAuthorityParams): SimpleResponse {
log.debug("putUserAuthority: {}", params)
val userAuthority = UserAuthority(params.idNo, params.authorityId)
userAuthorityRepository.save(userAuthority)
return SimpleResponse()
}

@DeleteMapping("")
fun delUserAuthority(@RequestBody params: ModifyUserAuthorityParams): SimpleResponse {
fun delUserAuthority(@RequestBody params: AdminUserAuthorityParams): SimpleResponse {
log.debug("delUserAuthority: {}", params)
val userAuthority = UserAuthority(params.idNo, params.authorityId)
userAuthorityRepository.delete(userAuthority)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
package kim.hyunsub.auth.controller.admin

import kim.hyunsub.auth.model.dto.UserCreateParams
import kim.hyunsub.auth.model.toApi
import kim.hyunsub.auth.model.user.ApiUser
import kim.hyunsub.auth.service.UserService
import kim.hyunsub.auth.bo.admin.AdminUserBo
import kim.hyunsub.auth.model.api.ApiUser
import kim.hyunsub.auth.model.dto.admin.AdminUserCreateParams
import kim.hyunsub.common.web.annotation.Authorized
import kim.hyunsub.common.web.model.SimpleResponse
import org.springframework.web.bind.annotation.DeleteMapping
import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.PathVariable
Expand All @@ -17,21 +17,25 @@ import org.springframework.web.bind.annotation.RestController
@RestController
@RequestMapping("/api/v1/admin/users")
class AdminUserController(
private val userService: UserService,
private val adminUserBo: AdminUserBo,
) {
@GetMapping("")
fun list(): List<ApiUser> =
userService.list().map { it.toApi() }
fun list(): List<ApiUser> {
return adminUserBo.list()
}

@PostMapping("")
fun create(@RequestBody params: UserCreateParams): ApiUser =
userService.create(params).toApi()
fun create(@RequestBody params: AdminUserCreateParams): ApiUser {
return adminUserBo.create(params)
}

@GetMapping("/{idNo}")
fun get(@PathVariable idNo: String): ApiUser =
userService.get(idNo).toApi()
fun get(@PathVariable idNo: String): ApiUser {
return adminUserBo.get(idNo)
}

@DeleteMapping("/{idNo}")
fun delete(@PathVariable idNo: String): ApiUser =
userService.delete(idNo).toApi()
fun delete(@PathVariable idNo: String): SimpleResponse {
return adminUserBo.delete(idNo)
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package kim.hyunsub.auth.controller.admin

import kim.hyunsub.auth.model.dto.KmsDecryptParams
import kim.hyunsub.auth.model.dto.KmsEncryptParams
import kim.hyunsub.auth.model.dto.admin.KmsDecryptParams
import kim.hyunsub.auth.model.dto.admin.KmsEncryptParams
import kim.hyunsub.common.kms.KmsEncryptor
import kim.hyunsub.common.kms.KmsProperties
import kim.hyunsub.common.web.annotation.Authorized
Expand All @@ -14,7 +14,9 @@ import org.springframework.web.bind.annotation.RestController
@Authorized(["admin"])
@RestController
@RequestMapping("/api/v1/admin/kms")
class KmsController(private val kmsProperties: KmsProperties) {
class KmsController(
private val kmsProperties: KmsProperties,
) {
private val log = KotlinLogging.logger { }

@PostMapping("/encrypt")
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package kim.hyunsub.auth.controller.admin

import kim.hyunsub.auth.model.dto.TokenIssueParams
import kim.hyunsub.auth.model.dto.TokenVerifyParams
import kim.hyunsub.auth.model.dto.auth.TokenIssueParams
import kim.hyunsub.auth.model.dto.auth.TokenVerifyParams
import kim.hyunsub.auth.repository.UserRepository
import kim.hyunsub.auth.service.TokenService
import kim.hyunsub.auth.service.UserAuthService
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package kim.hyunsub.auth.controller
package kim.hyunsub.auth.controller.auth

import jakarta.servlet.http.HttpServletResponse
import kim.hyunsub.auth.model.LogoutResult
import kim.hyunsub.auth.model.dto.auth.LogoutResult
import kim.hyunsub.auth.service.CookieGenerator
import kim.hyunsub.common.annotation.HyunsubCors
import kim.hyunsub.common.web.annotation.IgnoreAuthorize
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package kim.hyunsub.auth.controller
package kim.hyunsub.auth.controller.auth

import com.fasterxml.jackson.core.JacksonException
import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package kim.hyunsub.auth.controller.auth

import kim.hyunsub.auth.model.RsaKeyResult
import kim.hyunsub.auth.model.dto.auth.RsaKeyResult
import kim.hyunsub.auth.service.RsaKeyService
import kim.hyunsub.common.web.annotation.IgnoreAuthorize
import org.springframework.web.bind.annotation.GetMapping
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package kim.hyunsub.auth.controller.auth

import kim.hyunsub.auth.model.dto.ValidUrlParams
import kim.hyunsub.auth.model.dto.ValidUrlResult
import kim.hyunsub.auth.model.dto.auth.ValidUrlParams
import kim.hyunsub.auth.model.dto.auth.ValidUrlResult
import kim.hyunsub.common.web.annotation.IgnoreAuthorize
import org.springframework.web.bind.annotation.PostMapping
import org.springframework.web.bind.annotation.RequestBody
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ package kim.hyunsub.auth.controller.user

import jakarta.servlet.http.HttpServletResponse
import kim.hyunsub.auth.bo.user.ProfileBo
import kim.hyunsub.auth.model.Profile
import kim.hyunsub.auth.model.dto.ProfileUpdateParams
import kim.hyunsub.auth.model.dto.ProfileUpdateResult
import kim.hyunsub.auth.model.api.ApiProfile
import kim.hyunsub.auth.model.dto.user.ProfileUpdateParams
import kim.hyunsub.auth.model.dto.user.ProfileUpdateResult
import kim.hyunsub.common.annotation.HyunsubCors
import kim.hyunsub.common.web.model.SimpleResponse
import kim.hyunsub.common.web.model.UserAuth
Expand Down Expand Up @@ -33,7 +33,7 @@ class ProfileController(
@GetMapping("")
fun detail(
userAuth: UserAuth,
): Profile {
): ApiProfile {
return profileBo.detail(userAuth.idNo)
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package kim.hyunsub.auth.controller
package kim.hyunsub.auth.controller.user

import jakarta.servlet.http.HttpServletResponse
import kim.hyunsub.auth.service.LogoutService
Expand Down

This file was deleted.

16 changes: 0 additions & 16 deletions hyunsub-auth/src/main/kotlin/kim/hyunsub/auth/model/UserInfo.kt

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package kim.hyunsub.auth.model.user
package kim.hyunsub.auth.model.api

data class ApiAuthority(
val id: Int,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package kim.hyunsub.auth.model
package kim.hyunsub.auth.model.api

data class Profile(
import kim.hyunsub.auth.model.UserLanguage

data class ApiProfile(
val username: String,
val historyNum: Int,
val deviceNum: Int,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package kim.hyunsub.auth.model.api

data class ApiUser(
val idNo: String,
val username: String,
val authorities: List<Int>,
)

This file was deleted.

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package kim.hyunsub.auth.model.dto.admin

data class AdminUserAuthorityParams(
val idNo: String,
val authorityId: Int,
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package kim.hyunsub.auth.model.dto.admin

data class AdminUserCreateParams(
val name: String,
)
Loading

0 comments on commit 2533eb6

Please sign in to comment.