diff --git a/devfront/src/components/layout/AppLayout.tsx b/devfront/src/components/layout/AppLayout.tsx index e71b625f..e0a1d7bb 100644 --- a/devfront/src/components/layout/AppLayout.tsx +++ b/devfront/src/components/layout/AppLayout.tsx @@ -1,7 +1,7 @@ import { BadgeCheck, LogOut, Moon, ShieldHalf, Sun } from "lucide-react"; import { useEffect, useState } from "react"; import { useAuth } from "react-oidc-context"; -import { NavLink, Outlet } from "react-router-dom"; +import { NavLink, Outlet, useNavigate } from "react-router-dom"; import { t } from "../../lib/i18n"; import LanguageSelector from "../common/LanguageSelector"; import { Toaster } from "../ui/toaster"; @@ -16,11 +16,20 @@ const navItems = [ ]; function AppLayout() { + const auth = useAuth(); + const navigate = useNavigate(); const [theme, setTheme] = useState<"light" | "dark">(() => { const stored = window.localStorage.getItem("admin_theme"); return stored === "dark" ? "dark" : "light"; }); + const handleLogout = () => { + if (window.confirm(t("msg.dev.logout_confirm", "로그아웃 하시겠습니까?"))) { + auth.removeUser(); + navigate("/login"); + } + }; + useEffect(() => { const root = document.documentElement; root.classList.remove("light", "dark"); @@ -38,60 +47,73 @@ function AppLayout() { return (
-