UNPKG

@mastra/core

Version:
1 lines • 21.5 kB
{"version":3,"file":"provider-BT2YASPQ.cjs","names":["MastraBase"],"sources":["../../_internals/auth/dist/types/index.js","../../_internals/auth/dist/provider/index.js"],"sourcesContent":["//#region src/types/index.ts\nfunction getRequestHeader(request, name) {\n\tif (request instanceof Request) return request.headers.get(name);\n\treturn request.raw?.headers.get(name) ?? request.headers?.get(name) ?? request.header(name) ?? null;\n}\nfunction getWebRequest(request) {\n\tif (request instanceof Request) return request;\n\treturn request.raw instanceof Request ? request.raw : void 0;\n}\n//#endregion\nexport { getRequestHeader, getWebRequest };\n\n//# sourceMappingURL=index.js.map","import { getRequestHeader } from \"../types/index.js\";\nimport { MastraBase } from \"@internal/core/base\";\n//#region src/provider/index.ts\nvar MastraAuthProvider = class extends MastraBase {\n\tprotected;\n\tpublic;\n\tconstructor(options) {\n\t\tsuper({\n\t\t\tcomponent: \"AUTH\",\n\t\t\tname: options?.name\n\t\t});\n\t\tif (options?.authorizeUser) this.authorizeUser = options.authorizeUser.bind(this);\n\t\tthis.protected = options?.protected;\n\t\tthis.public = options?.public;\n\t\tthis.mapUserToResourceId = options?.mapUserToResourceId;\n\t}\n\tregisterOptions(opts) {\n\t\tif (opts?.authorizeUser) this.authorizeUser = opts.authorizeUser.bind(this);\n\t\tif (opts?.mapUserToResourceId) this.mapUserToResourceId = opts.mapUserToResourceId;\n\t\tif (opts?.protected) this.protected = opts.protected;\n\t\tif (opts?.public) this.public = opts.public;\n\t}\n};\nfunction isSSOProvider(p) {\n\treturn p !== null && typeof p === \"object\" && typeof p.getLoginUrl === \"function\" && typeof p.handleCallback === \"function\";\n}\nfunction isSessionProvider(p) {\n\treturn p !== null && typeof p === \"object\" && typeof p.validateSession === \"function\" && typeof p.createSession === \"function\";\n}\nfunction isUserProvider(p) {\n\treturn p !== null && typeof p === \"object\" && typeof p.getCurrentUser === \"function\";\n}\nfunction isCredentialsProvider(p) {\n\treturn p !== null && typeof p === \"object\" && typeof p.signIn === \"function\";\n}\nfunction isOrganizationsProvider(p) {\n\treturn p !== null && typeof p === \"object\" && typeof p.ensureOrganization === \"function\" && typeof p.isOrganizationAdmin === \"function\";\n}\nfunction isAuthHttpHandler(p) {\n\treturn p !== null && typeof p === \"object\" && typeof p.handleAuthRequest === \"function\";\n}\nfunction hasAuthInit(p) {\n\treturn p !== null && typeof p === \"object\" && typeof p.init === \"function\";\n}\nfunction isObjectLike(value) {\n\treturn typeof value === \"object\" && value !== null || typeof value === \"function\";\n}\nvar CompositeAuth = class extends MastraAuthProvider {\n\tproviders;\n\tauthenticatedProviderByObject = /* @__PURE__ */ new WeakMap();\n\tauthenticatedProviderByPrimitive = /* @__PURE__ */ new Map();\n\tconstructor(providers) {\n\t\tconst combinedPublic = providers.flatMap((provider) => provider.public ?? []);\n\t\tconst combinedProtected = providers.flatMap((provider) => provider.protected ?? []);\n\t\tsuper({\n\t\t\tpublic: combinedPublic,\n\t\t\tprotected: combinedProtected\n\t\t});\n\t\tthis.providers = providers;\n\t\tif (providers.some((provider) => typeof provider.mapUserToResourceId === \"function\")) this.mapUserToResourceId = (user) => this.mapAuthenticatedUserToResourceId(user);\n\t\tif (!providers.some(isSSOProvider)) {\n\t\t\tthis.getLoginUrl = void 0;\n\t\t\tthis.handleCallback = void 0;\n\t\t\tthis.getLoginButtonConfig = void 0;\n\t\t}\n\t\tif (!providers.some(isSessionProvider)) {\n\t\t\tthis.createSession = void 0;\n\t\t\tthis.validateSession = void 0;\n\t\t\tthis.getSessionIdFromRequest = void 0;\n\t\t}\n\t\tif (!providers.some(isUserProvider)) {\n\t\t\tthis.getCurrentUser = void 0;\n\t\t\tthis.getUser = void 0;\n\t\t\tthis.getUsers = void 0;\n\t\t}\n\t\tconst credProvider = providers.find(isCredentialsProvider);\n\t\tif (credProvider) {\n\t\t\tthis.signIn = credProvider.signIn.bind(credProvider);\n\t\t\tif (typeof credProvider.signUp === \"function\") this.signUp = credProvider.signUp.bind(credProvider);\n\t\t\tif (typeof credProvider.requestPasswordReset === \"function\") this.requestPasswordReset = credProvider.requestPasswordReset.bind(credProvider);\n\t\t\tif (typeof credProvider.resetPassword === \"function\") this.resetPassword = credProvider.resetPassword.bind(credProvider);\n\t\t\tthis.isSignUpEnabled = typeof credProvider.isSignUpEnabled === \"function\" ? credProvider.isSignUpEnabled.bind(credProvider) : () => true;\n\t\t} else {\n\t\t\tthis.signIn = void 0;\n\t\t\tthis.signUp = void 0;\n\t\t\tthis.requestPasswordReset = void 0;\n\t\t\tthis.resetPassword = void 0;\n\t\t\tthis.isSignUpEnabled = void 0;\n\t\t}\n\t}\n\tfindProvider(check) {\n\t\treturn this.providers.find(check);\n\t}\n\trememberAuthenticatedProvider(user, provider) {\n\t\tif (isObjectLike(user)) {\n\t\t\tthis.authenticatedProviderByObject.set(user, provider);\n\t\t\treturn;\n\t\t}\n\t\tthis.authenticatedProviderByPrimitive.set(user, provider);\n\t}\n\ttakeAuthenticatedProvider(user) {\n\t\tif (isObjectLike(user)) {\n\t\t\tconst provider = this.authenticatedProviderByObject.get(user);\n\t\t\tthis.authenticatedProviderByObject.delete(user);\n\t\t\treturn provider;\n\t\t}\n\t\tconst primitiveUser = user;\n\t\tconst provider = this.authenticatedProviderByPrimitive.get(primitiveUser);\n\t\tthis.authenticatedProviderByPrimitive.delete(primitiveUser);\n\t\treturn provider;\n\t}\n\tmapAuthenticatedUserToResourceId(user) {\n\t\treturn this.takeAuthenticatedProvider(user)?.mapUserToResourceId?.(user);\n\t}\n\t/**\n\t* True if any provider is MastraCloudAuth (exempt from license requirement).\n\t*/\n\tget isMastraCloudAuth() {\n\t\treturn this.providers.some((p) => \"isMastraCloudAuth\" in p && p.isMastraCloudAuth === true);\n\t}\n\t/**\n\t* True if any provider is SimpleAuth (exempt from license requirement).\n\t*/\n\tget isSimpleAuth() {\n\t\treturn this.providers.some((p) => \"isSimpleAuth\" in p && p.isSimpleAuth === true);\n\t}\n\tasync authenticateToken(token, request) {\n\t\tfor (const provider of this.providers) try {\n\t\t\tconst user = await provider.authenticateToken(token, request);\n\t\t\tif (user) {\n\t\t\t\tthis.rememberAuthenticatedProvider(user, provider);\n\t\t\t\treturn user;\n\t\t\t}\n\t\t} catch {}\n\t\treturn null;\n\t}\n\tasync authorizeUser(user, request) {\n\t\tfor (const provider of this.providers) if (await provider.authorizeUser(user, request)) return true;\n\t\treturn false;\n\t}\n\t/**\n\t* Forward cookie header to SSO provider for PKCE validation.\n\t* Called by auth handler before handleCallback().\n\t*/\n\tsetCallbackCookieHeader(cookieHeader) {\n\t\tconst sso = this.findProvider(isSSOProvider);\n\t\tif (sso && typeof sso.setCallbackCookieHeader === \"function\") sso.setCallbackCookieHeader(cookieHeader);\n\t}\n\tgetLoginUrl(redirectUri, state) {\n\t\tconst sso = this.findProvider(isSSOProvider);\n\t\tif (!sso) throw new Error(\"No SSO provider configured in CompositeAuth\");\n\t\treturn sso.getLoginUrl(redirectUri, state);\n\t}\n\tgetLoginCookies(redirectUri, state) {\n\t\treturn this.findProvider(isSSOProvider)?.getLoginCookies?.(redirectUri, state);\n\t}\n\tasync handleCallback(code, state) {\n\t\tconst sso = this.findProvider(isSSOProvider);\n\t\tif (!sso) throw new Error(\"No SSO provider configured in CompositeAuth\");\n\t\treturn sso.handleCallback(code, state);\n\t}\n\tgetLoginButtonConfig() {\n\t\tconst sso = this.findProvider(isSSOProvider);\n\t\tif (!sso) return {\n\t\t\tprovider: \"unknown\",\n\t\t\ttext: \"Sign in\"\n\t\t};\n\t\treturn sso.getLoginButtonConfig();\n\t}\n\tasync getLogoutUrl(redirectUri, request) {\n\t\tfor (const provider of this.providers) if (isSSOProvider(provider) && provider.getLogoutUrl) try {\n\t\t\tconst url = await provider.getLogoutUrl(redirectUri, request);\n\t\t\tif (url) return url;\n\t\t} catch {}\n\t\treturn null;\n\t}\n\tasync createSession(userId, metadata) {\n\t\tconst session = this.findProvider(isSessionProvider);\n\t\tif (!session) throw new Error(\"No session provider configured in CompositeAuth\");\n\t\treturn session.createSession(userId, metadata);\n\t}\n\tasync validateSession(sessionId) {\n\t\tfor (const provider of this.providers) if (isSessionProvider(provider)) try {\n\t\t\tconst session = await provider.validateSession(sessionId);\n\t\t\tif (session) return session;\n\t\t} catch {}\n\t\treturn null;\n\t}\n\tasync destroySession(sessionId) {\n\t\tconst destroyPromises = [];\n\t\tfor (const provider of this.providers) if (isSessionProvider(provider)) destroyPromises.push(provider.destroySession(sessionId).catch(() => {}));\n\t\tawait Promise.all(destroyPromises);\n\t}\n\tasync refreshSession(sessionId) {\n\t\tfor (const provider of this.providers) if (isSessionProvider(provider)) try {\n\t\t\tconst session = await provider.refreshSession(sessionId);\n\t\t\tif (session) return session;\n\t\t} catch {}\n\t\treturn null;\n\t}\n\tgetSessionIdFromRequest(request) {\n\t\tfor (const provider of this.providers) if (isSessionProvider(provider)) try {\n\t\t\tconst sessionId = provider.getSessionIdFromRequest(request);\n\t\t\tif (sessionId) return sessionId;\n\t\t} catch {}\n\t\treturn null;\n\t}\n\tgetSessionHeaders(session) {\n\t\treturn this.findProvider(isSessionProvider)?.getSessionHeaders(session) ?? {};\n\t}\n\tgetClearSessionHeaders() {\n\t\tconst headers = {};\n\t\tfor (const provider of this.providers) if (isSessionProvider(provider)) try {\n\t\t\tconst providerHeaders = provider.getClearSessionHeaders();\n\t\t\tObject.assign(headers, providerHeaders);\n\t\t} catch {}\n\t\treturn headers;\n\t}\n\tasync getCurrentUser(request) {\n\t\tfor (const provider of this.providers) if (isUserProvider(provider)) try {\n\t\t\tconst user = await provider.getCurrentUser(request);\n\t\t\tif (user) return user;\n\t\t} catch {}\n\t\treturn null;\n\t}\n\tasync getUser(userId) {\n\t\tfor (const provider of this.providers) if (isUserProvider(provider)) try {\n\t\t\tconst user = await provider.getUser(userId);\n\t\t\tif (user) return user;\n\t\t} catch {}\n\t\treturn null;\n\t}\n\tasync getUsers(userIds) {\n\t\treturn Promise.all(userIds.map((userId) => this.getUser(userId)));\n\t}\n};\nconst DEFAULT_HEADERS = [\"Authorization\", \"X-Playground-Access\"];\nvar SimpleAuth = class extends MastraAuthProvider {\n\t/**\n\t* Marker to exempt SimpleAuth from EE license requirement.\n\t* SimpleAuth is for development/testing and should work without a license.\n\t*/\n\tisSimpleAuth = true;\n\ttokens;\n\theaders;\n\tusers;\n\tuserById;\n\tconstructor(options) {\n\t\tsuper(options);\n\t\tthis.tokens = options.tokens;\n\t\tthis.users = Object.values(this.tokens);\n\t\tthis.headers = [...DEFAULT_HEADERS].concat(options.headers || []);\n\t\tthis.userById = new Map(this.users.map((u) => [String(u?.id), u]));\n\t}\n\tasync authenticateToken(token, request) {\n\t\tconst requestTokens = this.getTokensFromHeaders(token, request);\n\t\tfor (const requestToken of requestTokens) {\n\t\t\tconst tokenToUser = this.tokens[requestToken];\n\t\t\tif (tokenToUser) return tokenToUser;\n\t\t}\n\t\treturn this.getUserFromCookie(getRequestHeader(request, \"Cookie\"));\n\t}\n\tasync authorizeUser(user, _request) {\n\t\treturn this.users.includes(user);\n\t}\n\t/** Get current user from request headers or cookie. */\n\tasync getCurrentUser(request) {\n\t\tfor (const headerName of this.headers) {\n\t\t\tconst headerValue = request.headers.get(headerName);\n\t\t\tif (headerValue) {\n\t\t\t\tconst token = this.stripBearerPrefix(headerValue);\n\t\t\t\tconst user = this.tokens[token];\n\t\t\t\tif (user) return user;\n\t\t\t}\n\t\t}\n\t\treturn this.getUserFromCookie(request.headers.get(\"Cookie\"));\n\t}\n\tgetUserFromCookie(cookieHeader) {\n\t\tif (!cookieHeader) return null;\n\t\tconst cookies = cookieHeader.split(\";\").map((c) => c.trim());\n\t\tfor (const cookie of cookies) if (cookie.startsWith(\"mastra-token=\")) {\n\t\t\tconst token = cookie.slice(13);\n\t\t\tconst user = this.tokens[token];\n\t\t\tif (user) return user;\n\t\t}\n\t\treturn null;\n\t}\n\t/** Get user by ID. */\n\tasync getUser(userId) {\n\t\treturn this.userById.get(userId) ?? null;\n\t}\n\tasync getUsers(userIds) {\n\t\treturn userIds.map((userId) => this.userById.get(userId) ?? null);\n\t}\n\t/**\n\t* Sign in with token (passed as password field).\n\t* The email field is ignored - only the token matters.\n\t*/\n\tasync signIn(_email, password, _request) {\n\t\tconst token = password;\n\t\tconst user = this.tokens[token];\n\t\tif (!user) throw new Error(\"Invalid token\");\n\t\treturn {\n\t\t\tuser,\n\t\t\ttoken,\n\t\t\tcookies: [`mastra-token=${token}; Path=/; HttpOnly; SameSite=Lax; Max-Age=86400`]\n\t\t};\n\t}\n\tasync signUp() {\n\t\tthrow new Error(\"Sign up is not supported with SimpleAuth. Use pre-configured tokens.\");\n\t}\n\tisSignUpEnabled() {\n\t\treturn false;\n\t}\n\t/**\n\t* Get headers to clear the session cookie on logout.\n\t* Partial ISessionProvider implementation for logout support.\n\t*/\n\tgetClearSessionHeaders() {\n\t\treturn { \"Set-Cookie\": \"mastra-token=; Path=/; HttpOnly; SameSite=Lax; Max-Age=0\" };\n\t}\n\tstripBearerPrefix(token) {\n\t\treturn token.startsWith(\"Bearer \") ? token.slice(7) : token;\n\t}\n\tgetTokensFromHeaders(token, request) {\n\t\tconst tokens = [token];\n\t\tfor (const headerName of this.headers) {\n\t\t\tconst headerValue = getRequestHeader(request, headerName);\n\t\t\tif (headerValue) tokens.push(this.stripBearerPrefix(headerValue));\n\t\t}\n\t\treturn tokens;\n\t}\n};\n//#endregion\nexport { CompositeAuth, MastraAuthProvider, SimpleAuth, hasAuthInit, isAuthHttpHandler, isCredentialsProvider, isOrganizationsProvider, isSSOProvider, isSessionProvider, isUserProvider };\n\n//# sourceMappingURL=index.js.map"],"mappings":"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"}