diff options
Diffstat (limited to 'components/common/permission-checker.tsx')
| -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; +} + |
