diff --git a/README.md b/README.md
index 66ca662f..c44cfd3e 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
# Baron SSO
-**Baron 통합로그인**은 화이트 라벨링된 가족사의 모든 소프트웨어 Auth를 총괄하는 사용자 인증/인가 허브입니다.
+**Baron 로그인**은 화이트 라벨링된 가족사의 모든 소프트웨어 Auth를 총괄하는 사용자 인증/인가 허브입니다.
* Ory Stack으로 모든 구성요소를 self-hosting 합니다.
* Backend는 Go (Fiber)로 구성된 Ory Stack의 유일한 Command 전송 포인트입니다. 모든 Command는 ClickHouse로 강제 전송되며 Audit Log 시스템을 구성합니다.
@@ -75,7 +75,7 @@ flowchart
### 4. 주요 시나리오 (Core Scenarios)
-1. **Same Browser SSO**: Baron 통합로그인 서비스에 로그인된 상태에서 런처를 통해 타 앱/서비스로 이동 (자동 로그인).
+1. **Same Browser SSO**: Baron 로그인 서비스에 로그인된 상태에서 런처를 통해 타 앱/서비스로 이동 (자동 로그인).
1.1. 단 약관동의(Consent) 이력이 없으면 Consent 단계로 이동
2. **Cross-Device Auth**: 이메일 SMS 등의 수단으로 링크를 전달받고 해당 링크를 사용자가 클릭하면 최초 로그인 요청한 세션이 활성화
2.1 향후 App Push 등 2차 인증 강화수단 검토 필요
diff --git a/adminfront/src/components/layout/AppLayout.tsx b/adminfront/src/components/layout/AppLayout.tsx
index 03f37346..ffe26ab3 100644
--- a/adminfront/src/components/layout/AppLayout.tsx
+++ b/adminfront/src/components/layout/AppLayout.tsx
@@ -1,142 +1,148 @@
import {
- BadgeCheck,
- Building2,
- Key,
- KeyRound,
- LayoutDashboard,
- Moon,
- NotebookTabs,
- ShieldHalf,
- Sun,
- Users,
+ BadgeCheck,
+ Building2,
+ Key,
+ KeyRound,
+ LayoutDashboard,
+ Moon,
+ NotebookTabs,
+ ShieldHalf,
+ Sun,
+ Users,
} from "lucide-react";
import { useEffect, useState } from "react";
import { NavLink, Outlet } from "react-router-dom";
import RoleSwitcher from "./RoleSwitcher";
const navItems = [
- { label: "Overview", to: "/", icon: LayoutDashboard },
- { label: "Tenant Dashboard", to: "/dashboard", icon: ShieldHalf },
- { label: "Tenants", to: "/tenants", icon: Building2 },
- { label: "Users", to: "/users", icon: Users },
- { label: "API Keys (M2M)", to: "/api-keys", icon: Key },
- { label: "Audit Logs", to: "/audit-logs", icon: NotebookTabs },
- { label: "Auth Guard", to: "/auth", icon: KeyRound },
+ { label: "Overview", to: "/", icon: LayoutDashboard },
+ { label: "Tenant Dashboard", to: "/dashboard", icon: ShieldHalf },
+ { label: "Tenants", to: "/tenants", icon: Building2 },
+ { label: "Users", to: "/users", icon: Users },
+ { label: "API Keys (M2M)", to: "/api-keys", icon: Key },
+ { label: "Audit Logs", to: "/audit-logs", icon: NotebookTabs },
+ { label: "Auth Guard", to: "/auth", icon: KeyRound },
];
function AppLayout() {
- const [theme, setTheme] = useState<"light" | "dark">(() => {
- const stored = window.localStorage.getItem("admin_theme");
- return stored === "dark" ? "dark" : "light";
- });
+ const [theme, setTheme] = useState<"light" | "dark">(() => {
+ const stored = window.localStorage.getItem("admin_theme");
+ return stored === "dark" ? "dark" : "light";
+ });
- useEffect(() => {
- const root = document.documentElement;
- root.classList.remove("light", "dark");
- if (theme === "light") {
- root.classList.add("light");
- } else {
- root.classList.add("dark");
- }
- window.localStorage.setItem("admin_theme", theme);
- }, [theme]);
+ useEffect(() => {
+ const root = document.documentElement;
+ root.classList.remove("light", "dark");
+ if (theme === "light") {
+ root.classList.add("light");
+ } else {
+ root.classList.add("dark");
+ }
+ window.localStorage.setItem("admin_theme", theme);
+ }, [theme]);
- const toggleTheme = () => {
- setTheme((prev) => (prev === "light" ? "dark" : "light"));
- };
+ const toggleTheme = () => {
+ setTheme((prev) => (prev === "light" ? "dark" : "light"));
+ };
- return (
-
-