관리자 관리 수정
This commit is contained in:
@@ -2,6 +2,9 @@ package com.kamco.cd.kamcoback.postgres.core;
|
||||
|
||||
import com.kamco.cd.kamcoback.auth.BCryptSaltGenerator;
|
||||
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.common.utils.CommonStringUtils;
|
||||
import com.kamco.cd.kamcoback.common.utils.UserUtil;
|
||||
import com.kamco.cd.kamcoback.members.dto.MembersDto;
|
||||
import com.kamco.cd.kamcoback.members.dto.MembersDto.AddReq;
|
||||
@@ -18,6 +21,7 @@ import lombok.RequiredArgsConstructor;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.mindrot.jbcrypt.BCrypt;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
@@ -34,8 +38,8 @@ public class MembersCoreService {
|
||||
* @return
|
||||
*/
|
||||
public Long saveMembers(AddReq addReq) {
|
||||
if (membersRepository.existsByUserId(addReq.getUserId())) {
|
||||
throw new DuplicateMemberException(Field.USER_ID, addReq.getUserId());
|
||||
if (membersRepository.existsByEmployeeNo(addReq.getEmployeeNo())) {
|
||||
throw new DuplicateMemberException(Field.EMPLOYEE_NO, addReq.getEmployeeNo());
|
||||
}
|
||||
|
||||
// salt 생성, 사번이 salt
|
||||
@@ -44,7 +48,7 @@ public class MembersCoreService {
|
||||
String hashedPassword = BCrypt.hashpw(addReq.getTempPassword(), salt);
|
||||
|
||||
MemberEntity memberEntity = new MemberEntity();
|
||||
memberEntity.setUserId(addReq.getUserId());
|
||||
memberEntity.setUserId(addReq.getEmployeeNo());
|
||||
memberEntity.setUserRole(addReq.getUserRole());
|
||||
memberEntity.setTempPassword(addReq.getTempPassword().trim()); // 임시 패스워드는 암호화 하지 않음
|
||||
memberEntity.setPassword(hashedPassword);
|
||||
@@ -71,41 +75,35 @@ public class MembersCoreService {
|
||||
|
||||
// 임시 패스워드는 암호화 하지 않음
|
||||
if (StringUtils.isNotBlank(updateReq.getTempPassword())) {
|
||||
// 임시 패스워드가 기존과 다르면 패스워드 변경으로 처리함
|
||||
// 상태 INACTIVE로 변경하여 사용자가 로그인할때 패스워드 변경하게함
|
||||
// 패스워드 리셋이므로 로그인 실패카운트 초기화처리함
|
||||
/**
|
||||
* 임시 패스워드가 기존과 다르면 패스워드 변경으로 처리함 상태 PENDING 으로 변경하여 사용자가 로그인할때 패스워드 변경하게함 패스워드 리셋이므로 로그인
|
||||
* 실패카운트 초기화처리함
|
||||
*/
|
||||
if (!memberEntity.getTempPassword().equals(updateReq.getTempPassword().trim())) {
|
||||
memberEntity.setStatus(StatusType.INACTIVE.getId());
|
||||
// 패스워드 유효성 검사
|
||||
if (!CommonStringUtils.isValidPassword(updateReq.getTempPassword())) {
|
||||
throw new CustomApiException("WRONG_PASSWORD", HttpStatus.BAD_REQUEST);
|
||||
}
|
||||
|
||||
memberEntity.setStatus(StatusType.PENDING.getId());
|
||||
memberEntity.setLoginFailCount(0);
|
||||
}
|
||||
memberEntity.setTempPassword(updateReq.getTempPassword().trim());
|
||||
}
|
||||
|
||||
if (StringUtils.isNotBlank(updateReq.getEmployeeNo())) {
|
||||
memberEntity.setEmployeeNo(updateReq.getEmployeeNo());
|
||||
}
|
||||
|
||||
if (StringUtils.isNotBlank(updateReq.getStatus())) {
|
||||
memberEntity.setStatus(updateReq.getStatus());
|
||||
}
|
||||
|
||||
memberEntity.setUpdtrUid(userUtil.getId());
|
||||
|
||||
membersRepository.save(memberEntity);
|
||||
}
|
||||
|
||||
/**
|
||||
* 관리자 계정 삭제 처리
|
||||
* 미사용 처리
|
||||
*
|
||||
* @param uuid
|
||||
*/
|
||||
public void deleteAccount(UUID uuid) {
|
||||
public void deleteMember(UUID uuid) {
|
||||
MemberEntity memberEntity =
|
||||
membersRepository.findByUUID(uuid).orElseThrow(() -> new MemberNotFoundException());
|
||||
|
||||
memberEntity.setStatus(StatusType.DELETED.getId());
|
||||
memberEntity.setUpdatedDttm(ZonedDateTime.now());
|
||||
memberEntity.setUpdtrUid(userUtil.getId());
|
||||
membersRepository.findByUUID(uuid).orElseThrow(MemberNotFoundException::new);
|
||||
memberEntity.setStatus(StatusType.INACTIVE.getId());
|
||||
membersRepository.save(memberEntity);
|
||||
}
|
||||
|
||||
@@ -116,7 +114,12 @@ public class MembersCoreService {
|
||||
*/
|
||||
public void resetPassword(String id, MembersDto.InitReq initReq) {
|
||||
MemberEntity memberEntity =
|
||||
membersRepository.findByUserId(id).orElseThrow(() -> new MemberNotFoundException());
|
||||
membersRepository.findByEmployeeNo(id).orElseThrow(() -> new MemberNotFoundException());
|
||||
|
||||
// 임시 패스워드 확인
|
||||
if (!memberEntity.getTempPassword().equals(initReq.getTempPassword())) {
|
||||
throw new CustomApiException(AuthErrorCode.LOGIN_PASSWORD_MISMATCH);
|
||||
}
|
||||
|
||||
String salt =
|
||||
BCryptSaltGenerator.generateSaltWithEmployeeNo(memberEntity.getEmployeeNo().trim());
|
||||
|
||||
@@ -64,7 +64,7 @@ public class MemberEntity {
|
||||
@Size(max = 20)
|
||||
@ColumnDefault("'INACTIVE'")
|
||||
@Column(name = "status", length = 20)
|
||||
private String status = StatusType.INACTIVE.getId();
|
||||
private String status = StatusType.PENDING.getId();
|
||||
|
||||
@NotNull
|
||||
@ColumnDefault("now()")
|
||||
|
||||
@@ -170,48 +170,53 @@ public class MapSheetMngRepositoryImpl extends QuerydslRepositorySupport
|
||||
@Override
|
||||
public void deleteByMngYyyyMngAll(int mngYyyy) {
|
||||
|
||||
long deletedFileCount = queryFactory
|
||||
.delete(mapSheetMngFileEntity)
|
||||
.where(mapSheetMngFileEntity.mngYyyy.eq(mngYyyy))
|
||||
.execute();
|
||||
long deletedFileCount =
|
||||
queryFactory
|
||||
.delete(mapSheetMngFileEntity)
|
||||
.where(mapSheetMngFileEntity.mngYyyy.eq(mngYyyy))
|
||||
.execute();
|
||||
|
||||
long deletedHisCount = queryFactory
|
||||
.delete(mapSheetMngHstEntity)
|
||||
.where(mapSheetMngHstEntity.mngYyyy.eq(mngYyyy))
|
||||
.execute();
|
||||
long deletedHisCount =
|
||||
queryFactory
|
||||
.delete(mapSheetMngHstEntity)
|
||||
.where(mapSheetMngHstEntity.mngYyyy.eq(mngYyyy))
|
||||
.execute();
|
||||
|
||||
long deletedMngCount = queryFactory
|
||||
.delete(mapSheetMngEntity)
|
||||
.where(mapSheetMngEntity.mngYyyy.eq(mngYyyy))
|
||||
.execute();
|
||||
long deletedMngCount =
|
||||
queryFactory
|
||||
.delete(mapSheetMngEntity)
|
||||
.where(mapSheetMngEntity.mngYyyy.eq(mngYyyy))
|
||||
.execute();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void deleteByMngYyyyMng(int mngYyyy) {
|
||||
|
||||
long deletedMngCount = queryFactory
|
||||
.delete(mapSheetMngEntity)
|
||||
.where(mapSheetMngEntity.mngYyyy.eq(mngYyyy))
|
||||
.execute();
|
||||
long deletedMngCount =
|
||||
queryFactory
|
||||
.delete(mapSheetMngEntity)
|
||||
.where(mapSheetMngEntity.mngYyyy.eq(mngYyyy))
|
||||
.execute();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteByMngYyyyMngHst(int mngYyyy) {
|
||||
|
||||
long deletedHisCount = queryFactory
|
||||
.delete(mapSheetMngHstEntity)
|
||||
.where(mapSheetMngHstEntity.mngYyyy.eq(mngYyyy))
|
||||
.execute();
|
||||
long deletedHisCount =
|
||||
queryFactory
|
||||
.delete(mapSheetMngHstEntity)
|
||||
.where(mapSheetMngHstEntity.mngYyyy.eq(mngYyyy))
|
||||
.execute();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteByMngYyyyMngFile(int mngYyyy) {
|
||||
|
||||
long deletedFileCount = queryFactory
|
||||
.delete(mapSheetMngFileEntity)
|
||||
.where(mapSheetMngFileEntity.mngYyyy.eq(mngYyyy))
|
||||
.execute();
|
||||
long deletedFileCount =
|
||||
queryFactory
|
||||
.delete(mapSheetMngFileEntity)
|
||||
.where(mapSheetMngFileEntity.mngYyyy.eq(mngYyyy))
|
||||
.execute();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -11,6 +11,10 @@ public interface MembersRepositoryCustom {
|
||||
|
||||
boolean existsByUserId(String userId);
|
||||
|
||||
boolean existsByEmployeeNo(String employeeNo);
|
||||
|
||||
Optional<MemberEntity> findByEmployeeNo(String employeeNo);
|
||||
|
||||
Optional<MemberEntity> findByUserId(String userId);
|
||||
|
||||
Optional<MemberEntity> findByUUID(UUID uuid);
|
||||
|
||||
@@ -40,6 +40,22 @@ public class MembersRepositoryImpl implements MembersRepositoryCustom {
|
||||
!= null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 사용자 사번 조회
|
||||
*
|
||||
* @param employeeNo
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public boolean existsByEmployeeNo(String employeeNo) {
|
||||
return queryFactory
|
||||
.selectOne()
|
||||
.from(memberEntity)
|
||||
.where(memberEntity.employeeNo.eq(employeeNo))
|
||||
.fetchFirst()
|
||||
!= null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 사용자 조회 user id
|
||||
*
|
||||
@@ -52,6 +68,21 @@ public class MembersRepositoryImpl implements MembersRepositoryCustom {
|
||||
queryFactory.selectFrom(memberEntity).where(memberEntity.userId.eq(userId)).fetchOne());
|
||||
}
|
||||
|
||||
/**
|
||||
* 사용자 조회 employeed no
|
||||
*
|
||||
* @param employeeNo
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public Optional<MemberEntity> findByEmployeeNo(String employeeNo) {
|
||||
return Optional.ofNullable(
|
||||
queryFactory
|
||||
.selectFrom(memberEntity)
|
||||
.where(memberEntity.employeeNo.eq(employeeNo))
|
||||
.fetchOne());
|
||||
}
|
||||
|
||||
/**
|
||||
* 회원정보 목록 조회
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user