[UX] #577 present VPD as a product console
This commit is contained in:
@@ -3,7 +3,7 @@
|
||||
<head th:fragment="head(title)">
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title th:text="${title}">VPD 백오피스</title>
|
||||
<title th:text="${title == 'VPD 권한 운영' ? title : title + ' · VPD 권한 운영'}">VPD 권한 운영</title>
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
|
||||
<link href="/css/app.css" rel="stylesheet">
|
||||
<script src="https://unpkg.com/htmx.org@2.0.4"></script>
|
||||
@@ -13,44 +13,49 @@
|
||||
<body>
|
||||
<nav th:fragment="nav" class="navbar rw-nav navbar-expand-lg">
|
||||
<div class="container">
|
||||
<a class="navbar-brand" href="/">VPD Backoffice</a>
|
||||
<a class="navbar-brand" href="/">VPD 권한 운영</a>
|
||||
<div class="rw-menu">
|
||||
<div class="rw-menu-group">
|
||||
<button class="rw-menu-trigger" type="button" aria-expanded="false">1. 권한 설계</button>
|
||||
<button class="rw-menu-trigger" type="button" aria-expanded="false">권한 관리</button>
|
||||
<div class="rw-menu-panel">
|
||||
<a class="nav-link" href="/users">사용자</a>
|
||||
<a class="nav-link" href="/groups">그룹</a>
|
||||
<a class="nav-link" href="/roles">역할</a>
|
||||
<a class="nav-link" href="/permissions">데이터 권한 규칙</a>
|
||||
<a class="nav-link" href="/effective-matrix">사용자별 최종 권한</a>
|
||||
<a class="nav-link" href="/permissions">접근 정책</a>
|
||||
<a class="nav-link" href="/effective-matrix">사용자별 접근 확인</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="rw-menu-group">
|
||||
<button class="rw-menu-trigger" type="button" aria-expanded="false">2. 보호·검증</button>
|
||||
<button class="rw-menu-trigger" type="button" aria-expanded="false">데이터 보호</button>
|
||||
<div class="rw-menu-panel">
|
||||
<a class="nav-link" href="/vpd-policies">DB 보호 연결</a>
|
||||
<a class="nav-link" href="/tokens">검증 세션 발급</a>
|
||||
<a class="nav-link" href="/probe">권한 결과 확인</a>
|
||||
<a class="nav-link" href="/vpd-policies">보호 상태</a>
|
||||
<a class="nav-link" href="/objects">조회 대상</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="rw-menu-group">
|
||||
<button class="rw-menu-trigger" type="button" aria-expanded="false">연동 도구</button>
|
||||
<button class="rw-menu-trigger" type="button" aria-expanded="false">접근 검증</button>
|
||||
<div class="rw-menu-panel">
|
||||
<a class="nav-link" href="/objects">ORDS 조회 대상</a>
|
||||
<a class="nav-link" href="/ords-handlers">ORDS 핸들러</a>
|
||||
<a class="nav-link" href="/vector-knowledge">지식 검색 관리</a>
|
||||
<a class="nav-link" href="/mcp-chatbot">Chatbot</a>
|
||||
<a class="nav-link" href="/mcp-reasoning">Reasoning</a>
|
||||
<a class="nav-link" href="/mcp-sse">SSE 서비스</a>
|
||||
<a class="nav-link" href="/mcp-client-demo">MCP Client</a>
|
||||
<a class="nav-link" href="/tokens">검증 세션</a>
|
||||
<a class="nav-link" href="/probe">접근 검증</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="rw-menu-group">
|
||||
<button class="rw-menu-trigger" type="button" aria-expanded="false">운영·고급</button>
|
||||
<button class="rw-menu-trigger" type="button" aria-expanded="false">지식 검색</button>
|
||||
<div class="rw-menu-panel">
|
||||
<a class="nav-link" href="/operation-status">운영 상태</a>
|
||||
<a class="nav-link" href="/vpd-filter-policies">별도 Filter 관리</a>
|
||||
<a class="nav-link" href="/settings">설정</a>
|
||||
<a class="nav-link" href="/vector-knowledge">지식 검색</a>
|
||||
<a class="nav-link" href="/mcp-chatbot">대화형 검색</a>
|
||||
<a class="nav-link" href="/mcp-reasoning">검색 해석</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="rw-menu-group">
|
||||
<button class="rw-menu-trigger" type="button" aria-expanded="false">시스템 관리</button>
|
||||
<div class="rw-menu-panel">
|
||||
<a class="nav-link" href="/ords-handlers">조회 연동</a>
|
||||
<a class="nav-link" href="/mcp-sse">MCP 연동</a>
|
||||
<a class="nav-link" href="/mcp-client-demo">연동 점검</a>
|
||||
<a class="nav-link" href="/operation-status">운영 현황</a>
|
||||
<a class="nav-link" href="/vpd-filter-policies">고급 접근 조건</a>
|
||||
<a class="nav-link" href="/settings">시스템 설정</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -61,30 +66,5 @@
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section th:fragment="architectureStrip(activeLayer)" class="architecture-strip" aria-label="권한 설정부터 결과 확인까지의 흐름">
|
||||
<div class="architecture-step" th:classappend="${activeLayer == 'permission'} ? ' active'">
|
||||
<span class="architecture-kicker">1 · WHO / WHAT</span>
|
||||
<strong>권한 설계</strong>
|
||||
<p>누가 어떤 데이터의 어느 행과 컬럼을 볼지 정합니다.</p>
|
||||
</div>
|
||||
<div class="architecture-arrow">→</div>
|
||||
<div class="architecture-step" th:classappend="${activeLayer == 'vpd'} ? ' active'">
|
||||
<span class="architecture-kicker">2 · ENFORCE</span>
|
||||
<strong>DB 보호 연결</strong>
|
||||
<p>VPD가 저장된 권한체계를 매번 읽어 DB에서 행을 자동 제한합니다.</p>
|
||||
</div>
|
||||
<div class="architecture-arrow">→</div>
|
||||
<div class="architecture-step" th:classappend="${activeLayer == 'token'} ? ' active'">
|
||||
<span class="architecture-kicker">3 · IDENTITY</span>
|
||||
<strong>검증 세션</strong>
|
||||
<p>확인할 사용자를 나타내는 일회성 토큰을 준비합니다.</p>
|
||||
</div>
|
||||
<div class="architecture-arrow">→</div>
|
||||
<div class="architecture-step" th:classappend="${activeLayer == 'ords'} ? ' active'">
|
||||
<span class="architecture-kicker">4 · EVIDENCE</span>
|
||||
<strong>결과 확인</strong>
|
||||
<p>ORDS를 호출해 그 사용자에게 실제로 보이는 데이터만 확인합니다.</p>
|
||||
</div>
|
||||
</section>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
Reference in New Issue
Block a user