비활성 상태 패스워드 비교 저장

This commit is contained in:
2025-12-12 10:49:47 +09:00
parent e51f963af7
commit baf6ca7758
3 changed files with 43 additions and 6 deletions

View File

@@ -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));
}

View File

@@ -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);
}
}

View File

@@ -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());
}
/**
* 최초 로그인 저장 마지막 로그인 저장
*