summaryrefslogtreecommitdiff
path: root/components
diff options
context:
space:
mode:
Diffstat (limited to 'components')
-rw-r--r--components/common/permission-checker.tsx36
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;
+}
+