Skip to main content
Glama

mcp-google-sheets

authentication-session.ts2.87 kB
import dayjs from 'dayjs'; import { jwtDecode } from 'jwt-decode'; import { AuthenticationResponse, isNil, Principal } from '@activepieces/shared'; import { ApStorage } from './ap-browser-storage'; import { authenticationApi } from './authentication-api'; const tokenKey = 'token'; export const authenticationSession = { saveResponse(response: AuthenticationResponse, isEmbedding: boolean) { if (isEmbedding) { ApStorage.setInstanceToSessionStorage(); } ApStorage.getInstance().setItem(tokenKey, response.token); window.dispatchEvent(new Event('storage')); }, isJwtExpired(token: string): boolean { if (!token) { return true; } try { const decoded = jwtDecode(token); if (decoded && decoded.exp && dayjs().isAfter(dayjs.unix(decoded.exp))) { return true; } return false; } catch (e) { return true; } }, getToken(): string | null { return ApStorage.getInstance().getItem(tokenKey) ?? null; }, getProjectId(): string | null { const token = this.getToken(); if (isNil(token)) { return null; } const decodedJwt = getDecodedJwt(token); return decodedJwt.projectId; }, getCurrentUserId(): string | null { const token = this.getToken(); if (isNil(token)) { return null; } const decodedJwt = getDecodedJwt(token); return decodedJwt.id; }, appendProjectRoutePrefix(path: string): string { const projectId = this.getProjectId(); if (isNil(projectId)) { return path; } return `/projects/${projectId}${path.startsWith('/') ? path : `/${path}`}`; }, getPlatformId(): string | null { const token = this.getToken(); if (isNil(token)) { return null; } const decodedJwt = getDecodedJwt(token); return decodedJwt.platform.id; }, async switchToPlatform(platformId: string) { if (authenticationSession.getPlatformId() === platformId) { return; } const result = await authenticationApi.switchPlatform({ platformId, }); ApStorage.getInstance().setItem(tokenKey, result.token); window.location.href = '/'; }, async switchToProject(projectId: string) { if (authenticationSession.getProjectId() === projectId) { return; } const result = await authenticationApi.switchProject({ projectId }); ApStorage.getInstance().setItem(tokenKey, result.token); window.dispatchEvent(new Event('storage')); }, isLoggedIn(): boolean { const token = this.getToken(); if (isNil(token)) { return false; } return !this.isJwtExpired(token); }, clearSession() { ApStorage.getInstance().removeItem(tokenKey); }, logOut() { this.clearSession(); window.location.href = '/sign-in'; }, }; function getDecodedJwt(token: string): Principal { return jwtDecode<Principal>(token); }

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