diff options
| author | TheSiahxyz <164138827+TheSiahxyz@users.noreply.github.com> | 2025-11-08 18:20:51 +0900 |
|---|---|---|
| committer | TheSiahxyz <164138827+TheSiahxyz@users.noreply.github.com> | 2025-11-08 18:20:51 +0900 |
| commit | 1971a230ac3c9da5121a0d5f8b0cd89626821dee (patch) | |
| tree | dc3056d7b024753d30fc0c101879274e14dbe2cf | |
| parent | 4624de8087752e580b34c8c33ab5d1bdf20b378a (diff) | |
modified recordings/recordings-plain.html, created api/
| -rw-r--r-- | layouts/recordings/recordings-plain.html | 33 | ||||
| -rw-r--r-- | static/api/whoami.php | 11 |
2 files changed, 37 insertions, 7 deletions
diff --git a/layouts/recordings/recordings-plain.html b/layouts/recordings/recordings-plain.html index ad313b1..62d8b24 100644 --- a/layouts/recordings/recordings-plain.html +++ b/layouts/recordings/recordings-plain.html @@ -307,14 +307,33 @@ <script> document.addEventListener("DOMContentLoaded", () => { // 사용자별 제한된 폴더 필터링 (si 사용자만 leak, hidden 볼 수 있음) - // nginx에서 X-Auth-User 헤더로 사용자명 전달 필요 - const checkUserAccess = () => { - // 헤더에서 사용자 정보 읽기 (서버에서 헤더를 meta 태그로 전달하거나 직접 확인) - // 또는 쿠키/로컬스토리지에서 확인 + const checkUserAccess = async () => { const restrictedFolders = document.querySelectorAll('li.folder-section[data-restricted="true"]'); - const isSiUser = document.cookie.includes('user=si') || - localStorage.getItem('authUser') === 'si' || - document.querySelector('meta[name="auth-user"]')?.content === 'si'; + + // 방법 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'; + + 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 실패 시 쿠키만 확인 + } + } if (!isSiUser) { restrictedFolders.forEach(folder => { diff --git a/static/api/whoami.php b/static/api/whoami.php new file mode 100644 index 0000000..f32cd2c --- /dev/null +++ b/static/api/whoami.php @@ -0,0 +1,11 @@ +<?php +// Return current authenticated user from nginx +header('Content-Type: application/json'); +header('Access-Control-Allow-Origin: *'); +header('Access-Control-Allow-Credentials: true'); + +// nginx에서 전달된 사용자 정보 읽기 (X-Auth-User 헤더 또는 REMOTE_USER) +$user = $_SERVER['HTTP_X_AUTH_USER'] ?? $_SERVER['REMOTE_USER'] ?? ''; + +echo json_encode(['user' => $user]); +?> |
