diff --git a/frontend/public/app.js b/frontend/public/app.js index a262f4c..fc86aa7 100755 --- a/frontend/public/app.js +++ b/frontend/public/app.js @@ -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 = `${displayName}-`; + const rank = "-"; + userBadge.innerHTML = `${displayName}${rank}`; userBadge.title = `${displayName} / -`; + if (userPopover) { + userPopover.innerHTML = ` +
+ 이름 + ${displayName} +
+
+ 직급 + ${rank} +
+
+ 권한 + ${session.user.role || "-"} +
+
+ 아이디 + ${session.user.username || "-"} +
+ `; + } } } @@ -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(); diff --git a/frontend/public/index.html b/frontend/public/index.html index 2c1b438..07b37f5 100644 --- a/frontend/public/index.html +++ b/frontend/public/index.html @@ -51,6 +51,7 @@
+