summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTheSiahxyz <164138827+TheSiahxyz@users.noreply.github.com>2025-11-08 18:26:29 +0900
committerTheSiahxyz <164138827+TheSiahxyz@users.noreply.github.com>2025-11-08 18:26:29 +0900
commit17a64e0cfa6b6353a0e6e54035a5f7cab4f03a8a (patch)
tree1a0ab1784394722d7fbe1a3edf746151b66f16e3
parent1971a230ac3c9da5121a0d5f8b0cd89626821dee (diff)
modified recordings/recordings-plain.html
-rw-r--r--layouts/recordings/recordings-plain.html83
1 files changed, 59 insertions, 24 deletions
diff --git a/layouts/recordings/recordings-plain.html b/layouts/recordings/recordings-plain.html
index 62d8b24..9ba34f8 100644
--- a/layouts/recordings/recordings-plain.html
+++ b/layouts/recordings/recordings-plain.html
@@ -90,7 +90,40 @@
.folder-content li:last-child {
border-bottom: none;
}
+ /* 제한된 폴더는 기본적으로 숨김 (si 사용자만 표시) */
+ li.folder-section[data-restricted="true"] {
+ display: none;
+ }
+ li.folder-section[data-restricted="true"].allowed {
+ display: block;
+ }
</style>
+ <script>
+ // 즉시 실행: 제한된 폴더 숨기기 (FOUC 방지)
+ (function() {
+ // 쿠키에서 사용자 확인
+ const cookies = document.cookie.split(';').reduce((acc, cookie) => {
+ const [key, value] = cookie.trim().split('=');
+ acc[key] = value;
+ return acc;
+ }, {});
+ const isSiUser = cookies.user === 'si' || cookies.authUser === 'si';
+
+ // DOM이 준비되면 즉시 처리
+ if (document.readyState === 'loading') {
+ document.addEventListener('DOMContentLoaded', applyRestrictions);
+ } else {
+ applyRestrictions();
+ }
+
+ function applyRestrictions() {
+ const restrictedFolders = document.querySelectorAll('li.folder-section[data-restricted="true"]');
+ if (isSiUser) {
+ restrictedFolders.forEach(folder => folder.classList.add('allowed'));
+ }
+ }
+ })();
+ </script>
</head>
<body>
<h1>{{ .Title }}</h1>
@@ -306,40 +339,42 @@
<script>
document.addEventListener("DOMContentLoaded", () => {
- // 사용자별 제한된 폴더 필터링 (si 사용자만 leak, hidden 볼 수 있음)
+ // 사용자별 제한된 폴더 필터링 (API로 최종 확인)
const checkUserAccess = async () => {
const restrictedFolders = document.querySelectorAll('li.folder-section[data-restricted="true"]');
- // 방법 1: 쿠키에서 확인
- const cookies = document.cookie.split(';').reduce((acc, cookie) => {
- const [key, value] = cookie.trim().split('=');
- acc[key] = value;
- return acc;
- }, {});
-
- // 방법 2: API로 사용자 정보 확인 (nginx에서 헤더 읽기)
- let isSiUser = cookies.user === 'si' || cookies.authUser === 'si';
+ // 이미 allowed 클래스가 있으면 스킵 (head의 스크립트에서 처리됨)
+ if (restrictedFolders.length > 0 && restrictedFolders[0].classList.contains('allowed')) {
+ return;
+ }
- if (!isSiUser) {
- try {
- // nginx에서 사용자 정보를 반환하는 엔드포인트 호출
- const response = await fetch('/api/whoami', {
- credentials: 'include'
- });
- if (response.ok) {
- const data = await response.json();
- isSiUser = data.user === 'si';
- }
- } catch (e) {
- // API 실패 시 쿠키만 확인
+ // API로 사용자 정보 확인 (nginx에서 헤더 읽기)
+ let isSiUser = false;
+ try {
+ const response = await fetch('/api/whoami', {
+ credentials: 'include'
+ });
+ if (response.ok) {
+ const data = await response.json();
+ isSiUser = data.user === 'si';
}
+ } catch (e) {
+ // API 실패 시 쿠키 확인
+ const cookies = document.cookie.split(';').reduce((acc, cookie) => {
+ const [key, value] = cookie.trim().split('=');
+ acc[key] = value;
+ return acc;
+ }, {});
+ isSiUser = cookies.user === 'si' || cookies.authUser === 'si';
}
- if (!isSiUser) {
+ if (isSiUser) {
+ // si 사용자는 allowed 클래스 추가하여 표시
restrictedFolders.forEach(folder => {
- folder.style.display = 'none';
+ folder.classList.add('allowed');
});
}
+ // si 사용자가 아니면 CSS에서 이미 숨김 처리됨
};
checkUserAccess();