feat: update permissions
This commit is contained in:
@@ -10,6 +10,7 @@ import React, {
|
||||
useState,
|
||||
useEffect,
|
||||
useCallback,
|
||||
useMemo,
|
||||
} from "react";
|
||||
import { useParams, useRouter, usePathname } from "next/navigation";
|
||||
import { workspacesApi, projectsApi, membersApi, authApi } from "@/lib/api";
|
||||
@@ -57,6 +58,10 @@ interface WorkspaceContextType {
|
||||
isAdmin: boolean;
|
||||
// Check if user is admin in a specific workspace
|
||||
isWorkspaceAdmin: (workspaceId: string) => Promise<boolean>;
|
||||
// Analytics permission helpers (memoized values, not functions)
|
||||
hasAnyAnalyticsPermission: boolean;
|
||||
canViewSubscriptions: boolean;
|
||||
canViewAnalytics: boolean;
|
||||
|
||||
// Loading states
|
||||
isLoading: boolean;
|
||||
@@ -182,6 +187,32 @@ export const WorkspaceProvider: React.FC<WorkspaceProviderProps> = ({
|
||||
[permissions, isAdmin]
|
||||
);
|
||||
|
||||
// ============================================================================
|
||||
// Analytics Permission Helpers
|
||||
// ============================================================================
|
||||
|
||||
// Check if user has any analytics permission
|
||||
const hasAnyAnalyticsPermission = useMemo((): boolean => {
|
||||
if (isAdmin) return true;
|
||||
return (
|
||||
hasPermission("analytics_read") ||
|
||||
hasPermission("analytics_without_clicks") ||
|
||||
hasPermission("analytics_own_creatives")
|
||||
);
|
||||
}, [hasPermission, isAdmin]);
|
||||
|
||||
// Check if user can view subscriptions (false if only analytics_without_clicks)
|
||||
const canViewSubscriptions = useMemo((): boolean => {
|
||||
if (isAdmin) return true;
|
||||
return hasPermission("analytics_read");
|
||||
}, [hasPermission, isAdmin]);
|
||||
|
||||
// Check if user can view analytics (any analytics permission)
|
||||
const canViewAnalytics = useMemo((): boolean => {
|
||||
if (isAdmin) return true;
|
||||
return hasAnyAnalyticsPermission;
|
||||
}, [hasAnyAnalyticsPermission, isAdmin]);
|
||||
|
||||
// ============================================================================
|
||||
// Load Workspaces
|
||||
// ============================================================================
|
||||
@@ -519,6 +550,9 @@ export const WorkspaceProvider: React.FC<WorkspaceProviderProps> = ({
|
||||
hasPermission,
|
||||
isAdmin,
|
||||
isWorkspaceAdmin,
|
||||
hasAnyAnalyticsPermission,
|
||||
canViewSubscriptions,
|
||||
canViewAnalytics,
|
||||
|
||||
// Loading states
|
||||
isLoading,
|
||||
|
||||
Reference in New Issue
Block a user