64 lines
1.9 KiB
TypeScript
64 lines
1.9 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);
|
|
|
|
// 관리자 권한 확인 로직 (3단계 권한 체계)
|
|
const isAdmin =
|
|
user?.isAdmin ||
|
|
user?.userType === "SUPER_ADMIN" ||
|
|
user?.userType === "COMPANY_ADMIN" ||
|
|
user?.userType === "ADMIN" ||
|
|
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>
|
|
);
|
|
}
|