- 삭제 버튼 관련 JSP/JS 수정 및 승인 상태별 버튼 표시 개선 - 초기 패스워드 설정 접미사 적용 및 강제 변경 유도 로직 추가
This commit is contained in:
@@ -86,6 +86,12 @@ public class PortalApprovalManController extends BaseAnnotationController {
|
||||
return ResponseEntity.ok().build();
|
||||
}
|
||||
|
||||
@PostMapping(value = "/onl/apim/approval/portalApprovalMan.json", params = "cmd=DELETE")
|
||||
public ResponseEntity<Void> delete(String id) {
|
||||
portalApprovalManService.deleteApprovalRequest(id);
|
||||
return ResponseEntity.ok().build();
|
||||
}
|
||||
|
||||
@PostMapping(value = "/onl/apim/approval/portalApprovalMan.json", params = "cmd=REDEPLOY")
|
||||
public ResponseEntity<Void> redeploy(String id) {
|
||||
portalApprovalManService.redeploy(id);
|
||||
|
||||
@@ -7,6 +7,8 @@ import com.eactive.apim.portal.approval.entity.Approval;
|
||||
import com.eactive.apim.portal.approval.entity.ApprovalType;
|
||||
import com.eactive.apim.portal.approval.entity.ApproverStatus;
|
||||
import com.eactive.apim.portal.approval.statemachine.*;
|
||||
import com.eactive.apim.portal.portalorg.entity.PortalOrg;
|
||||
import com.eactive.apim.portal.portalorg.entity.PortalOrgEnums.OrgStatus;
|
||||
import com.eactive.apim.portal.portalproperty.service.PortalPropertyService;
|
||||
import com.eactive.apim.portal.portaluser.entity.PortalUser;
|
||||
import com.eactive.apim.portal.portaluser.repository.PortalUserRepository;
|
||||
@@ -432,6 +434,45 @@ public class PortalApprovalManService extends BaseService {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 삭제된 대상 사용자 또는 삭제된 법인이 포함되어 승인·반려가 불가능한 승인 요청을 물리 삭제한다.
|
||||
* 사용자(PortalUser)/법인(PortalOrg) row 는 건드리지 않고 PTL_APPROVER/PTL_APPROVAL row 만 제거한다.
|
||||
* 임의 삭제 방지를 위해 실제로 삭제된 사용자/법인이 포함된 USER 유형 요청만 허용한다.
|
||||
*/
|
||||
public void deleteApprovalRequest(String id) {
|
||||
Approval approval = approvalService.findById(id)
|
||||
.orElseThrow(() -> new BizException("승인 정보를 찾을 수 없습니다. ID: " + id));
|
||||
if (!approval.getApprovalType().equals(ApprovalType.USER)) {
|
||||
throw new BizException("법인사용자 승인 요청만 삭제할 수 있습니다.");
|
||||
}
|
||||
|
||||
Optional<PortalUser> optUser = portalUserRepository.findById(approval.getTargetId());
|
||||
boolean userDeleted = !optUser.isPresent()
|
||||
|| "반려된 사용자".equals(optUser.get().getUserName())
|
||||
|| "삭제된 사용자".equals(optUser.get().getUserName());
|
||||
boolean orgDeleted = false;
|
||||
if (optUser.isPresent()) {
|
||||
PortalOrg org = optUser.get().getPortalOrg();
|
||||
orgDeleted = org == null
|
||||
|| OrgStatus.REMOVED.equals(org.getOrgStatus())
|
||||
|| "삭제된법인".equals(org.getOrgName());
|
||||
}
|
||||
if (!(userDeleted || orgDeleted)) {
|
||||
throw new BizException("삭제된 사용자 또는 법인이 포함된 요청만 삭제할 수 있습니다.");
|
||||
}
|
||||
|
||||
entityManager.createNativeQuery("DELETE FROM PTL_APPROVER WHERE APPROVAL_ID = :id")
|
||||
.setParameter("id", id)
|
||||
.executeUpdate();
|
||||
int affected = entityManager.createNativeQuery("DELETE FROM PTL_APPROVAL WHERE ID = :id")
|
||||
.setParameter("id", id)
|
||||
.executeUpdate();
|
||||
if (affected == 0) {
|
||||
throw new BizException("승인 정보를 찾을 수 없습니다. ID: " + id);
|
||||
}
|
||||
logger.info("Approval {} deleted (deleted target user/org present)", id);
|
||||
}
|
||||
|
||||
public void sendEvent(String id, ApprovalEvent event, Map<String, Object> options) {
|
||||
approvalService.findById(id).ifPresent(approval -> {
|
||||
options.put("authorizer", portalApprovalAuthorizer);
|
||||
|
||||
@@ -190,7 +190,14 @@ public class PortalUserManService extends BaseService {
|
||||
}
|
||||
|
||||
PortalUser portalUser = portalUserUIMapper.toEntity(portalUserUI);
|
||||
portalUser.setPasswordHash(kjbSafedbPasswordEncoder.encode("!" + portalUserUI.getLoginId()));
|
||||
|
||||
// 최초 아이디 생성 시 초기 패스워드(loginId + subfix)로 세팅 (비밀번호 초기화와 동일)
|
||||
String subfix = getPasswordInitSubfix();
|
||||
portalUser.setPasswordHash(kjbSafedbPasswordEncoder.encode(portalUserUI.getLoginId() + subfix));
|
||||
|
||||
// 비밀번호 변경일 초기화 (초기 비밀번호 강제 변경 유도)
|
||||
portalUser.setPasswordChangeDate(null);
|
||||
|
||||
portalUser.setLoginFailureCount(0);
|
||||
portalUser.setAccountLockYn("N");
|
||||
portalUser.setEmailAddr(portalUserUI.getLoginId());
|
||||
|
||||
Reference in New Issue
Block a user