fix #489: add vpd target filtering

This commit is contained in:
devmrko
2026-06-26 10:13:45 +09:00
parent a906dd0128
commit f39cc49021
4 changed files with 274 additions and 3 deletions

View File

@@ -46,6 +46,56 @@
<option value="">관리 대상 스키마</option>
<option th:each="owner : ${formOptions.schemaOwners()}" th:value="${owner}"></option>
</datalist>
<div class="vpd-target-controls" data-vpd-target-controls th:if="${!#lists.isEmpty(vpdTargets)}">
<label>
Object 검색
<input class="form-control form-control-sm" type="search" placeholder="예: BOARD, CUSTOMER"
data-vpd-target-search>
</label>
<label>
Type
<select class="form-select form-select-sm" data-vpd-target-type>
<option value="">전체</option>
<option value="TABLE">TABLE</option>
<option value="VIEW">VIEW</option>
</select>
</label>
<label>
VPD 상태
<select class="form-select form-select-sm" data-vpd-target-vpd>
<option value="">전체</option>
<option value="true">VPD 적용됨</option>
<option value="false">미적용</option>
</select>
</label>
<label>
권한 등록
<select class="form-select form-select-sm" data-vpd-target-protected>
<option value="">전체</option>
<option value="true">등록됨</option>
<option value="false">미등록</option>
</select>
</label>
<label>
표시
<select class="form-select form-select-sm" data-vpd-target-page-size>
<option value="25">25</option>
<option value="50" selected>50</option>
<option value="100">100</option>
<option value="ALL">전체</option>
</select>
</label>
<label class="form-check vpd-support-toggle">
<input class="form-check-input" type="checkbox" data-vpd-target-include-support>
<span class="form-check-label">백오피스 지원 테이블 포함</span>
</label>
<button class="btn btn-sm rw-btn-secondary" type="button" data-vpd-target-reset>초기화</button>
<div class="vpd-target-count" aria-live="polite">
표시 <strong data-vpd-target-visible>0</strong>
/ 일치 <strong data-vpd-target-matched>0</strong>
/ 전체 <span data-vpd-target-total th:text="${#lists.size(vpdTargets)}">0</span>
</div>
</div>
<div class="table-responsive">
<table class="table table-sm align-middle">
<thead>
@@ -59,9 +109,14 @@
<th>검증용 ORDS 경로</th>
</tr>
</thead>
<tbody>
<tbody data-vpd-target-body>
<th:block th:each="target, iter : ${vpdTargets}">
<tr>
<tr data-vpd-target-row
th:attr="data-object=${target.objectDisplayName()},
data-object-name=${target.objectName()},
data-object-type=${target.objectType()},
data-vpd-applied=${target.vpdApplied()},
data-protected-object=${target.protectedObject()}">
<td><code th:text="${target.objectDisplayName()}">ADMIN.TABLE</code></td>
<td th:text="${target.objectType()}">TABLE</td>
<td>
@@ -98,7 +153,7 @@
<span th:unless="${target.ordsPath()}" class="text-muted">검증 경로 미등록</span>
</td>
</tr>
<tr th:if="${target.vpdApplied()}">
<tr th:if="${target.vpdApplied()}" data-vpd-target-detail>
<td colspan="7" class="policy-source-cell">
<div th:id="${'target-filter-detail-' + iter.index}" class="text-muted small">
Filter 이름을 클릭하면 policy/filter source가 표시됩니다.