82 lines
2.5 KiB
Java
82 lines
2.5 KiB
Java
package com.cloudhandson.vpdbackoffice.domain.permission;
|
|
|
|
public record PermissionView(
|
|
long permissionId,
|
|
long roleId,
|
|
String roleName,
|
|
long objectId,
|
|
String objectName,
|
|
String action,
|
|
String permissionEffect,
|
|
String rules,
|
|
String visibleColumns,
|
|
String filterPreview,
|
|
String nullPolicyPreview
|
|
) {
|
|
|
|
public String businessRuleSummary() {
|
|
if (rules == null || rules.isBlank()) {
|
|
return "-";
|
|
}
|
|
return java.util.Arrays.stream(rules.split(","))
|
|
.map(String::trim)
|
|
.filter(value -> !value.isBlank())
|
|
.map(PermissionView::businessRuleLabel)
|
|
.collect(java.util.stream.Collectors.joining(System.lineSeparator() + "AND "));
|
|
}
|
|
|
|
public String storedRuleSummary() {
|
|
return rules == null || rules.isBlank() ? "-" : rules;
|
|
}
|
|
|
|
public String vpdMappingSummary() {
|
|
return filterPreview == null || filterPreview.isBlank() ? "-" : filterPreview;
|
|
}
|
|
|
|
public String columnControlSummary() {
|
|
if (visibleColumns == null || visibleColumns.isBlank()) {
|
|
return "컬럼 원문/마스킹은 컬럼 마스킹에서 관리";
|
|
}
|
|
return "기존 권한별 표시 예외 값: " + visibleColumns
|
|
+ " · 신규 컬럼 제어는 컬럼 마스킹에서 관리";
|
|
}
|
|
|
|
private static String businessRuleLabel(String rawRule) {
|
|
String upper = rawRule.toUpperCase(java.util.Locale.ROOT);
|
|
if ("ALL".equals(upper)) {
|
|
return "전체 행";
|
|
}
|
|
if (upper.contains(" TOKEN_SUBJECT")) {
|
|
return "토큰으로 식별된 이해관계자 본인 행";
|
|
}
|
|
if (upper.contains(" OWN_CONTRACT")) {
|
|
return "담당 설계사 본인 계약";
|
|
}
|
|
if (upper.contains(" CHANNEL_CONTRACT")) {
|
|
return "토큰 사용자의 채널 계약";
|
|
}
|
|
if (upper.contains(" OWN_CUSTOMER")) {
|
|
return "담당 설계사 본인 계약에 연결된 고객/청구/외부보유";
|
|
}
|
|
if (upper.contains(" CHANNEL_CUSTOMER")) {
|
|
return "토큰 사용자 채널 계약에 연결된 고객/청구/외부보유";
|
|
}
|
|
if (upper.contains(" STATIC_SQL ")) {
|
|
return "정적 SQL 조건: " + rawRule.replaceFirst("(?i)^\\s*STATIC_SQL\\s+", "");
|
|
}
|
|
if (upper.startsWith("STATIC_SQL ")) {
|
|
return "정적 SQL 조건: " + rawRule.substring("STATIC_SQL ".length());
|
|
}
|
|
if (upper.contains(" MY_DEPT")) {
|
|
return "내 부서 행";
|
|
}
|
|
if (upper.contains(" SELF")) {
|
|
return "내 사번/소유자 행";
|
|
}
|
|
if (upper.contains(" TAG ")) {
|
|
return "태그 조건: " + rawRule;
|
|
}
|
|
return rawRule;
|
|
}
|
|
}
|