사용자 정보 팝오버 추가

This commit is contained in:
hyunho
2026-03-25 13:59:57 +09:00
parent dfbb53065e
commit 7a0bd5424c
3 changed files with 80 additions and 1 deletions

View File

@@ -6,6 +6,7 @@ const loginForm = document.getElementById("login-form");
const loginMessage = document.getElementById("login-message");
const logoutBtn = document.getElementById("logout-btn");
const userBadge = document.getElementById("user-badge");
const userPopover = document.getElementById("user-popover");
const currentViewTitle = document.getElementById("current-view-title");
const navButtons = Array.from(document.querySelectorAll(".header-center [data-view]"));
const organizationFrame = document.getElementById("organization-frame");
@@ -37,6 +38,14 @@ function clearSession() {
sessionStorage.removeItem(sessionKey);
}
function hideUserPopover() {
userPopover?.classList.add("hidden");
}
function toggleUserPopover() {
userPopover?.classList.toggle("hidden");
}
function setActiveView(view) {
const previousView = currentView;
currentView = view in viewLabels ? view : "organization";
@@ -71,8 +80,29 @@ function renderAuth() {
dashboardPanel.classList.toggle("hidden", !authenticated);
if (authenticated) {
const displayName = session.user.display_name || "접속자";
userBadge.innerHTML = `<span class="user-chip-icon">◎</span><span class="user-chip-text"><strong>${displayName}</strong><em>-</em></span>`;
const rank = "-";
userBadge.innerHTML = `<span class="user-chip-icon">◎</span><span class="user-chip-text"><strong>${displayName}</strong><em>${rank}</em></span>`;
userBadge.title = `${displayName} / -`;
if (userPopover) {
userPopover.innerHTML = `
<div class="user-popover-row">
<span class="user-popover-label">이름</span>
<strong>${displayName}</strong>
</div>
<div class="user-popover-row">
<span class="user-popover-label">직급</span>
<span>${rank}</span>
</div>
<div class="user-popover-row">
<span class="user-popover-label">권한</span>
<span>${session.user.role || "-"}</span>
</div>
<div class="user-popover-row">
<span class="user-popover-label">아이디</span>
<span>${session.user.username || "-"}</span>
</div>
`;
}
}
}
@@ -100,15 +130,28 @@ if (loginForm) {
if (logoutBtn) {
logoutBtn.addEventListener("click", () => {
clearSession();
hideUserPopover();
renderAuth();
});
}
if (userBadge) {
userBadge.addEventListener("click", (event) => {
event.stopPropagation();
toggleUserPopover();
});
}
navButtons.forEach((button) => {
button.addEventListener("click", () => {
hideUserPopover();
setActiveView(button.dataset.view || "organization");
});
});
document.addEventListener("click", () => {
hideUserPopover();
});
setActiveView(currentView);
renderAuth();