diff --git a/WebContent/jsp/onl/apim/portaluser/portalUserMan.jsp b/WebContent/jsp/onl/apim/portaluser/portalUserMan.jsp
index ad1005e..6d828a3 100644
--- a/WebContent/jsp/onl/apim/portaluser/portalUserMan.jsp
+++ b/WebContent/jsp/onl/apim/portaluser/portalUserMan.jsp
@@ -398,15 +398,16 @@
|
- <%= localeMessage.getString("portalUser.userId") %>
+ <%= localeMessage.getString("portalUser.userId") %>(*)
|
|
- <%= localeMessage.getString("portalUser.mobileNumber") %>
+ | <%= localeMessage.getString("portalUser.mobileNumber") %>(*)
|
|
+ (*) 암호화 항목 · 부분검색 불가(전체 일치)
diff --git a/src/main/java/com/eactive/eai/rms/data/entity/onl/apim/portaluser/PortalUserService.java b/src/main/java/com/eactive/eai/rms/data/entity/onl/apim/portaluser/PortalUserService.java
index 1566095..64ebf1d 100644
--- a/src/main/java/com/eactive/eai/rms/data/entity/onl/apim/portaluser/PortalUserService.java
+++ b/src/main/java/com/eactive/eai/rms/data/entity/onl/apim/portaluser/PortalUserService.java
@@ -38,7 +38,22 @@ public class PortalUserService extends AbstractEMSDataSerivce= 0) {
+ String plusRestored = searchUserId.replace(' ', '+');
+ loginIdPredicate.or(qPortalUser.loginId.eq(plusRestored))
+ .or(qPortalUser.emailAddr.eq(plusRestored));
+ }
+ predicate.and(loginIdPredicate);
}
if (StringUtils.isNotBlank(portalUserUISearch.getSearchUserName())) {
@@ -49,7 +64,9 @@ public class PortalUserService extends AbstractEMSDataSerivce {
PortalUserUI ui = convertToUIWithMaskOption(entity, false);
- // 목록의 휴대폰번호는 항상 마스킹 (중복 조회 모드에서만 컬럼이 노출되며 개인정보 보호)
- if (ui != null && StringUtils.isNotBlank(ui.getMobileNumber())) {
- ui.setMobileNumber(MaskingUtils.maskPhoneNumber(ui.getMobileNumber()));
+ // 목록의 개인정보(사용자명/이메일아이디/휴대폰번호)는 항상 마스킹하여 노출 (상세 조회에서만 마스킹 해제)
+ if (ui != null) {
+ if (StringUtils.isNotBlank(ui.getUserName())) {
+ ui.setUserName(MaskingUtils.maskName(ui.getUserName()));
+ }
+ if (StringUtils.isNotBlank(ui.getLoginId())) {
+ ui.setLoginId(MaskingUtils.maskEmailId(ui.getLoginId()));
+ }
+ if (StringUtils.isNotBlank(ui.getMobileNumber())) {
+ ui.setMobileNumber(MaskingUtils.maskPhoneNumber(ui.getMobileNumber()));
+ }
}
if (entity.getPortalOrg() != null) {
@@ -80,7 +88,7 @@ public class PortalUserManService extends BaseService {
/**
* 사용자 별 휴대폰 번호 중복 허용 프로퍼티(Portal/user.mobile.duplicate.allow)를 확인한다.
- * 프로퍼티가 없으면 기본값 'N'(허용안함)으로 생성하며, '허용안함'일 때 중복 휴대폰번호 사용자 수를 함께 반환한다.
+ * 프로퍼티가 없으면 기본값 'false'(허용안함)으로 생성하며, '허용안함'일 때 중복 휴대폰번호 사용자 수를 함께 반환한다.
*
* @return enabled(boolean): 중복 조회 기능 활성 여부, count(long): 중복 휴대폰번호 사용자 수
*/
@@ -88,10 +96,12 @@ public class PortalUserManService extends BaseService {
String allowValue = portalPropertyService.getOrCreateProperty(
PORTAL_PROPERTY_GROUP,
PROP_MOBILE_DUPLICATE_ALLOW,
- "N",
- "사용자 별 휴대폰 번호 중복 허용 여부 (Y:허용, N:허용안함). 허용안함일 때 사용자 관리 목록에 중복 휴대폰번호 사용자 조회 기능을 노출");
+ "false",
+ "사용자 별 휴대폰 번호 중복 허용 여부 (true:허용, false:허용안함). 허용안함일 때 사용자 관리 목록에 중복 휴대폰번호 사용자 조회 기능을 노출");
- boolean checkEnabled = "N".equalsIgnoreCase(allowValue);
+ // 레거시 Y/N 값도 허용으로 함께 인식 (true/Y → 허용, 그 외 → 허용안함)
+ boolean allowed = "true".equalsIgnoreCase(allowValue) || "Y".equalsIgnoreCase(allowValue);
+ boolean checkEnabled = !allowed;
long duplicateUserCount = checkEnabled ? portalUserService.countDuplicateMobileUsers() : 0L;
Map info = new HashMap<>();