Skip to main content
Glama
accessValidation.ts1.86 kB
import type { SessionAPI } from '@intlayer/backend'; import type { ReactNode } from 'react'; type AccessRule = | 'public' | 'authenticated' | 'admin' | 'not-authenticated' | 'organization-required' | 'project-required'; export const accessValidation = ( accessRule: AccessRule | AccessRule[], session: SessionAPI | null, redirectionFunction: (redirectionRoute: string) => void, redirectionRoute: string, isEnabled?: boolean ) => { const accessRuleArray: AccessRule[] = Array.isArray(accessRule) ? accessRule : [accessRule]; if (isEnabled === false) { return; } if ( !session?.user && (accessRuleArray?.includes('authenticated') || accessRuleArray?.includes('admin')) ) { redirectionFunction(redirectionRoute); } if (session?.user && accessRuleArray?.includes('not-authenticated')) { redirectionFunction(redirectionRoute); } if ( session?.user && accessRuleArray?.includes('admin') && (session.user?.role !== 'admin' || !session?.roles?.includes('admin')) ) { redirectionFunction(redirectionRoute); } if ( !session?.organization && accessRuleArray?.includes('organization-required') ) { redirectionFunction(redirectionRoute); } if (!session?.project && accessRuleArray?.includes('project-required')) { redirectionFunction(redirectionRoute); } }; export type AuthenticationBarrierProps = { children?: ReactNode; accessRule: AccessRule | AccessRule[]; redirectionRoute?: string; session?: SessionAPI | null; sessionToken?: string; /** * Function to replace for a nextjs redirection * * Example: * ```js * import { redirect } from 'next/navigation'; * ... * redirectionMethod={(url) => redirect(url)} * ``` */ redirectionFunction: (redirectionRoute: string) => void; isEnabled?: boolean; };

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/aymericzip/intlayer'

If you have feedback or need assistance with the MCP directory API, please join our Discord server