fix #491: add permission effective preview

This commit is contained in:
devmrko
2026-06-26 13:32:39 +09:00
parent 9f63adeca5
commit cd7860e253
5 changed files with 277 additions and 14 deletions

View File

@@ -59,10 +59,21 @@
<option th:each="role : ${roles}"
th:value="${role.roleId()}"
th:text="${role.roleName()}"
th:attr="data-max-sensitivity=${role.maxSensitivityLevel()}"></option>
th:attr="data-max-sensitivity=${role.maxSensitivityLevel()},
data-direct-users=${#strings.listJoin(directUsersByRole[role.roleId()], '|')},
data-groups=${#strings.listJoin(groupsByRole[role.roleId()], '|')},
data-group-users=${#strings.listJoin(groupUsersByRole[role.roleId()], '|')}"></option>
</select>
</label>
<p class="wizard-hint">선택한 역할의 민감도 허용 상한도 preview에 반영됩니다.</p>
<div class="effective-preview">
<div class="field-block-title">선택 역할 영향도</div>
<dl>
<div><dt>직접 사용자</dt><dd data-preview="directUsers">-</dd></div>
<div><dt>역할 보유 그룹</dt><dd data-preview="roleGroups">-</dd></div>
<div><dt>그룹 상속 사용자</dt><dd data-preview="groupUsers">-</dd></div>
</dl>
</div>
</div>
<div class="wizard-panel" data-wizard-step="2">
@@ -79,7 +90,8 @@
<optgroup label="등록된 보호 객체">
<option th:each="object : ${objects}"
th:value="${'protected:' + object.objectId()}"
th:attr="data-columns=${#strings.listJoin(columnsByObject[object.objectId()], ',')},
th:attr="data-object-display=${object.displayName()},
data-columns=${#strings.listJoin(columnsByObject[object.objectId()], ',')},
data-maskable-columns=${#strings.listJoin(maskableColumnsByObject[object.objectId()], ',')},
data-maskable-labels=${#strings.listJoin(maskableColumnLabelsByObject[object.objectId()], '|')}"
th:text="${object.displayName()}"></option>
@@ -87,11 +99,19 @@
<optgroup label="DB 스키마 객체">
<option th:each="dbObject : ${dbObjects}"
th:value="${'db:' + dbObject.value()}"
th:attr="data-object-display=${dbObject.value()}"
th:text="${dbObject.label()}"></option>
</optgroup>
</select>
</label>
<p class="wizard-hint">DB 스키마 객체를 선택하면 저장 시 보호 객체가 자동 등록됩니다.</p>
<div class="effective-preview">
<div class="field-block-title">선택 객체 컬럼</div>
<dl>
<div><dt>전체 컬럼</dt><dd data-preview="objectColumns">-</dd></div>
<div><dt>마스킹 대상</dt><dd data-preview="maskableColumns">-</dd></div>
</dl>
</div>
</div>
<div class="wizard-panel" data-wizard-step="3">
@@ -170,8 +190,12 @@
<div><dt>역할</dt><dd data-preview="role">-</dd></div>
<div><dt>민감도 상한</dt><dd data-preview="sensitivity">-</dd></div>
<div><dt>보호 객체</dt><dd data-preview="object">-</dd></div>
<div><dt>적용 대상</dt><dd data-preview="affectedPrincipals">-</dd></div>
<div><dt>객체 컬럼</dt><dd data-preview="objectColumnsFinal">-</dd></div>
<div><dt>행 접근</dt><dd data-preview="rowPolicy">-</dd></div>
<div><dt>VPD predicate 예상</dt><dd data-preview="predicatePreview">-</dd></div>
<div><dt>권한별 컬럼 마스킹</dt><dd data-preview="columnPolicy">-</dd></div>
<div><dt>NULL 처리 예상</dt><dd data-preview="nullPolicy">-</dd></div>
</dl>
</div>
</div>