Merge pull request '비활성 상태 패스워드 비교 저장' (#51) from feat/dev_251201 into develop
Reviewed-on: https://kamco.gitea.gs.dabeeo.com/dabeeo/kamco-dabeeo-backoffice/pulls/51
This commit is contained in:
@@ -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));
|
||||
}
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.kamco.cd.kamcoback.members.dto;
|
||||
import com.kamco.cd.kamcoback.common.enums.RoleType;
|
||||
import com.kamco.cd.kamcoback.common.enums.StatusType;
|
||||
import com.kamco.cd.kamcoback.common.utils.Enums;
|
||||
import com.kamco.cd.kamcoback.common.utils.interfaces.EnumValid;
|
||||
import com.kamco.cd.kamcoback.common.utils.interfaces.JsonFormatDttm;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
@@ -107,7 +108,7 @@ public class MembersDto {
|
||||
|
||||
@Schema(description = "관리자 유형", example = "ADMIN")
|
||||
@NotBlank
|
||||
@Size(max = 50)
|
||||
@EnumValid(enumClass = RoleType.class, message = "userRole은 ADMIN, LABELER, REVIEWER만 가능합니다.")
|
||||
private String userRole;
|
||||
|
||||
@Schema(description = "이름", example = "홍길동")
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -46,7 +46,7 @@ public class MembersCoreService {
|
||||
MemberEntity memberEntity = new MemberEntity();
|
||||
memberEntity.setUserId(addReq.getUserId());
|
||||
memberEntity.setUserRole(addReq.getUserRole());
|
||||
memberEntity.setTempPassword(addReq.getTempPassword()); // 임시 패스워드는 암호화 하지 않음
|
||||
memberEntity.setTempPassword(addReq.getTempPassword().trim()); // 임시 패스워드는 암호화 하지 않음
|
||||
memberEntity.setPassword(hashedPassword);
|
||||
memberEntity.setName(addReq.getName());
|
||||
memberEntity.setEmployeeNo(addReq.getEmployeeNo());
|
||||
@@ -71,7 +71,14 @@ public class MembersCoreService {
|
||||
|
||||
// 임시 패스워드는 암호화 하지 않음
|
||||
if (StringUtils.isNotBlank(updateReq.getTempPassword())) {
|
||||
memberEntity.setTempPassword(updateReq.getTempPassword());
|
||||
// 임시 패스워드가 기존과 다르면 패스워드 변경으로 처리함
|
||||
// 상태 INACTIVE로 변경하여 사용자가 로그인할때 패스워드 변경하게함
|
||||
// 패스워드 리셋이므로 로그인 실패카운트 초기화처리함
|
||||
if (!memberEntity.getTempPassword().equals(updateReq.getTempPassword().trim())) {
|
||||
memberEntity.setStatus(StatusType.INACTIVE.getId());
|
||||
memberEntity.setLoginFailCount(0);
|
||||
}
|
||||
memberEntity.setTempPassword(updateReq.getTempPassword().trim());
|
||||
}
|
||||
|
||||
if (StringUtils.isNotBlank(memberEntity.getEmployeeNo())) {
|
||||
@@ -145,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());
|
||||
}
|
||||
|
||||
/**
|
||||
* 최초 로그인 저장 마지막 로그인 저장
|
||||
*
|
||||
|
||||
@@ -42,7 +42,7 @@ public class MapSheetMngHstEntity extends CommonDateEntity {
|
||||
private ZonedDateTime dataStateDttm;
|
||||
|
||||
@Column(name = "use_inference")
|
||||
private Boolean useInference;
|
||||
private String useInference;
|
||||
|
||||
@Column(name = "use_inference_dttm")
|
||||
private ZonedDateTime useInferenceDttm;
|
||||
|
||||
Reference in New Issue
Block a user