PTL_USER SafeDB 암호화 적용 / 포탈 사용자 마스킹 처리 해제
Update Hibernate configuration and enhance user management features - Added Hibernate type tracing for improved debugging. - Introduced new error messages for SafeDB operations in LocaleMessage properties. - Updated portal user management to default to unmasked state. - Refactored selectDetail method to handle masking option.
This commit is contained in:
@@ -93,6 +93,7 @@
|
|||||||
<prop key="hibernate.hbm2ddl.auto">none</prop>
|
<prop key="hibernate.hbm2ddl.auto">none</prop>
|
||||||
<prop key="hibernate.format_sql">true</prop>
|
<prop key="hibernate.format_sql">true</prop>
|
||||||
<prop key="hibernate.show_sql">true</prop>
|
<prop key="hibernate.show_sql">true</prop>
|
||||||
|
<prop key="hibernate.type">trace</prop>
|
||||||
<prop key="hibernate.dialect">${hibernate.dialect:org.hibernate.dialect.Oracle12cDialect}
|
<prop key="hibernate.dialect">${hibernate.dialect:org.hibernate.dialect.Oracle12cDialect}
|
||||||
</prop>
|
</prop>
|
||||||
<prop key="hibernate.jdbc.batch_size">100</prop>
|
<prop key="hibernate.jdbc.batch_size">100</prop>
|
||||||
|
|||||||
@@ -58,6 +58,8 @@
|
|||||||
.setFormat(nameOptionFormat).rendering();
|
.setFormat(nameOptionFormat).rendering();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
setSearchable('searchOrgId');
|
||||||
|
|
||||||
putSelectFromParam();
|
putSelectFromParam();
|
||||||
select_approvalStatus = ": ;" + getGridSelectText("CODE", "NAME", json.approvalStatusRows);
|
select_approvalStatus = ": ;" + getGridSelectText("CODE", "NAME", json.approvalStatusRows);
|
||||||
select_userStatus = ": ;" + getGridSelectText("CODE", "NAME", json.userStatusRows);
|
select_userStatus = ": ;" + getGridSelectText("CODE", "NAME", json.userStatusRows);
|
||||||
@@ -86,7 +88,7 @@
|
|||||||
'<%= localeMessage.getString("portalUser.orgName") %>',
|
'<%= localeMessage.getString("portalUser.orgName") %>',
|
||||||
'<%= localeMessage.getString("portalUser.name") %>',
|
'<%= localeMessage.getString("portalUser.name") %>',
|
||||||
'<%= localeMessage.getString("portalUser.userId") %>',
|
'<%= localeMessage.getString("portalUser.userId") %>',
|
||||||
'<%= localeMessage.getString("portalUser.mobile") %>',
|
<%--'<%= localeMessage.getString("portalUser.mobile") %>',--%>
|
||||||
'<%= localeMessage.getString("portalUser.roleName") %>',
|
'<%= localeMessage.getString("portalUser.roleName") %>',
|
||||||
'<%= localeMessage.getString("portalUser.userStatus") %>',
|
'<%= localeMessage.getString("portalUser.userStatus") %>',
|
||||||
'<%= localeMessage.getString("portalUser.createOn") %>',
|
'<%= localeMessage.getString("portalUser.createOn") %>',
|
||||||
@@ -98,7 +100,7 @@
|
|||||||
{name: 'portalOrgUIs.orgName', align: 'center', width: "120"},
|
{name: 'portalOrgUIs.orgName', align: 'center', width: "120"},
|
||||||
{name: 'userName', align: 'center', width: "80" },
|
{name: 'userName', align: 'center', width: "80" },
|
||||||
{name: 'loginId', align: 'center', width: "150" },
|
{name: 'loginId', align: 'center', width: "150" },
|
||||||
{name: 'mobileNumber', align: 'center', width: "100" },
|
// {name: 'mobileNumber', align: 'center', width: "100" },
|
||||||
{name: 'roleCodeDescription', align: 'center', width: "80"},
|
{name: 'roleCodeDescription', align: 'center', width: "80"},
|
||||||
{name: 'userStatusDescription', align: 'center', width: "50"},
|
{name: 'userStatusDescription', align: 'center', width: "50"},
|
||||||
{name: 'createdDate', align: 'center', width: "100", formatter: timeStampFormat},
|
{name: 'createdDate', align: 'center', width: "100", formatter: timeStampFormat},
|
||||||
@@ -232,7 +234,9 @@
|
|||||||
<th style="width:10%; min-width:100px;"><%= localeMessage.getString("portalUser.name") %>
|
<th style="width:10%; min-width:100px;"><%= localeMessage.getString("portalUser.name") %>
|
||||||
</th>
|
</th>
|
||||||
<td><input type="text" name="searchUserName"></td>
|
<td><input type="text" name="searchUserName"></td>
|
||||||
<th style="width:10%; min-width:100px;"><%= localeMessage.getString("portalUser.userId") %>
|
|
||||||
|
<th style="width:10%; min-width:100px;">
|
||||||
|
<%= localeMessage.getString("portalUser.userId") %>
|
||||||
</th>
|
</th>
|
||||||
<td><input type="text" name="searchUserId" value="${param.searchUserId}"></td>
|
<td><input type="text" name="searchUserId" value="${param.searchUserId}"></td>
|
||||||
<th style="width:10%; min-width:100px;"><%= localeMessage.getString("portalUser.mobileNumber") %>
|
<th style="width:10%; min-width:100px;"><%= localeMessage.getString("portalUser.mobileNumber") %>
|
||||||
|
|||||||
@@ -183,6 +183,8 @@
|
|||||||
$('#orgInfoSection').hide();
|
$('#orgInfoSection').hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 25.09.23 - 마스킹 해제 상태를 기본으로 적용 / Rinjae
|
||||||
|
updateButtonStates($("#userStatus").val(), true);
|
||||||
},
|
},
|
||||||
error: function (e) {
|
error: function (e) {
|
||||||
alert(e.responseText);
|
alert(e.responseText);
|
||||||
@@ -530,9 +532,11 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="content_middle">
|
<div class="content_middle">
|
||||||
<div class="search_wrap">
|
<div class="search_wrap">
|
||||||
<button type="button" class="cssbtn" id="btn_unmask" level="W" status="DETAIL">
|
<!-- 2025.09.23 - 마스킹 해제 상태를 기본으로 적용 / Rinjae -->
|
||||||
|
<%--<button type="button" class="cssbtn" id="btn_unmask" level="W" status="DETAIL">
|
||||||
<i class="material-icons">lock_open</i> 마스킹해제
|
<i class="material-icons">lock_open</i> 마스킹해제
|
||||||
</button>
|
</button>--%>
|
||||||
|
|
||||||
<button type="button" class="cssbtn" id="btn_modify" level="W" status="DETAIL,NEW">
|
<button type="button" class="cssbtn" id="btn_modify" level="W" status="DETAIL,NEW">
|
||||||
<i class="material-icons">save</i> <%= localeMessage.getString("button.modify") %>
|
<i class="material-icons">save</i> <%= localeMessage.getString("button.modify") %>
|
||||||
</button>
|
</button>
|
||||||
|
|||||||
+1
@@ -11,6 +11,7 @@ public class PortalUserUISearch {
|
|||||||
private String searchUserId;
|
private String searchUserId;
|
||||||
private String searchUserName;
|
private String searchUserName;
|
||||||
private String searchOrgId;
|
private String searchOrgId;
|
||||||
|
private String searchOrgName;
|
||||||
private String searchEmailAddr;
|
private String searchEmailAddr;
|
||||||
private String searchMobileNumber;
|
private String searchMobileNumber;
|
||||||
private String searchRoleCode;
|
private String searchRoleCode;
|
||||||
|
|||||||
@@ -47,12 +47,13 @@ public class PortalUserManController extends BaseAnnotationController {
|
|||||||
return ResponseEntity.ok(new GridResponse<>(page));
|
return ResponseEntity.ok(new GridResponse<>(page));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 2025.09.23 : 마스킹 해제를 기본상태로 변경 / Rinjae
|
||||||
/* 마스킹 처리된 값
|
/* 마스킹 처리된 값
|
||||||
* 수정버튼 비활성화. -> "마스킹해제" 버튼 클릭후 언마스크
|
* 수정버튼 비활성화. -> "마스킹해제" 버튼 클릭후 언마스크
|
||||||
* */
|
* */
|
||||||
@PostMapping(value = "/onl/apim/portaluser/portalUserMan.json", params = "cmd=DETAIL")
|
@PostMapping(value = "/onl/apim/portaluser/portalUserMan.json", params = "cmd=DETAIL")
|
||||||
public ResponseEntity<PortalUserUI> selectDetail(String id) {
|
public ResponseEntity<PortalUserUI> selectDetail(String id) {
|
||||||
PortalUserUI portalUserUI = portalUserManService.selectDetail(id);
|
PortalUserUI portalUserUI = portalUserManService.selectDetail(id, false);
|
||||||
return ResponseEntity.ok(portalUserUI);
|
return ResponseEntity.ok(portalUserUI);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -61,7 +62,7 @@ public class PortalUserManController extends BaseAnnotationController {
|
|||||||
if (StringUtils.isBlank(reason)) {
|
if (StringUtils.isBlank(reason)) {
|
||||||
throw new BizException("마스킹 해제 사유를 입력해 주세요.");
|
throw new BizException("마스킹 해제 사유를 입력해 주세요.");
|
||||||
}
|
}
|
||||||
PortalUserUI portalUserUI = portalUserManService.selectDetailUnmask(id);
|
PortalUserUI portalUserUI = portalUserManService.selectDetail(id, false);
|
||||||
return ResponseEntity.ok(portalUserUI);
|
return ResponseEntity.ok(portalUserUI);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ import com.eactive.eai.rms.onl.apim.masking.MaskingUtils;
|
|||||||
import com.eactive.eai.rms.onl.apim.portalorg.PortalOrgManService;
|
import com.eactive.eai.rms.onl.apim.portalorg.PortalOrgManService;
|
||||||
import com.eactive.eai.rms.onl.common.exception.BizException;
|
import com.eactive.eai.rms.onl.common.exception.BizException;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.data.domain.Page;
|
import org.springframework.data.domain.Page;
|
||||||
import org.springframework.data.domain.Pageable;
|
import org.springframework.data.domain.Pageable;
|
||||||
@@ -31,6 +32,7 @@ import java.util.List;
|
|||||||
@Service
|
@Service
|
||||||
@Transactional(transactionManager = "transactionManagerForEMS")
|
@Transactional(transactionManager = "transactionManagerForEMS")
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
|
@Slf4j
|
||||||
public class PortalUserManService extends BaseService {
|
public class PortalUserManService extends BaseService {
|
||||||
|
|
||||||
private final PortalUserService portalUserService;
|
private final PortalUserService portalUserService;
|
||||||
@@ -45,7 +47,8 @@ public class PortalUserManService extends BaseService {
|
|||||||
public Page<PortalUserUI> selectList(Pageable pageable, PortalUserUISearch portalUserUISearch) {
|
public Page<PortalUserUI> selectList(Pageable pageable, PortalUserUISearch portalUserUISearch) {
|
||||||
Page<PortalUser> portalUser = portalUserService.findAll(pageable, portalUserUISearch);
|
Page<PortalUser> portalUser = portalUserService.findAll(pageable, portalUserUISearch);
|
||||||
return portalUser.map(entity -> {
|
return portalUser.map(entity -> {
|
||||||
PortalUserUI ui = convertToUIWithMaskOption(entity, true);
|
PortalUserUI ui = convertToUIWithMaskOption(entity, false);
|
||||||
|
|
||||||
if (entity.getPortalOrg() != null) {
|
if (entity.getPortalOrg() != null) {
|
||||||
setPortalOrgUI(entity, ui);
|
setPortalOrgUI(entity, ui);
|
||||||
}
|
}
|
||||||
@@ -53,9 +56,10 @@ public class PortalUserManService extends BaseService {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public PortalUserUI selectDetail(String id) {
|
public PortalUserUI selectDetail(String id, boolean isMasked) {
|
||||||
PortalUser portalUser = portalUserService.getById(id);
|
PortalUser portalUser = portalUserService.getById(id);
|
||||||
PortalUserUI portalUserUI = convertToUIWithMaskOption(portalUser, true);
|
PortalUserUI portalUserUI = convertToUIWithMaskOption(portalUser, isMasked);
|
||||||
|
|
||||||
if (portalUser.getPortalOrg() != null) {
|
if (portalUser.getPortalOrg() != null) {
|
||||||
setPortalOrgUI(portalUser, portalUserUI);
|
setPortalOrgUI(portalUser, portalUserUI);
|
||||||
}
|
}
|
||||||
@@ -63,12 +67,7 @@ public class PortalUserManService extends BaseService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public PortalUserUI selectDetailUnmask(String id) {
|
public PortalUserUI selectDetailUnmask(String id) {
|
||||||
PortalUser portalUser = portalUserService.getById(id);
|
return selectDetail(id, false);
|
||||||
PortalUserUI portalUserUI = convertToUIWithMaskOption(portalUser, false);
|
|
||||||
if (portalUser.getPortalOrg() != null) {
|
|
||||||
setPortalOrgUI(portalUser, portalUserUI);
|
|
||||||
}
|
|
||||||
return portalUserUI;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setPortalOrgUI(PortalUser portalUser, PortalUserUI portalUserUI) {
|
private void setPortalOrgUI(PortalUser portalUser, PortalUserUI portalUserUI) {
|
||||||
|
|||||||
@@ -2596,4 +2596,8 @@ auditLogMan.parameters = Parameters
|
|||||||
auditLogMan.remoteAddress = Remote Address
|
auditLogMan.remoteAddress = Remote Address
|
||||||
auditLogMan.systemCode = System Code
|
auditLogMan.systemCode = System Code
|
||||||
auditLogMan.title = Search Audit Log
|
auditLogMan.title = Search Audit Log
|
||||||
auditLogMan.userId = User ID
|
auditLogMan.userId = User ID
|
||||||
|
|
||||||
|
|
||||||
|
safeDB.decryptError = SafeDB Decrypt Error
|
||||||
|
safeDB.encryptError = SafeDB Encrypt Error
|
||||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user