import { IUser } from '../types'; import { hasPaidPlan as hasPaidPlanCheck, canAccessBulkUpload, } from '../utils/permission'; interface AccessControl { hasPaidPlan: boolean; hasFreeTrial: boolean; hasValidAccessWindow: boolean; canAccessAllRoutes: boolean; canSeeBulkUpload: boolean; } export const useAccessControl = (user: IUser | null): AccessControl => { const hasPaidPlan = hasPaidPlanCheck(user); const hasFreeTrial = (user?.trial_days ?? 0) > 0 && !hasPaidPlan; const hasValidAccessWindow = (() => { const until = user?.subscription_access_until as string | undefined; if (!until) return false; const d = new Date(until); return !Number.isNaN(d.getTime()) && d.getTime() >= Date.now(); })(); const canAccessAllRoutes = hasPaidPlan || hasFreeTrial || !!user?.has_active_subscription || !!user?.plan_snapshot || hasValidAccessWindow; const canSeeBulkUpload = canAccessBulkUpload(user); return { hasPaidPlan, hasFreeTrial, hasValidAccessWindow, canAccessAllRoutes, canSeeBulkUpload, }; };