diff --git a/src/components/business/Dashboard.tsx b/src/components/business/Dashboard.tsx index 19c5d46..8846153 100644 --- a/src/components/business/Dashboard.tsx +++ b/src/components/business/Dashboard.tsx @@ -1,4 +1,4 @@ -import { useState } from "react"; +import { useState, useEffect } from "react"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { Badge } from "@/components/ui/badge"; import { Button } from "@/components/ui/button"; @@ -60,10 +60,32 @@ import { Checkbox } from "@/components/ui/checkbox"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select"; export function Dashboard() { - // Get user role from localStorage - const userDataStr = localStorage.getItem("user"); - const userData = userDataStr ? JSON.parse(userDataStr) : null; - const userRole = userData?.role || "CEO"; // Default to CEO if not found + // Get user role from localStorage and make it reactive + const [userRole, setUserRole] = useState(() => { + const userDataStr = localStorage.getItem("user"); + const userData = userDataStr ? JSON.parse(userDataStr) : null; + return userData?.role || "CEO"; + }); + + // Listen for storage changes to update role dynamically + useEffect(() => { + const handleStorageChange = () => { + const userDataStr = localStorage.getItem("user"); + const userData = userDataStr ? JSON.parse(userDataStr) : null; + const newRole = userData?.role || "CEO"; + setUserRole(newRole); + }; + + // Listen to custom storage event + window.addEventListener('storage', handleStorageChange); + // Listen to custom role change event + window.addEventListener('roleChanged', handleStorageChange); + + return () => { + window.removeEventListener('storage', handleStorageChange); + window.removeEventListener('roleChanged', handleStorageChange); + }; + }, []); // 시스템관리자인 경우 SystemAdminDashboard 렌더링 if (userRole === "SystemAdmin") {