Files
ai_platform/views/admin-users.ejs
dsyoon 9f647cd783 feat(ui): 파비콘을 xavis-logo.png로 통일
- partials/favicon.ejs로 icon·apple-touch-icon 링크
- 전 페이지 head에 include, /favicon.ico는 동일 PNG 제공
- 인라인 403 HTML에도 favicon 링크

Made-with: Cursor
2026-04-05 22:33:36 +09:00

62 lines
2.5 KiB
Plaintext

<!doctype html>
<html lang="ko">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<%- include('partials/favicon') %>
<title>사용자 현황관리 - XAVIS</title>
<link rel="stylesheet" href="/public/styles.css" />
</head>
<body>
<div class="app-shell">
<%- include('partials/nav', { activeMenu: 'admin-users', adminMode: true }) %>
<div class="content-area">
<header class="topbar">
<h1>사용자 현황관리</h1>
<a class="top-action-link" href="/learning">학습센터</a>
</header>
<main class="container">
<section class="panel">
<p class="subtitle" style="margin-bottom: 16px">
OPS 이메일(<strong>@xavis.co.kr</strong>) 매직 링크로 <strong>로그인에 성공한</strong> 사용자 목록입니다. 이메일과 최근 접속일(마지막 로그인 시각)을 표시합니다.
</p>
<% if (typeof dbError !== 'undefined' && dbError) { %>
<p class="admin-error">목록을 불러오지 못했습니다: <%= dbError %></p>
<% } else if (!pgConnected) { %>
<p class="admin-warn">PostgreSQL이 비활성화되어 있어 사용자 목록을 조회할 수 없습니다.</p>
<% } else if (!users || users.length === 0) { %>
<p class="admin-hint">아직 로그인 기록이 없습니다.</p>
<% } else { %>
<div class="table-wrap">
<table class="data-table" aria-label="인증 사용자 목록">
<thead>
<tr>
<th scope="col">이메일</th>
<th scope="col">최근 접속일</th>
</tr>
</thead>
<tbody>
<% users.forEach(function (u) { %>
<tr>
<td><%= u.email %></td>
<td>
<% if (u.lastLoginAt) { %>
<%= new Date(u.lastLoginAt).toLocaleString('ko-KR', { timeZone: 'Asia/Seoul' }) %>
<% } else { %>
<% } %>
</td>
</tr>
<% }); %>
</tbody>
</table>
</div>
<p class="admin-hint" style="margin-top: 12px">총 <%= users.length %>명</p>
<% } %>
</section>
</main>
</div>
</div>
</body>
</html>