관리자 관리 수정

This commit is contained in:
2025-12-15 10:38:26 +09:00
parent dfaa55ee49
commit 9baef15d6a
10 changed files with 75 additions and 84 deletions

View File

@@ -45,16 +45,16 @@ public class MembersCoreService {
// salt 생성, 사번이 salt
String salt = BCryptSaltGenerator.generateSaltWithEmployeeNo(addReq.getEmployeeNo().trim());
// 패스워드 암호화, 초기 패스워드 고정
String hashedPassword = BCrypt.hashpw(addReq.getTempPassword(), salt);
String hashedPassword = BCrypt.hashpw(addReq.getPassword(), salt);
MemberEntity memberEntity = new MemberEntity();
memberEntity.setUserId(addReq.getEmployeeNo());
memberEntity.setUserRole(addReq.getUserRole());
memberEntity.setTempPassword(addReq.getTempPassword().trim()); // 임시 패스워드는 암호화 하지 않음
memberEntity.setPassword(hashedPassword);
memberEntity.setName(addReq.getName());
memberEntity.setEmployeeNo(addReq.getEmployeeNo());
memberEntity.setRgstrUidl(userUtil.getId());
memberEntity.setStatus(StatusType.PENDING.getId());
return membersRepository.save(memberEntity).getId();
}
@@ -73,37 +73,25 @@ public class MembersCoreService {
memberEntity.setName(updateReq.getName());
}
// 임시 패스워드는 암호화 하지 않음
if (StringUtils.isNotBlank(updateReq.getTempPassword())) {
/**
* 임시 패스워드가 기존과 다르면 패스워드 변경으로 처리함 상태 PENDING 으로 변경하여 사용자가 로그인할때 패스워드 변경하게함 패스워드 리셋이므로 로그인
* 실패카운트 초기화처리함
*/
if (!memberEntity.getTempPassword().equals(updateReq.getTempPassword().trim())) {
// 패스워드 유효성 검사
if (!CommonStringUtils.isValidPassword(updateReq.getTempPassword())) {
throw new CustomApiException("WRONG_PASSWORD", HttpStatus.BAD_REQUEST);
}
if (StringUtils.isNotBlank(updateReq.getStatus())) {
memberEntity.setStatus(updateReq.getStatus());
}
memberEntity.setStatus(StatusType.PENDING.getId());
memberEntity.setLoginFailCount(0);
if (StringUtils.isNotBlank(updateReq.getPassword())) {
// 패스워드 유효성 검사
if (!CommonStringUtils.isValidPassword(updateReq.getPassword())) {
throw new CustomApiException("WRONG_PASSWORD", HttpStatus.BAD_REQUEST);
}
memberEntity.setTempPassword(updateReq.getTempPassword().trim());
String password =
CommonStringUtils.hashPassword(updateReq.getPassword(), memberEntity.getPassword());
memberEntity.setStatus(StatusType.PENDING.getId());
memberEntity.setLoginFailCount(0);
memberEntity.setPassword(password);
}
memberEntity.setUpdtrUid(userUtil.getId());
membersRepository.save(memberEntity);
}
/**
* 미사용 처리
*
* @param uuid
*/
public void deleteMember(UUID uuid) {
MemberEntity memberEntity =
membersRepository.findByUUID(uuid).orElseThrow(MemberNotFoundException::new);
memberEntity.setStatus(StatusType.INACTIVE.getId());
membersRepository.save(memberEntity);
}
@@ -116,18 +104,16 @@ public class MembersCoreService {
MemberEntity memberEntity =
membersRepository.findByEmployeeNo(id).orElseThrow(() -> new MemberNotFoundException());
// 임시 패스워드 확인
if (!memberEntity.getTempPassword().equals(initReq.getTempPassword())) {
// 기존 패스워드 확인
if (!BCrypt.checkpw(initReq.getOldPassword(), memberEntity.getPassword())) {
throw new CustomApiException(AuthErrorCode.LOGIN_PASSWORD_MISMATCH);
}
String salt =
BCryptSaltGenerator.generateSaltWithEmployeeNo(memberEntity.getEmployeeNo().trim());
// 패스워드 암호화
String hashedPassword = BCrypt.hashpw(initReq.getPassword(), salt);
String password =
CommonStringUtils.hashPassword(initReq.getOldPassword(), memberEntity.getPassword());
memberEntity.setPassword(hashedPassword);
memberEntity.setStatus("ACTIVE");
memberEntity.setPassword(password);
memberEntity.setStatus(StatusType.ACTIVE.getId());
memberEntity.setUpdatedDttm(ZonedDateTime.now());
memberEntity.setUpdtrUid(memberEntity.getId());
membersRepository.save(memberEntity);

View File

@@ -9,11 +9,13 @@ import jakarta.persistence.Id;
import jakarta.persistence.Table;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
import java.sql.Types;
import java.time.ZonedDateTime;
import java.util.UUID;
import lombok.Getter;
import lombok.Setter;
import org.hibernate.annotations.ColumnDefault;
import org.hibernate.annotations.JdbcTypeCode;
@Getter
@Setter
@@ -62,7 +64,6 @@ public class MemberEntity {
private String password;
@Size(max = 20)
@ColumnDefault("'INACTIVE'")
@Column(name = "status", length = 20)
private String status = StatusType.PENDING.getId();
@@ -90,4 +91,11 @@ public class MemberEntity {
@Column(name = "updtr_uid")
private Long updtrUid;
@Column(name = "status_chg_dttm")
private ZonedDateTime statusChgDttm;
@JdbcTypeCode(Types.CHAR)
@Column(name = "pwd_reset_yn", columnDefinition = "CHAR(1)")
private String pwdResetYn;
}