From baf6ca775862eafe3a762656bff3439176a09165 Mon Sep 17 00:00:00 2001 From: teddy Date: Fri, 12 Dec 2025 10:49:47 +0900 Subject: [PATCH] =?UTF-8?q?=EB=B9=84=ED=99=9C=EC=84=B1=20=EC=83=81?= =?UTF-8?q?=ED=83=9C=20=ED=8C=A8=EC=8A=A4=EC=9B=8C=EB=93=9C=20=EB=B9=84?= =?UTF-8?q?=EA=B5=90=20=EC=A0=80=EC=9E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cd/kamcoback/members/AuthController.java | 24 ++++++++++++++----- .../members/service/AuthService.java | 10 ++++++++ .../postgres/core/MembersCoreService.java | 15 ++++++++++++ 3 files changed, 43 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/kamco/cd/kamcoback/members/AuthController.java b/src/main/java/com/kamco/cd/kamcoback/members/AuthController.java index 8596df04..5487bc2d 100644 --- a/src/main/java/com/kamco/cd/kamcoback/members/AuthController.java +++ b/src/main/java/com/kamco/cd/kamcoback/members/AuthController.java @@ -3,6 +3,9 @@ package com.kamco.cd.kamcoback.members; import com.kamco.cd.kamcoback.auth.CustomUserDetails; import com.kamco.cd.kamcoback.auth.JwtTokenProvider; import com.kamco.cd.kamcoback.auth.RefreshTokenService; +import com.kamco.cd.kamcoback.common.enums.StatusType; +import com.kamco.cd.kamcoback.common.enums.error.AuthErrorCode; +import com.kamco.cd.kamcoback.common.exception.CustomApiException; import com.kamco.cd.kamcoback.config.api.ApiResponseDto; import com.kamco.cd.kamcoback.members.dto.MembersDto; import com.kamco.cd.kamcoback.members.dto.SignInRequest; @@ -104,16 +107,25 @@ public class AuthController { SignInRequest request, HttpServletResponse response) { - Authentication authentication = - authenticationManager.authenticate( - new UsernamePasswordAuthenticationToken(request.getUsername(), request.getPassword())); - + // 사용자 상태 조회 String status = authService.getUserStatus(request); - + Authentication authentication = null; MembersDto.Member member = new MembersDto.Member(); + // 비활성 상태면 임시패스워드를 비교함 + if (StatusType.INACTIVE.getId().equals(status)) { + if (!authService.isTempPasswordValid(request)) { + throw new CustomApiException(AuthErrorCode.LOGIN_PASSWORD_MISMATCH); + } + } else { + authentication = + authenticationManager.authenticate( + new UsernamePasswordAuthenticationToken( + request.getUsername(), request.getPassword())); + } + // INACTIVE 비활성 상태(새로운 패스워드 입력 해야함), DELETED 탈퇴 - if (!"ACTIVE".equals(status)) { + if (!StatusType.ACTIVE.getId().equals(status)) { return ApiResponseDto.ok(new TokenResponse(status, null, null, member)); } diff --git a/src/main/java/com/kamco/cd/kamcoback/members/service/AuthService.java b/src/main/java/com/kamco/cd/kamcoback/members/service/AuthService.java index 287bc99b..7220ae34 100644 --- a/src/main/java/com/kamco/cd/kamcoback/members/service/AuthService.java +++ b/src/main/java/com/kamco/cd/kamcoback/members/service/AuthService.java @@ -33,4 +33,14 @@ public class AuthService { public String getUserStatus(SignInRequest request) { return membersCoreService.getUserStatus(request); } + + /** + * 임시 패스워드 비교 + * + * @param request + * @return + */ + public boolean isTempPasswordValid(SignInRequest request) { + return membersCoreService.isTempPasswordValid(request); + } } diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/core/MembersCoreService.java b/src/main/java/com/kamco/cd/kamcoback/postgres/core/MembersCoreService.java index 8ef00a36..4ddb2490 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/core/MembersCoreService.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/core/MembersCoreService.java @@ -152,6 +152,21 @@ public class MembersCoreService { return memberEntity.getStatus(); } + /** + * 임시 패스워드 비교 + * + * @param request + * @return + */ + public boolean isTempPasswordValid(SignInRequest request) { + MemberEntity memberEntity = + membersRepository + .findByUserId(request.getUsername()) + .orElseThrow(MemberNotFoundException::new); + + return memberEntity.getTempPassword().equals(request.getPassword().trim()); + } + /** * 최초 로그인 저장 마지막 로그인 저장 *