Skip to main content
Glama

mcp-google-sheets

authentication.controller.ts4.43 kB
import { ApplicationEventName } from '@activepieces/ee-shared' import { AppSystemProp, networkUtils } from '@activepieces/server-shared' import { ALL_PRINCIPAL_TYPES, assertNotNullOrUndefined, PrincipalType, SignInRequest, SignUpRequest, SwitchPlatformRequest, SwitchProjectRequest, UserIdentityProvider, } from '@activepieces/shared' import { RateLimitOptions } from '@fastify/rate-limit' import { FastifyPluginAsyncTypebox } from '@fastify/type-provider-typebox' import { eventsHooks } from '../helper/application-events' import { system } from '../helper/system/system' import { platformUtils } from '../platform/platform.utils' import { userService } from '../user/user-service' import { authenticationService } from './authentication.service' export const authenticationController: FastifyPluginAsyncTypebox = async ( app, ) => { app.post('/sign-up', SignUpRequestOptions, async (request) => { const platformId = await platformUtils.getPlatformIdForRequest(request) const signUpResponse = await authenticationService(request.log).signUp({ ...request.body, provider: UserIdentityProvider.EMAIL, platformId: platformId ?? null, }) eventsHooks.get(request.log).sendUserEvent({ platformId: signUpResponse.platformId!, userId: signUpResponse.id, projectId: signUpResponse.projectId, ip: networkUtils.extractClientRealIp(request, system.get(AppSystemProp.CLIENT_REAL_IP_HEADER)), }, { action: ApplicationEventName.USER_SIGNED_UP, data: { source: 'credentials', }, }) return signUpResponse }) app.post('/sign-in', SignInRequestOptions, async (request) => { const predefinedPlatformId = await platformUtils.getPlatformIdForRequest(request) const response = await authenticationService(request.log).signInWithPassword({ email: request.body.email, password: request.body.password, predefinedPlatformId, }) const responsePlatformId = response.platformId assertNotNullOrUndefined(responsePlatformId, 'Platform ID is required') eventsHooks.get(request.log).sendUserEvent({ platformId: responsePlatformId, userId: response.id, projectId: response.projectId, ip: networkUtils.extractClientRealIp(request, system.get(AppSystemProp.CLIENT_REAL_IP_HEADER)), }, { action: ApplicationEventName.USER_SIGNED_IN, data: {}, }) return response }) app.post('/switch-platform', SwitchPlatformRequestOptions, async (request) => { const user = await userService.getOneOrFail({ id: request.principal.id }) return authenticationService(request.log).switchPlatform({ identityId: user.identityId, platformId: request.body.platformId, }) }) app.post('/switch-project', SwitchProjectRequestOptions, async (request) => { const user = await userService.getOneOrFail({ id: request.principal.id }) return authenticationService(request.log).switchProject({ identityId: user.identityId, projectId: request.body.projectId, currentPlatformId: request.principal.platform.id, }) }) } const rateLimitOptions: RateLimitOptions = { max: Number.parseInt( system.getOrThrow(AppSystemProp.API_RATE_LIMIT_AUTHN_MAX), 10, ), timeWindow: system.getOrThrow(AppSystemProp.API_RATE_LIMIT_AUTHN_WINDOW), } const SwitchProjectRequestOptions = { config: { allowedPrincipals: [PrincipalType.USER], rateLimit: rateLimitOptions, }, schema: { body: SwitchProjectRequest, }, } const SwitchPlatformRequestOptions = { config: { allowedPrincipals: [PrincipalType.USER], rateLimit: rateLimitOptions, }, schema: { body: SwitchPlatformRequest, }, } const SignUpRequestOptions = { config: { allowedPrincipals: ALL_PRINCIPAL_TYPES, rateLimit: rateLimitOptions, }, schema: { body: SignUpRequest, }, } const SignInRequestOptions = { config: { allowedPrincipals: ALL_PRINCIPAL_TYPES, rateLimit: rateLimitOptions, }, schema: { body: SignInRequest, }, }

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