ERP-node/frontend/components/layout/AdminButton.tsx

58 lines
1.7 KiB
TypeScript

import { Button } from "@/components/ui/button";
interface AdminButtonProps {
user: any;
}
/**
* 관리자 버튼 컴포넌트
*/
export function AdminButton({ user }: AdminButtonProps) {
// 디버깅용 로그
console.log("=== AdminButton 디버깅 ===");
console.log("user:", user);
console.log("user?.userType:", user?.userType);
console.log("user?.isAdmin:", user?.isAdmin);
console.log("user?.userId:", user?.userId);
// 관리자 권한 확인 로직 개선
const isAdmin = user?.isAdmin || user?.userType === "ADMIN" || user?.userId === "plm_admin";
console.log("최종 관리자 권한 확인:", isAdmin);
// 관리자 권한이 있는 사용자만 Admin 버튼 표시
if (!user || !isAdmin) {
console.log("관리자 권한 없음 - Admin 버튼 숨김");
return null;
}
const handleAdminClick = () => {
console.log("Admin 버튼 클릭 - 새 탭으로 어드민 페이지 열기");
// 토큰 확인
const token = localStorage.getItem("authToken");
if (!token) {
console.log("토큰이 없음 - 로그인 페이지로 이동");
window.open(`${window.location.origin}/login`, "_blank");
return;
}
console.log("토큰 존재 - 어드민 페이지 열기");
// 새 탭으로 관리자 페이지 열기 (localStorage 공유 활용)
const adminUrl = `${window.location.origin}/admin`;
const newWindow = window.open(adminUrl, "_blank");
// 새 창이 차단되었는지 확인
if (!newWindow) {
console.log("팝업이 차단됨 - 같은 창에서 열기");
window.location.href = adminUrl;
}
};
return (
<Button variant="outline" size="sm" className="cursor-pointer" onClick={handleAdminClick}>
Admin
</Button>
);
}