<!doctype html>
<html lang="ko" xmlns:th="http://www.thymeleaf.org">
<head th:replace="~{fragments/layout :: head('조회 연동')}"></head>
<body>
<nav th:replace="~{fragments/layout :: nav}"></nav>
<main class="container py-4">
  <div class="page-title">
    <h1>조회 연동</h1>
    <details class="explanation-details">
      <summary>도움말</summary>
      <p>Bearer Token을 DB 컨텍스트로 변환한 뒤 행 접근 정책(VPD)이 권한체계를 적용합니다. 아래 소스는 등록된 ORDS Handler가 실제로 실행하는 기술 세부 내용입니다. 실행 결과의 SQL_ID 증적과 행 조건 재현은 접근 검증 메뉴에서 확인할 수 있습니다.</p>
    </details>
  </div>

  <div class="alert alert-info">
    사용자별로 적용된 실제 행 조건을 확인하려면 <a href="/probe">접근 검증</a>에서 이 Handler의 보호 객체를 실행하세요. SQL trace를 반환하도록 갱신된 Handler는 같은 ORDS 세션의 <code>CB_AGENT_DOC_VPD_FILTER</code> predicate를 함께 표시합니다.
  </div>

  <div class="alert alert-success" th:if="${message}" th:text="${message}"></div>
  <div class="alert alert-danger" th:if="${errorMessage}" th:text="${errorMessage}"></div>

  <section class="content-band" th:each="handler : ${handlers}">
    <div class="section-heading">
      <h2 th:text="${handler.method() + ' ' + handler.fullPath()}">POST /ords/...</h2>
      <span class="badge text-bg-secondary" th:text="${handler.sourceType()}">plsql</span>
    </div>
    <div class="meta-row">
      <span>Schema: <strong th:text="${handler.schemaName()}">CB_ORDS</strong></span>
      <span>Parsing Schema: <strong th:text="${handler.parsingSchema()}">CB_ORDS</strong></span>
      <span>Module: <strong th:text="${handler.moduleName()}">cb.agent.security</strong></span>
      <span>Template: <strong th:text="${handler.template()}">vpd/documents</strong></span>
    </div>
    <div class="probe-exchange-grid">
      <details class="explanation-details technical-details">
        <summary>Header Bindings 보기</summary>
        <pre th:text="${handler.parameters()} ?: 'No parameters'"></pre>
      </details>
      <section class="probe-exchange">
        <h3>Handler Source</h3>
        <form method="post" action="/ords-handlers/update">
          <input type="hidden" th:name="${_csrf.parameterName}" th:value="${_csrf.token}">
          <input type="hidden" name="handlerId" th:value="${handler.handlerId()}">
          <textarea class="form-control code-editor" name="source" rows="16" spellcheck="false"
                    th:text="${handler.source()}"></textarea>
          <div class="form-actions">
            <button class="btn btn-sm rw-btn-primary" type="submit"
                    th:disabled="${!handler.plsqlEditable()}">
              저장
            </button>
          </div>
        </form>
      </section>
      <details class="explanation-details technical-details span-2">
        <summary>Bearer Token → User Context Package 보기</summary>
        <pre th:text="${handler.packageSource()}"></pre>
      </details>
    </div>
  </section>
</main>
</body>
</html>
