Skip to main content
Glama
fastify-security.ts2.42 kB
import { Permission, PrincipalType } from '@activepieces/shared' import { AuthorizationType, NoneAuthorization, PlatformAuthorization, ProjectAuthorization, ProjectResource, PublicRoute, RouteKind, UnscopedAuthorization } from './common' type FastifySecurityAuthorization = | PlatformAuthorization | ProjectAuthorization | UnscopedAuthorization | NoneAuthorization type RouteAccessRequest = { kind: RouteKind.AUTHENTICATED authorization: FastifySecurityAuthorization } export type FastifyRouteSecurity = RouteAccessRequest | PublicRoute export const securityAccess = { platformAdminOnly: (allowedPrincipals: readonly (PrincipalType.USER | PrincipalType.ENGINE | PrincipalType.SERVICE)[]) => { return { kind: RouteKind.AUTHENTICATED, authorization: { type: AuthorizationType.PLATFORM, allowedPrincipals, adminOnly: true, }, } as const }, publicPlatform: (allowedPrincipals: readonly (PrincipalType.USER | PrincipalType.ENGINE | PrincipalType.SERVICE)[]) => { return { kind: RouteKind.AUTHENTICATED, authorization: { type: AuthorizationType.PLATFORM, allowedPrincipals, adminOnly: false, }, } as const }, public: () => { return { kind: RouteKind.PUBLIC, } as const }, project: (allowedPrincipals: readonly (PrincipalType.USER | PrincipalType.SERVICE | PrincipalType.ENGINE)[], permission: Permission | undefined, projectResource: ProjectResource) => { return { kind: RouteKind.AUTHENTICATED, authorization: { type: AuthorizationType.PROJECT, allowedPrincipals, permission, projectResource, }, } as const }, unscoped: <T extends readonly PrincipalType[]>(allowedPrincipals: T) => { return { kind: RouteKind.AUTHENTICATED, authorization: { type: AuthorizationType.UNSCOPED, allowedPrincipals, }, } as const }, engine: () => { return securityAccess.unscoped([PrincipalType.ENGINE]) }, worker: () => { return securityAccess.unscoped([PrincipalType.WORKER]) }, }

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/activepieces/activepieces'

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