diff options
| author | joonhoekim <26rote@gmail.com> | 2025-12-01 16:13:43 +0900 |
|---|---|---|
| committer | joonhoekim <26rote@gmail.com> | 2025-12-01 16:13:43 +0900 |
| commit | 41bb0f9f67a85ac8e17d766492f79a2997d3c6e9 (patch) | |
| tree | a2d56ea5b4713fe3a762c234622570cb36729628 /components/common | |
| parent | 13c8b4e48f62c1f437b1a2b10731d092fea2a83f (diff) | |
(김준회) 권한관리: 페이지 조회 권한 확인 처리
Diffstat (limited to 'components/common')
| -rw-r--r-- | components/common/permission-checker.tsx | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/components/common/permission-checker.tsx b/components/common/permission-checker.tsx new file mode 100644 index 00000000..209e0022 --- /dev/null +++ b/components/common/permission-checker.tsx @@ -0,0 +1,36 @@ +"use client"; + +import { useEffect } from "react"; +import { toast } from "sonner"; +import { usePathname } from "next/navigation"; + +interface PermissionCheckerProps { + authorized: boolean; + message?: string; +} + +export function PermissionChecker({ authorized, message }: PermissionCheckerProps) { + const pathname = usePathname(); + + useEffect(() => { + // Only show toast if authorization failed + if (!authorized) { + toast.error("Permission Denied", { + description: message || "You do not have permission to view this page. (Dev Mode: Viewing anyway)", + duration: 5000, + action: { + label: "Close", + onClick: () => toast.dismiss(), + }, + }); + } else { + // Optional: Show success toast only if explicitly needed, + // but usually we don't show toast for success to avoid noise. + // Uncomment for debugging: + toast.success("Authorized", { description: "Access granted.", duration: 1000 }); + } + }, [authorized, message, pathname]); + + return null; +} + |
