From 1caa9d3f3d9c1dbd1649aa0c391cb825a0f447e7 Mon Sep 17 00:00:00 2001 From: pricelees Date: Tue, 7 Oct 2025 20:27:19 +0900 Subject: [PATCH] =?UTF-8?q?refactor:=20auth=20=EB=82=B4=20DTO=20=ED=8C=A8?= =?UTF-8?q?=ED=82=A4=EC=A7=80=20=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sangdol/roomescape/admin/dto/AdminLoginDTO.kt | 4 ++-- .../sangdol/roomescape/auth/business/AuthService.kt | 6 +++++- .../roomescape/auth/business/LoginHistoryService.kt | 4 ++-- .../auth/business/domain/PrincipalType.kt | 5 +++++ .../com/sangdol/roomescape/auth/docs/AuthAPI.kt | 4 ++-- .../sangdol/roomescape/auth/{web => dto}/AuthDTO.kt | 13 ++----------- .../persistence/LoginHistoryEntity.kt | 2 +- .../sangdol/roomescape/auth/web/AuthController.kt | 8 ++++++++ .../com/sangdol/roomescape/user/dto/UserLoginDTO.kt | 4 ++-- .../com/sangdol/roomescape/auth/AuthApiTest.kt | 4 ++-- .../roomescape/auth/FailOnSaveLoginHistoryTest.kt | 4 ++-- .../com/sangdol/roomescape/supports/TestAuthUtil.kt | 4 ++-- 12 files changed, 35 insertions(+), 27 deletions(-) create mode 100644 service/src/main/kotlin/com/sangdol/roomescape/auth/business/domain/PrincipalType.kt rename service/src/main/kotlin/com/sangdol/roomescape/auth/{web => dto}/AuthDTO.kt (65%) diff --git a/service/src/main/kotlin/com/sangdol/roomescape/admin/dto/AdminLoginDTO.kt b/service/src/main/kotlin/com/sangdol/roomescape/admin/dto/AdminLoginDTO.kt index aa81c332..cf350d20 100644 --- a/service/src/main/kotlin/com/sangdol/roomescape/admin/dto/AdminLoginDTO.kt +++ b/service/src/main/kotlin/com/sangdol/roomescape/admin/dto/AdminLoginDTO.kt @@ -2,8 +2,8 @@ package com.sangdol.roomescape.admin.dto import com.sangdol.roomescape.admin.infrastructure.persistence.AdminPermissionLevel import com.sangdol.roomescape.admin.infrastructure.persistence.AdminType -import com.sangdol.roomescape.auth.web.LoginCredentials -import com.sangdol.roomescape.auth.web.LoginSuccessResponse +import com.sangdol.roomescape.auth.dto.LoginCredentials +import com.sangdol.roomescape.auth.dto.LoginSuccessResponse data class AdminLoginCredentials( override val id: Long, diff --git a/service/src/main/kotlin/com/sangdol/roomescape/auth/business/AuthService.kt b/service/src/main/kotlin/com/sangdol/roomescape/auth/business/AuthService.kt index efa5ea1d..03023e1c 100644 --- a/service/src/main/kotlin/com/sangdol/roomescape/auth/business/AuthService.kt +++ b/service/src/main/kotlin/com/sangdol/roomescape/auth/business/AuthService.kt @@ -1,10 +1,14 @@ package com.sangdol.roomescape.auth.business import com.sangdol.roomescape.admin.business.AdminService +import com.sangdol.roomescape.auth.business.domain.PrincipalType +import com.sangdol.roomescape.auth.dto.LoginContext +import com.sangdol.roomescape.auth.dto.LoginCredentials +import com.sangdol.roomescape.auth.dto.LoginRequest +import com.sangdol.roomescape.auth.dto.LoginSuccessResponse import com.sangdol.roomescape.auth.exception.AuthErrorCode import com.sangdol.roomescape.auth.exception.AuthException import com.sangdol.roomescape.auth.infrastructure.jwt.JwtUtils -import com.sangdol.roomescape.auth.web.* import com.sangdol.roomescape.user.business.UserService import io.github.oshai.kotlinlogging.KLogger import io.github.oshai.kotlinlogging.KotlinLogging diff --git a/service/src/main/kotlin/com/sangdol/roomescape/auth/business/LoginHistoryService.kt b/service/src/main/kotlin/com/sangdol/roomescape/auth/business/LoginHistoryService.kt index 4dc31855..662a81bb 100644 --- a/service/src/main/kotlin/com/sangdol/roomescape/auth/business/LoginHistoryService.kt +++ b/service/src/main/kotlin/com/sangdol/roomescape/auth/business/LoginHistoryService.kt @@ -3,8 +3,8 @@ package com.sangdol.roomescape.auth.business import com.sangdol.common.persistence.IDGenerator import com.sangdol.roomescape.auth.infrastructure.persistence.LoginHistoryEntity import com.sangdol.roomescape.auth.infrastructure.persistence.LoginHistoryRepository -import com.sangdol.roomescape.auth.web.LoginContext -import com.sangdol.roomescape.auth.web.PrincipalType +import com.sangdol.roomescape.auth.dto.LoginContext +import com.sangdol.roomescape.auth.business.domain.PrincipalType import io.github.oshai.kotlinlogging.KLogger import io.github.oshai.kotlinlogging.KotlinLogging import org.springframework.stereotype.Service diff --git a/service/src/main/kotlin/com/sangdol/roomescape/auth/business/domain/PrincipalType.kt b/service/src/main/kotlin/com/sangdol/roomescape/auth/business/domain/PrincipalType.kt new file mode 100644 index 00000000..c0dc440c --- /dev/null +++ b/service/src/main/kotlin/com/sangdol/roomescape/auth/business/domain/PrincipalType.kt @@ -0,0 +1,5 @@ +package com.sangdol.roomescape.auth.business.domain + +enum class PrincipalType { + USER, ADMIN +} \ No newline at end of file diff --git a/service/src/main/kotlin/com/sangdol/roomescape/auth/docs/AuthAPI.kt b/service/src/main/kotlin/com/sangdol/roomescape/auth/docs/AuthAPI.kt index 73fb472c..fc7cdbed 100644 --- a/service/src/main/kotlin/com/sangdol/roomescape/auth/docs/AuthAPI.kt +++ b/service/src/main/kotlin/com/sangdol/roomescape/auth/docs/AuthAPI.kt @@ -1,8 +1,8 @@ package com.sangdol.roomescape.auth.docs import com.sangdol.common.types.web.CommonApiResponse -import com.sangdol.roomescape.auth.web.LoginRequest -import com.sangdol.roomescape.auth.web.LoginSuccessResponse +import com.sangdol.roomescape.auth.dto.LoginRequest +import com.sangdol.roomescape.auth.dto.LoginSuccessResponse import com.sangdol.roomescape.auth.web.support.Public import com.sangdol.roomescape.auth.web.support.User import com.sangdol.roomescape.common.types.CurrentUserContext diff --git a/service/src/main/kotlin/com/sangdol/roomescape/auth/web/AuthDTO.kt b/service/src/main/kotlin/com/sangdol/roomescape/auth/dto/AuthDTO.kt similarity index 65% rename from service/src/main/kotlin/com/sangdol/roomescape/auth/web/AuthDTO.kt rename to service/src/main/kotlin/com/sangdol/roomescape/auth/dto/AuthDTO.kt index 4385358d..1a48a182 100644 --- a/service/src/main/kotlin/com/sangdol/roomescape/auth/web/AuthDTO.kt +++ b/service/src/main/kotlin/com/sangdol/roomescape/auth/dto/AuthDTO.kt @@ -1,21 +1,12 @@ -package com.sangdol.roomescape.auth.web +package com.sangdol.roomescape.auth.dto -import jakarta.servlet.http.HttpServletRequest - -enum class PrincipalType { - USER, ADMIN -} +import com.sangdol.roomescape.auth.business.domain.PrincipalType data class LoginContext( val ipAddress: String, val userAgent: String, ) -fun HttpServletRequest.toLoginContext() = LoginContext( - ipAddress = this.remoteAddr, - userAgent = this.getHeader("User-Agent") -) - data class LoginRequest( val account: String, val password: String, diff --git a/service/src/main/kotlin/com/sangdol/roomescape/auth/infrastructure/persistence/LoginHistoryEntity.kt b/service/src/main/kotlin/com/sangdol/roomescape/auth/infrastructure/persistence/LoginHistoryEntity.kt index 86bcb168..7a8d1e74 100644 --- a/service/src/main/kotlin/com/sangdol/roomescape/auth/infrastructure/persistence/LoginHistoryEntity.kt +++ b/service/src/main/kotlin/com/sangdol/roomescape/auth/infrastructure/persistence/LoginHistoryEntity.kt @@ -1,7 +1,7 @@ package com.sangdol.roomescape.auth.infrastructure.persistence import com.sangdol.common.persistence.PersistableBaseEntity -import com.sangdol.roomescape.auth.web.PrincipalType +import com.sangdol.roomescape.auth.business.domain.PrincipalType import jakarta.persistence.* import org.springframework.data.annotation.CreatedDate import org.springframework.data.jpa.domain.support.AuditingEntityListener diff --git a/service/src/main/kotlin/com/sangdol/roomescape/auth/web/AuthController.kt b/service/src/main/kotlin/com/sangdol/roomescape/auth/web/AuthController.kt index b335e36a..f7f93bcc 100644 --- a/service/src/main/kotlin/com/sangdol/roomescape/auth/web/AuthController.kt +++ b/service/src/main/kotlin/com/sangdol/roomescape/auth/web/AuthController.kt @@ -3,6 +3,9 @@ package com.sangdol.roomescape.auth.web import com.sangdol.common.types.web.CommonApiResponse import com.sangdol.roomescape.auth.business.AuthService import com.sangdol.roomescape.auth.docs.AuthAPI +import com.sangdol.roomescape.auth.dto.LoginContext +import com.sangdol.roomescape.auth.dto.LoginRequest +import com.sangdol.roomescape.auth.dto.LoginSuccessResponse import com.sangdol.roomescape.auth.web.support.User import com.sangdol.roomescape.common.types.CurrentUserContext import jakarta.servlet.http.HttpServletRequest @@ -36,3 +39,8 @@ class AuthController( return ResponseEntity.ok().build() } } + +fun HttpServletRequest.toLoginContext() = LoginContext( + ipAddress = this.remoteAddr, + userAgent = this.getHeader("User-Agent") +) diff --git a/service/src/main/kotlin/com/sangdol/roomescape/user/dto/UserLoginDTO.kt b/service/src/main/kotlin/com/sangdol/roomescape/user/dto/UserLoginDTO.kt index 241616ef..b7ac5e40 100644 --- a/service/src/main/kotlin/com/sangdol/roomescape/user/dto/UserLoginDTO.kt +++ b/service/src/main/kotlin/com/sangdol/roomescape/user/dto/UserLoginDTO.kt @@ -1,7 +1,7 @@ package com.sangdol.roomescape.user.dto -import com.sangdol.roomescape.auth.web.LoginCredentials -import com.sangdol.roomescape.auth.web.LoginSuccessResponse +import com.sangdol.roomescape.auth.dto.LoginCredentials +import com.sangdol.roomescape.auth.dto.LoginSuccessResponse data class UserLoginCredentials( override val id: Long, diff --git a/service/src/test/kotlin/com/sangdol/roomescape/auth/AuthApiTest.kt b/service/src/test/kotlin/com/sangdol/roomescape/auth/AuthApiTest.kt index 913bdf30..7e9eae99 100644 --- a/service/src/test/kotlin/com/sangdol/roomescape/auth/AuthApiTest.kt +++ b/service/src/test/kotlin/com/sangdol/roomescape/auth/AuthApiTest.kt @@ -9,8 +9,8 @@ import com.sangdol.roomescape.auth.business.CLAIM_STORE_ID_KEY import com.sangdol.roomescape.auth.exception.AuthErrorCode import com.sangdol.roomescape.auth.infrastructure.jwt.JwtUtils import com.sangdol.roomescape.auth.infrastructure.persistence.LoginHistoryRepository -import com.sangdol.roomescape.auth.web.LoginRequest -import com.sangdol.roomescape.auth.web.PrincipalType +import com.sangdol.roomescape.auth.dto.LoginRequest +import com.sangdol.roomescape.auth.business.domain.PrincipalType import com.sangdol.roomescape.supports.AdminFixture import com.sangdol.roomescape.supports.FunSpecSpringbootTest import com.sangdol.roomescape.supports.UserFixture diff --git a/service/src/test/kotlin/com/sangdol/roomescape/auth/FailOnSaveLoginHistoryTest.kt b/service/src/test/kotlin/com/sangdol/roomescape/auth/FailOnSaveLoginHistoryTest.kt index fb86ab54..1a766de2 100644 --- a/service/src/test/kotlin/com/sangdol/roomescape/auth/FailOnSaveLoginHistoryTest.kt +++ b/service/src/test/kotlin/com/sangdol/roomescape/auth/FailOnSaveLoginHistoryTest.kt @@ -3,8 +3,8 @@ package com.sangdol.roomescape.auth import com.ninjasquad.springmockk.MockkBean import com.sangdol.common.types.web.HttpStatus import com.sangdol.roomescape.auth.infrastructure.persistence.LoginHistoryRepository -import com.sangdol.roomescape.auth.web.LoginRequest -import com.sangdol.roomescape.auth.web.PrincipalType +import com.sangdol.roomescape.auth.dto.LoginRequest +import com.sangdol.roomescape.auth.business.domain.PrincipalType import com.sangdol.roomescape.supports.AdminFixture import com.sangdol.roomescape.supports.FunSpecSpringbootTest import com.sangdol.roomescape.supports.UserFixture diff --git a/service/src/test/kotlin/com/sangdol/roomescape/supports/TestAuthUtil.kt b/service/src/test/kotlin/com/sangdol/roomescape/supports/TestAuthUtil.kt index 766f2c2d..fb413a98 100644 --- a/service/src/test/kotlin/com/sangdol/roomescape/supports/TestAuthUtil.kt +++ b/service/src/test/kotlin/com/sangdol/roomescape/supports/TestAuthUtil.kt @@ -4,8 +4,8 @@ import com.sangdol.common.types.web.HttpStatus import com.sangdol.roomescape.admin.infrastructure.persistence.AdminEntity import com.sangdol.roomescape.admin.infrastructure.persistence.AdminRepository import com.sangdol.roomescape.admin.infrastructure.persistence.AdminType -import com.sangdol.roomescape.auth.web.LoginRequest -import com.sangdol.roomescape.auth.web.PrincipalType +import com.sangdol.roomescape.auth.dto.LoginRequest +import com.sangdol.roomescape.auth.business.domain.PrincipalType import com.sangdol.roomescape.store.infrastructure.persistence.StoreRepository import com.sangdol.roomescape.user.infrastructure.persistence.UserEntity import com.sangdol.roomescape.user.infrastructure.persistence.UserRepository