@frontegg/nextjs 9.2.4 → 9.2.5-alpha.15251860846

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # Change Log
2
2
 
3
+ ## [9.2.5](https://github.com/frontegg/frontegg-nextjs/compare/v9.2.4...v9.2.5) (2025-5-26)
4
+
5
+
6
+
3
7
  ## [9.2.4](https://github.com/frontegg/frontegg-nextjs/compare/v9.2.3...v9.2.4) (2025-5-14)
4
8
 
5
9
 
@@ -13,6 +13,7 @@ var _react = _interopRequireWildcard(require("react"));
13
13
  var _reactHooks = require("@frontegg/react-hooks");
14
14
  var _constants = require("../utils/common/constants");
15
15
  var _AppContext = _interopRequireDefault(require("./AppContext"));
16
+ var _helpers = require("./helpers");
16
17
  var _jsxRuntime = require("react/jsx-runtime");
17
18
  var _Fragment;
18
19
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
@@ -37,8 +38,9 @@ function FronteggRouterBase(props) {
37
38
  const routesObj = (0, _extends2.default)({}, _routing.defaultFronteggRoutes, _config.default.authRoutes);
38
39
  if (app.options.hostedLoginBox) {
39
40
  if (pathname === routesObj.loginUrl) {
41
+ const redirectUrl = (0, _helpers.getAfterAuthRedirectUrl)(queryParams);
40
42
  if (queryParams.redirectUrl) {
41
- localStorage.setItem(_constants.FRONTEGG_AFTER_AUTH_REDIRECT_URL, `${window.location.origin}${queryParams.redirectUrl}`);
43
+ localStorage.setItem(_constants.FRONTEGG_AFTER_AUTH_REDIRECT_URL, `${window.location.origin}${redirectUrl}`);
42
44
  }
43
45
  loginWithRedirect();
44
46
  } else if (pathname === routesObj.logoutUrl) {
@@ -1 +1 @@
1
- {"version":3,"file":"FronteggRouterBase.js","names":["_interopRequireDefault","require","Object","defineProperty","exports","value","FronteggRouterBase","_extends2","_config","_routing","_react","_interopRequireWildcard","_reactHooks","_constants","_AppContext","_jsxRuntime","_Fragment","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","props","queryParams","pathArr","isAppDirEnabled","app","useContext","AppContext","loginWithRedirect","useLoginWithRedirect","requestAuthorize","logout","useLoginActions","useEffect","pathname","join","routesObj","defaultFronteggRoutes","config","authRoutes","options","hostedLoginBox","loginUrl","redirectUrl","localStorage","setItem","FRONTEGG_AFTER_AUTH_REDIRECT_URL","window","location","origin","logoutUrl","_routesObj$hostedLogi","startsWith","hostedLoginRedirectUrl","href","authenticatedUrl","isSamlCallback","samlCallbackUrl","isLoginPage","jsx","Fragment"],"sources":["../../../../packages/nextjs/src/common/FronteggRouterBase.tsx"],"sourcesContent":["'use client';\n\nimport config from '../config';\nimport { defaultFronteggRoutes } from '../utils/routing';\nimport { useContext, useEffect } from 'react';\nimport { useLoginActions, useLoginWithRedirect } from '@frontegg/react-hooks';\nimport { FRONTEGG_AFTER_AUTH_REDIRECT_URL } from '../utils/common/constants';\nimport AppContext from './AppContext';\nimport React from 'react';\nimport { ParsedUrlQuery } from 'querystring';\n\ninterface FronteggRouterBaseProps {\n queryParams?: ParsedUrlQuery;\n pathArr: string[];\n isAppDirEnabled?: boolean;\n}\n\nexport function FronteggRouterBase(props: FronteggRouterBaseProps) {\n const { queryParams = {}, pathArr, isAppDirEnabled } = props;\n const app = useContext(AppContext);\n const loginWithRedirect = useLoginWithRedirect();\n const { requestAuthorize, logout } = useLoginActions();\n\n useEffect(() => {\n if (!app) {\n return;\n }\n\n const pathname = `/${pathArr.join('/')}`;\n const routesObj = {\n ...defaultFronteggRoutes,\n ...config.authRoutes,\n };\n\n if (app.options.hostedLoginBox) {\n if (pathname === routesObj.loginUrl) {\n if (queryParams.redirectUrl) {\n localStorage.setItem(FRONTEGG_AFTER_AUTH_REDIRECT_URL, `${window.location.origin}${queryParams.redirectUrl}`);\n }\n loginWithRedirect();\n } else if (pathname === routesObj.logoutUrl) {\n logout();\n }\n } else {\n if (pathname.startsWith(routesObj.hostedLoginRedirectUrl ?? '/oauth/callback')) {\n // if not hosted login, redirect the user to the authenticated url\n window.location.href = routesObj.authenticatedUrl;\n } else {\n const isSamlCallback = pathname === routesObj.samlCallbackUrl;\n const isLoginPage = pathname.startsWith(routesObj.loginUrl);\n if ((isAppDirEnabled && isLoginPage) || isSamlCallback) {\n requestAuthorize(true);\n }\n }\n }\n }, [app, queryParams, pathArr, loginWithRedirect, logout]);\n return <></>;\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"FronteggRouterBase.js","names":["_interopRequireDefault","require","Object","defineProperty","exports","value","FronteggRouterBase","_extends2","_config","_routing","_react","_interopRequireWildcard","_reactHooks","_constants","_AppContext","_helpers","_jsxRuntime","_Fragment","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","props","queryParams","pathArr","isAppDirEnabled","app","useContext","AppContext","loginWithRedirect","useLoginWithRedirect","requestAuthorize","logout","useLoginActions","useEffect","pathname","join","routesObj","defaultFronteggRoutes","config","authRoutes","options","hostedLoginBox","loginUrl","redirectUrl","getAfterAuthRedirectUrl","localStorage","setItem","FRONTEGG_AFTER_AUTH_REDIRECT_URL","window","location","origin","logoutUrl","_routesObj$hostedLogi","startsWith","hostedLoginRedirectUrl","href","authenticatedUrl","isSamlCallback","samlCallbackUrl","isLoginPage","jsx","Fragment"],"sources":["../../../../packages/nextjs/src/common/FronteggRouterBase.tsx"],"sourcesContent":["'use client';\n\nimport config from '../config';\nimport { defaultFronteggRoutes } from '../utils/routing';\nimport { useContext, useEffect } from 'react';\nimport { useLoginActions, useLoginWithRedirect } from '@frontegg/react-hooks';\nimport { FRONTEGG_AFTER_AUTH_REDIRECT_URL } from '../utils/common/constants';\nimport AppContext from './AppContext';\nimport React from 'react';\nimport { ParsedUrlQuery } from 'querystring';\nimport { getAfterAuthRedirectUrl } from './helpers';\n\ninterface FronteggRouterBaseProps {\n queryParams?: ParsedUrlQuery;\n pathArr: string[];\n isAppDirEnabled?: boolean;\n}\n\nexport function FronteggRouterBase(props: FronteggRouterBaseProps) {\n const { queryParams = {}, pathArr, isAppDirEnabled } = props;\n const app = useContext(AppContext);\n const loginWithRedirect = useLoginWithRedirect();\n const { requestAuthorize, logout } = useLoginActions();\n\n useEffect(() => {\n if (!app) {\n return;\n }\n\n const pathname = `/${pathArr.join('/')}`;\n const routesObj = {\n ...defaultFronteggRoutes,\n ...config.authRoutes,\n };\n\n if (app.options.hostedLoginBox) {\n if (pathname === routesObj.loginUrl) {\n const redirectUrl = getAfterAuthRedirectUrl(queryParams);\n\n if (queryParams.redirectUrl) {\n localStorage.setItem(FRONTEGG_AFTER_AUTH_REDIRECT_URL, `${window.location.origin}${redirectUrl}`);\n }\n loginWithRedirect();\n } else if (pathname === routesObj.logoutUrl) {\n logout();\n }\n } else {\n if (pathname.startsWith(routesObj.hostedLoginRedirectUrl ?? '/oauth/callback')) {\n // if not hosted login, redirect the user to the authenticated url\n window.location.href = routesObj.authenticatedUrl;\n } else {\n const isSamlCallback = pathname === routesObj.samlCallbackUrl;\n const isLoginPage = pathname.startsWith(routesObj.loginUrl);\n if ((isAppDirEnabled && isLoginPage) || isSamlCallback) {\n requestAuthorize(true);\n }\n }\n }\n }, [app, queryParams, pathArr, loginWithRedirect, logout]);\n return <></>;\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,3 +1,5 @@
1
1
  import type { FronteggUserTokens } from '../types';
2
+ import { ParsedUrlQuery } from 'querystring';
2
3
  export declare function createSessionFromAccessToken(data: any): Promise<[string, any, string] | []>;
3
4
  export declare function getTokensFromCookie(cookie?: string): Promise<FronteggUserTokens | undefined>;
5
+ export declare const getAfterAuthRedirectUrl: (queryParams: ParsedUrlQuery) => string;
package/common/helpers.js CHANGED
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.createSessionFromAccessToken = createSessionFromAccessToken;
8
+ exports.getAfterAuthRedirectUrl = void 0;
8
9
  exports.getTokensFromCookie = getTokensFromCookie;
9
10
  var _jwt = _interopRequireDefault(require("../utils/jwt"));
10
11
  var _encryption = _interopRequireDefault(require("../utils/encryption"));
@@ -29,4 +30,16 @@ async function getTokensFromCookie(cookie) {
29
30
  }
30
31
  return await _encryption.default.unsealTokens(cookie);
31
32
  }
33
+ const getAfterAuthRedirectUrl = queryParams => {
34
+ const redirectPath = queryParams.redirectUrl;
35
+ const query = new URLSearchParams();
36
+ for (const [key, value] of Object.entries(queryParams)) {
37
+ if (key !== 'redirectUrl' && value !== undefined) {
38
+ query.append(key, String(value));
39
+ }
40
+ }
41
+ const redirectUrl = query.toString() ? `${redirectPath}?${query.toString()}` : redirectPath;
42
+ return `${window.location.origin}${redirectUrl}`;
43
+ };
44
+ exports.getAfterAuthRedirectUrl = getAfterAuthRedirectUrl;
32
45
  //# sourceMappingURL=helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","names":["_jwt","_interopRequireDefault","require","_encryption","createSessionFromAccessToken","data","_data$accessToken","_data$refreshToken","accessToken","access_token","refreshToken","refresh_token","payload","decodedJwt","JwtManager","verify","expiresIn","Math","floor","exp","Date","now","tokens","session","encryption","sealTokens","getTokensFromCookie","cookie","undefined","unsealTokens"],"sources":["../../../../packages/nextjs/src/common/helpers.ts"],"sourcesContent":["import type { FronteggUserTokens } from '../types';\nimport JwtManager from '../utils/jwt';\nimport encryption from '../utils/encryption';\n\nexport async function createSessionFromAccessToken(data: any): Promise<[string, any, string] | []> {\n const accessToken = data.accessToken ?? data.access_token;\n const refreshToken = data.refreshToken ?? data.refresh_token;\n const { payload: decodedJwt }: any = await JwtManager.verify(accessToken);\n decodedJwt.expiresIn = Math.floor((decodedJwt.exp * 1000 - Date.now()) / 1000);\n\n const tokens = { accessToken, refreshToken };\n const session = await encryption.sealTokens(tokens, decodedJwt.exp);\n return [session, decodedJwt, refreshToken];\n}\n\nexport async function getTokensFromCookie(cookie?: string): Promise<FronteggUserTokens | undefined> {\n if (!cookie) {\n return undefined;\n }\n return await encryption.unsealTokens(cookie);\n}\n"],"mappings":";;;;;;;;AACA,IAAAA,IAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,WAAA,GAAAF,sBAAA,CAAAC,OAAA;AAEO,eAAeE,4BAA4BA,CAACC,IAAS,EAAuC;EAAA,IAAAC,iBAAA,EAAAC,kBAAA;EACjG,MAAMC,WAAW,IAAAF,iBAAA,GAAGD,IAAI,CAACG,WAAW,YAAAF,iBAAA,GAAID,IAAI,CAACI,YAAY;EACzD,MAAMC,YAAY,IAAAH,kBAAA,GAAGF,IAAI,CAACK,YAAY,YAAAH,kBAAA,GAAIF,IAAI,CAACM,aAAa;EAC5D,MAAM;IAAEC,OAAO,EAAEC;EAAgB,CAAC,GAAG,MAAMC,YAAU,CAACC,MAAM,CAACP,WAAW,CAAC;EACzEK,UAAU,CAACG,SAAS,GAAGC,IAAI,CAACC,KAAK,CAAC,CAACL,UAAU,CAACM,GAAG,GAAG,IAAI,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC;EAE9E,MAAMC,MAAM,GAAG;IAAEd,WAAW;IAAEE;EAAa,CAAC;EAC5C,MAAMa,OAAO,GAAG,MAAMC,mBAAU,CAACC,UAAU,CAACH,MAAM,EAAET,UAAU,CAACM,GAAG,CAAC;EACnE,OAAO,CAACI,OAAO,EAAEV,UAAU,EAAEH,YAAY,CAAC;AAC5C;AAEO,eAAegB,mBAAmBA,CAACC,MAAe,EAA2C;EAClG,IAAI,CAACA,MAAM,EAAE;IACX,OAAOC,SAAS;EAClB;EACA,OAAO,MAAMJ,mBAAU,CAACK,YAAY,CAACF,MAAM,CAAC;AAC9C","ignoreList":[]}
1
+ {"version":3,"file":"helpers.js","names":["_jwt","_interopRequireDefault","require","_encryption","createSessionFromAccessToken","data","_data$accessToken","_data$refreshToken","accessToken","access_token","refreshToken","refresh_token","payload","decodedJwt","JwtManager","verify","expiresIn","Math","floor","exp","Date","now","tokens","session","encryption","sealTokens","getTokensFromCookie","cookie","undefined","unsealTokens","getAfterAuthRedirectUrl","queryParams","redirectPath","redirectUrl","query","URLSearchParams","key","value","Object","entries","append","String","toString","window","location","origin","exports"],"sources":["../../../../packages/nextjs/src/common/helpers.ts"],"sourcesContent":["import type { FronteggUserTokens } from '../types';\nimport JwtManager from '../utils/jwt';\nimport encryption from '../utils/encryption';\nimport { ParsedUrlQuery } from 'querystring';\n\nexport async function createSessionFromAccessToken(data: any): Promise<[string, any, string] | []> {\n const accessToken = data.accessToken ?? data.access_token;\n const refreshToken = data.refreshToken ?? data.refresh_token;\n const { payload: decodedJwt }: any = await JwtManager.verify(accessToken);\n decodedJwt.expiresIn = Math.floor((decodedJwt.exp * 1000 - Date.now()) / 1000);\n\n const tokens = { accessToken, refreshToken };\n const session = await encryption.sealTokens(tokens, decodedJwt.exp);\n return [session, decodedJwt, refreshToken];\n}\n\nexport async function getTokensFromCookie(cookie?: string): Promise<FronteggUserTokens | undefined> {\n if (!cookie) {\n return undefined;\n }\n return await encryption.unsealTokens(cookie);\n}\n\nexport const getAfterAuthRedirectUrl = (queryParams: ParsedUrlQuery) => {\n const redirectPath = queryParams.redirectUrl;\n const query = new URLSearchParams();\n\n for (const [key, value] of Object.entries(queryParams)) {\n if (key !== 'redirectUrl' && value !== undefined) {\n query.append(key, String(value));\n }\n }\n\n const redirectUrl = query.toString() ? `${redirectPath}?${query.toString()}` : redirectPath;\n\n return `${window.location.origin}${redirectUrl}`;\n};\n"],"mappings":";;;;;;;;;AACA,IAAAA,IAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,WAAA,GAAAF,sBAAA,CAAAC,OAAA;AAGO,eAAeE,4BAA4BA,CAACC,IAAS,EAAuC;EAAA,IAAAC,iBAAA,EAAAC,kBAAA;EACjG,MAAMC,WAAW,IAAAF,iBAAA,GAAGD,IAAI,CAACG,WAAW,YAAAF,iBAAA,GAAID,IAAI,CAACI,YAAY;EACzD,MAAMC,YAAY,IAAAH,kBAAA,GAAGF,IAAI,CAACK,YAAY,YAAAH,kBAAA,GAAIF,IAAI,CAACM,aAAa;EAC5D,MAAM;IAAEC,OAAO,EAAEC;EAAgB,CAAC,GAAG,MAAMC,YAAU,CAACC,MAAM,CAACP,WAAW,CAAC;EACzEK,UAAU,CAACG,SAAS,GAAGC,IAAI,CAACC,KAAK,CAAC,CAACL,UAAU,CAACM,GAAG,GAAG,IAAI,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC;EAE9E,MAAMC,MAAM,GAAG;IAAEd,WAAW;IAAEE;EAAa,CAAC;EAC5C,MAAMa,OAAO,GAAG,MAAMC,mBAAU,CAACC,UAAU,CAACH,MAAM,EAAET,UAAU,CAACM,GAAG,CAAC;EACnE,OAAO,CAACI,OAAO,EAAEV,UAAU,EAAEH,YAAY,CAAC;AAC5C;AAEO,eAAegB,mBAAmBA,CAACC,MAAe,EAA2C;EAClG,IAAI,CAACA,MAAM,EAAE;IACX,OAAOC,SAAS;EAClB;EACA,OAAO,MAAMJ,mBAAU,CAACK,YAAY,CAACF,MAAM,CAAC;AAC9C;AAEO,MAAMG,uBAAuB,GAAIC,WAA2B,IAAK;EACtE,MAAMC,YAAY,GAAGD,WAAW,CAACE,WAAW;EAC5C,MAAMC,KAAK,GAAG,IAAIC,eAAe,CAAC,CAAC;EAEnC,KAAK,MAAM,CAACC,GAAG,EAAEC,KAAK,CAAC,IAAIC,MAAM,CAACC,OAAO,CAACR,WAAW,CAAC,EAAE;IACtD,IAAIK,GAAG,KAAK,aAAa,IAAIC,KAAK,KAAKT,SAAS,EAAE;MAChDM,KAAK,CAACM,MAAM,CAACJ,GAAG,EAAEK,MAAM,CAACJ,KAAK,CAAC,CAAC;IAClC;EACF;EAEA,MAAMJ,WAAW,GAAGC,KAAK,CAACQ,QAAQ,CAAC,CAAC,GAAG,GAAGV,YAAY,IAAIE,KAAK,CAACQ,QAAQ,CAAC,CAAC,EAAE,GAAGV,YAAY;EAE3F,OAAO,GAAGW,MAAM,CAACC,QAAQ,CAACC,MAAM,GAAGZ,WAAW,EAAE;AAClD,CAAC;AAACa,OAAA,CAAAhB,uBAAA,GAAAA,uBAAA","ignoreList":[]}
package/index.js CHANGED
@@ -1,4 +1,4 @@
1
- /** @license Frontegg v9.2.4
1
+ /** @license Frontegg v9.2.5-alpha.15251860846
2
2
  *
3
3
  * This source code is licensed under the MIT license found in the
4
4
  * LICENSE file in the root directory of this source tree.
@@ -10,6 +10,9 @@ var _FronteggProxy = require("./FronteggProxy");
10
10
  var _constants = require("./constants");
11
11
  var _helpers = require("./helpers");
12
12
  var _pages = require("../pages");
13
+ var _config = _interopRequireDefault(require("../config"));
14
+ var _cookies = _interopRequireDefault(require("../utils/cookies"));
15
+ var _common = require("../common");
13
16
  const middlewarePromise = (req, res) => new Promise(async resolve => {
14
17
  var _req$url;
15
18
  const fronteggUrlPath = (0, _helpers.rewritePath)((_req$url = req.url) != null ? _req$url : '/', _constants.fronteggPathRewrite);
@@ -29,6 +32,13 @@ const middlewarePromise = (req, res) => new Promise(async resolve => {
29
32
  headers['authorization'] = 'Bearer ' + session.accessToken;
30
33
  }
31
34
  }
35
+ if (_config.default.isHostedLogin && (0, _helpers.isFronteggLogoutUrl)(req.url || '') && !headers['authorization']) {
36
+ const sessionCookie = _cookies.default.getSessionCookieFromRequest(req);
37
+ const tokens = await (0, _common.getTokensFromCookie)(sessionCookie);
38
+ if (tokens != null && tokens.accessToken) {
39
+ headers['authorization'] = 'Bearer ' + tokens.accessToken;
40
+ }
41
+ }
32
42
  _FronteggProxy.FronteggProxy.web(req, res, (0, _extends2.default)({}, options, {
33
43
  headers
34
44
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"FronteggApiMiddleware.js","names":["_FronteggProxy","require","_constants","_helpers","_pages","middlewarePromise","req","res","Promise","resolve","_req$url","fronteggUrlPath","rewritePath","url","fronteggPathRewrite","rewriteUrl","fronteggSSOPathRewrite","on","options","target","process","env","headers","session","getSession","accessToken","FronteggProxy","web","_extends2","default","FronteggApiMiddleware","exports","cors","_req$headers$host","allowedOrigins","allowedMethods","allowedHeaders","allowCredentials","isInternalRequest","host","_req$headers$origin","origin","combinedHeaders","Array","from","Set","defaultFronteggHeaders","includes","setHeader","removeHeader","join"],"sources":["../../../../packages/nextjs/src/middleware/FronteggApiMiddleware.ts"],"sourcesContent":["import type { NextApiRequest, NextApiResponse } from 'next';\nimport { FronteggProxy } from './FronteggProxy';\nimport { fronteggSSOPathRewrite, fronteggPathRewrite, defaultFronteggHeaders } from './constants';\nimport { isInternalRequest, rewritePath } from './helpers';\nimport { getSession } from '../pages';\nimport { CorsOptions, FronteggApiMiddlewareType } from './types';\n\nconst middlewarePromise = (req: NextApiRequest, res: NextApiResponse) =>\n new Promise<void>(async (resolve) => {\n const fronteggUrlPath = rewritePath(req.url ?? '/', fronteggPathRewrite);\n const rewriteUrl = rewritePath(fronteggUrlPath ?? '/', fronteggSSOPathRewrite);\n req.url = rewriteUrl;\n res.on('close', () => resolve());\n const options = {\n target: process.env['FRONTEGG_BASE_URL'],\n };\n if (process.env['FRONTEGG_TEST_URL'] && req.url == '/frontegg/middleware-test') {\n options.target = process.env['FRONTEGG_TEST_URL'];\n }\n\n const headers: Record<string, string> = {};\n if (process.env['FRONTEGG_SECURE_JWT_ENABLED'] === 'true') {\n const session = await getSession(req);\n if (session?.accessToken) {\n headers['authorization'] = 'Bearer ' + session.accessToken;\n }\n }\n FronteggProxy.web(req, res, {\n ...options,\n headers,\n });\n });\n\n/**\n * Next.js HTTP Proxy Middleware\n * @see https://nextjs.org/docs/api-routes/api-middlewares\n * @param {NextApiRequest} req - NextJS api request passed from api routing\n * @param {NextApiResponse} res - NextJS api response passed from api routing\n */\nconst FronteggApiMiddleware: FronteggApiMiddlewareType = (async (\n req: NextApiRequest,\n res: NextApiResponse\n): Promise<void> => {\n return await middlewarePromise(req, res);\n}) as FronteggApiMiddlewareType;\n\nFronteggApiMiddleware.cors =\n (options: CorsOptions) =>\n async (req: NextApiRequest, res: NextApiResponse): Promise<void> => {\n const {\n allowedOrigins = ['*'],\n allowedMethods = ['GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'OPTIONS'],\n allowedHeaders = ['Content-Type', 'Authorization'],\n allowCredentials = true,\n } = options;\n\n if (isInternalRequest(req.headers.host ?? '')) {\n const origin = req.headers.origin ?? '';\n const combinedHeaders = Array.from(new Set([...defaultFronteggHeaders, ...allowedHeaders]));\n\n if (allowedOrigins.includes(origin)) {\n res.setHeader('Access-Control-Allow-Origin', origin);\n } else {\n res.removeHeader('Access-Control-Allow-Origin');\n }\n\n res.setHeader('Access-Control-Allow-Methods', allowedMethods.join(','));\n res.setHeader('Access-Control-Allow-Headers', combinedHeaders.join(','));\n res.setHeader('Access-Control-Allow-Credentials', allowCredentials ? 'true' : 'false');\n }\n\n return middlewarePromise(req, res);\n };\n\nexport { FronteggApiMiddleware };\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"FronteggApiMiddleware.js","names":["_FronteggProxy","require","_constants","_helpers","_pages","_config","_interopRequireDefault","_cookies","_common","middlewarePromise","req","res","Promise","resolve","_req$url","fronteggUrlPath","rewritePath","url","fronteggPathRewrite","rewriteUrl","fronteggSSOPathRewrite","on","options","target","process","env","headers","session","getSession","accessToken","config","isHostedLogin","isFronteggLogoutUrl","sessionCookie","CookieManager","getSessionCookieFromRequest","tokens","getTokensFromCookie","FronteggProxy","web","_extends2","default","FronteggApiMiddleware","exports","cors","_req$headers$host","allowedOrigins","allowedMethods","allowedHeaders","allowCredentials","isInternalRequest","host","_req$headers$origin","origin","combinedHeaders","Array","from","Set","defaultFronteggHeaders","includes","setHeader","removeHeader","join"],"sources":["../../../../packages/nextjs/src/middleware/FronteggApiMiddleware.ts"],"sourcesContent":["import type { NextApiRequest, NextApiResponse } from 'next';\nimport { FronteggProxy } from './FronteggProxy';\nimport { fronteggSSOPathRewrite, fronteggPathRewrite, defaultFronteggHeaders } from './constants';\nimport { isInternalRequest, rewritePath } from './helpers';\nimport { getSession } from '../pages';\nimport { CorsOptions, FronteggApiMiddlewareType } from './types';\nimport config from '../config';\nimport { isFronteggLogoutUrl } from './helpers';\nimport CookieManager from '../utils/cookies';\nimport { getTokensFromCookie } from '../common';\n\nconst middlewarePromise = (req: NextApiRequest, res: NextApiResponse) =>\n new Promise<void>(async (resolve) => {\n const fronteggUrlPath = rewritePath(req.url ?? '/', fronteggPathRewrite);\n const rewriteUrl = rewritePath(fronteggUrlPath ?? '/', fronteggSSOPathRewrite);\n req.url = rewriteUrl;\n res.on('close', () => resolve());\n const options = {\n target: process.env['FRONTEGG_BASE_URL'],\n };\n if (process.env['FRONTEGG_TEST_URL'] && req.url == '/frontegg/middleware-test') {\n options.target = process.env['FRONTEGG_TEST_URL'];\n }\n const headers: Record<string, string> = {};\n if (process.env['FRONTEGG_SECURE_JWT_ENABLED'] === 'true') {\n const session = await getSession(req);\n if (session?.accessToken) {\n headers['authorization'] = 'Bearer ' + session.accessToken;\n }\n }\n\n if (config.isHostedLogin && isFronteggLogoutUrl(req.url || '') && !headers['authorization']) {\n const sessionCookie = CookieManager.getSessionCookieFromRequest(req);\n const tokens = await getTokensFromCookie(sessionCookie);\n if (tokens?.accessToken) {\n headers['authorization'] = 'Bearer ' + tokens.accessToken;\n }\n }\n FronteggProxy.web(req, res, {\n ...options,\n headers,\n });\n });\n\n/**\n * Next.js HTTP Proxy Middleware\n * @see https://nextjs.org/docs/api-routes/api-middlewares\n * @param {NextApiRequest} req - NextJS api request passed from api routing\n * @param {NextApiResponse} res - NextJS api response passed from api routing\n */\nconst FronteggApiMiddleware: FronteggApiMiddlewareType = (async (\n req: NextApiRequest,\n res: NextApiResponse\n): Promise<void> => {\n return await middlewarePromise(req, res);\n}) as FronteggApiMiddlewareType;\n\nFronteggApiMiddleware.cors =\n (options: CorsOptions) =>\n async (req: NextApiRequest, res: NextApiResponse): Promise<void> => {\n const {\n allowedOrigins = ['*'],\n allowedMethods = ['GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'OPTIONS'],\n allowedHeaders = ['Content-Type', 'Authorization'],\n allowCredentials = true,\n } = options;\n\n if (isInternalRequest(req.headers.host ?? '')) {\n const origin = req.headers.origin ?? '';\n const combinedHeaders = Array.from(new Set([...defaultFronteggHeaders, ...allowedHeaders]));\n\n if (allowedOrigins.includes(origin)) {\n res.setHeader('Access-Control-Allow-Origin', origin);\n } else {\n res.removeHeader('Access-Control-Allow-Origin');\n }\n\n res.setHeader('Access-Control-Allow-Methods', allowedMethods.join(','));\n res.setHeader('Access-Control-Allow-Headers', combinedHeaders.join(','));\n res.setHeader('Access-Control-Allow-Credentials', allowCredentials ? 'true' : 'false');\n }\n\n return middlewarePromise(req, res);\n };\n\nexport { FronteggApiMiddleware };\n"],"mappings":"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","ignoreList":[]}
@@ -10,7 +10,6 @@ var _sdkVersion = _interopRequireDefault(require("../sdkVersion"));
10
10
  var _config = _interopRequireDefault(require("../config"));
11
11
  var _cookies = _interopRequireDefault(require("../utils/cookies"));
12
12
  var _fronteggLogger = _interopRequireDefault(require("../utils/fronteggLogger"));
13
- var _helpers = require("../utils/refreshAccessTokenIfNeeded/helpers");
14
13
  var _utils = require("../api/utils");
15
14
  var _constants = require("./constants");
16
15
  const logger = _fronteggLogger.default.child({
@@ -55,10 +54,6 @@ const ProxyRequestCallback = (proxyReq, req) => {
55
54
  proxyReq.setHeader(_utils.FRONTEGG_HEADERS_VERIFIER_HEADER, (_config$sharedSecret = _config.default.sharedSecret) != null ? _config$sharedSecret : '');
56
55
  proxyReq.setHeader(_utils.FRONTEGG_VENDOR_ID_HEADER, _config.default.clientId);
57
56
  }
58
- if ((0, _helpers.isRefreshTokenRequest)(req.url)) {
59
- logger.debug(`${req.url} | removing Authorization header`);
60
- proxyReq.removeHeader('authorization');
61
- }
62
57
  _constants.headersToRemove.map(header => proxyReq.removeHeader(header));
63
58
  logger.debug(`${req.url} | check if request has body`);
64
59
  if (req.method !== 'GET' && req.body) {
@@ -1 +1 @@
1
- {"version":3,"file":"ProxyRequestCallback.js","names":["_package","_interopRequireDefault","require","_sdkVersion","_config","_cookies","_fronteggLogger","_helpers","_utils","_constants","logger","fronteggLogger","child","tag","ProxyRequestCallback","proxyReq","req","_req$headers$xFronte","_req$headers$xFronte2","info","url","debug","allCookies","CookieManager","parseCookieHeader","fronteggCookiesNames","Object","keys","filter","cookieName","startsWith","config","join","modifiedCookies","forEach","requestCookieName","rewriteCookieByAppId","appId","replace","clientId","setHeader","headers","NextJsPkg","version","sdkVersion","clientIp","getClientIp","shouldForwardIp","_config$sharedSecret","FRONTEGG_FORWARD_IP_HEADER","FRONTEGG_HEADERS_VERIFIER_HEADER","sharedSecret","FRONTEGG_VENDOR_ID_HEADER","isRefreshTokenRequest","removeHeader","headersToRemove","map","header","method","body","bodyData","JSON","stringify","Buffer","byteLength","write","e","error","_default","exports","default"],"sources":["../../../../packages/nextjs/src/middleware/ProxyRequestCallback.ts"],"sourcesContent":["import NextJsPkg from 'next/package.json';\nimport { ProxyReqCallback } from 'http-proxy';\nimport { ClientRequest } from 'http';\nimport { NextApiRequest } from 'next';\nimport sdkVersion from '../sdkVersion';\nimport config from '../config';\nimport CookieManager from '../utils/cookies';\nimport fronteggLogger from '../utils/fronteggLogger';\nimport { isRefreshTokenRequest } from '../utils/refreshAccessTokenIfNeeded/helpers';\nimport {\n FRONTEGG_HEADERS_VERIFIER_HEADER,\n FRONTEGG_FORWARD_IP_HEADER,\n getClientIp,\n FRONTEGG_VENDOR_ID_HEADER,\n} from '../api/utils';\nimport { headersToRemove } from './constants';\n\nconst logger = fronteggLogger.child({ tag: 'FronteggApiMiddleware.ProxyRequestCallback' });\n/**\n * Proxy request callback fired on before each request to Frontegg services,\n * to transport frontegg cookies.\n *\n * @param {ClientRequest} proxyReq - Proxy request to be sent\n * @param {NextApiRequest} req - Next.js incoming request\n */\nconst ProxyRequestCallback: ProxyReqCallback<ClientRequest, NextApiRequest> = (proxyReq, req) => {\n try {\n logger.info(`${req.url} | Going to proxy request`);\n logger.debug(`${req.url} | parsing request cookies`);\n const allCookies = CookieManager.parseCookieHeader(req);\n logger.debug(`${req.url} | found ${allCookies} cookies`);\n const fronteggCookiesNames = Object.keys(allCookies).filter((cookieName) => {\n return cookieName.startsWith('fe_') && !cookieName.startsWith(config.cookieName);\n });\n\n logger.debug(`${req.url} | proxy FronteggCookies (${fronteggCookiesNames.join(', ')})`);\n let modifiedCookies = ``;\n\n fronteggCookiesNames.forEach((requestCookieName: string) => {\n let cookieName = requestCookieName;\n if (config.rewriteCookieByAppId && config.appId) {\n cookieName = requestCookieName\n .replace(config.appId, config.clientId)\n .replace(config.appId.replace(/-/g, ''), config.clientId.replace(/-/g, ''))\n .replace(config.appId.replace('-', ''), config.clientId.replace('-', ''));\n\n logger.debug(`cookieName ${requestCookieName} replaced with appId ${cookieName}`);\n }\n\n logger.debug(`PROXY_ADDING_COOKIE ${cookieName}, ${allCookies[requestCookieName]}`);\n modifiedCookies += `${cookieName}=${allCookies[requestCookieName]}; `;\n });\n proxyReq.setHeader('cookie', modifiedCookies);\n\n proxyReq.setHeader('x-frontegg-framework', req.headers['x-frontegg-framework'] ?? `next@${NextJsPkg.version}`);\n proxyReq.setHeader('x-frontegg-sdk', req.headers['x-frontegg-sdk'] ?? `@frontegg/nextjs@${sdkVersion.version}`);\n proxyReq.setHeader('x-frontegg-middleware', 'true');\n\n const clientIp = getClientIp(req.headers['cf-connecting-ip'] || req.headers['x-forwarded-for']);\n\n if (clientIp && config.shouldForwardIp) {\n proxyReq.setHeader(FRONTEGG_FORWARD_IP_HEADER, clientIp);\n proxyReq.setHeader(FRONTEGG_HEADERS_VERIFIER_HEADER, config.sharedSecret ?? '');\n proxyReq.setHeader(FRONTEGG_VENDOR_ID_HEADER, config.clientId);\n }\n\n if (isRefreshTokenRequest(req.url!)) {\n logger.debug(`${req.url} | removing Authorization header`);\n proxyReq.removeHeader('authorization');\n }\n\n headersToRemove.map((header) => proxyReq.removeHeader(header));\n\n logger.debug(`${req.url} | check if request has body`);\n if (req.method !== 'GET' && req.body) {\n logger.debug(`${req.url} | writing request body to proxyReq`);\n const bodyData = JSON.stringify(req.body);\n // in case if content-type is application/x-www-form-urlencoded -> we need to change to application/json\n proxyReq.setHeader('Content-Type', 'application/json');\n proxyReq.setHeader('Content-Length', Buffer.byteLength(bodyData));\n // stream the content\n proxyReq.write(bodyData);\n }\n } catch (e) {\n logger.error(`${req.url} | Failed to proxy request`, e);\n }\n};\n\nexport default ProxyRequestCallback;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"ProxyRequestCallback.js","names":["_package","_interopRequireDefault","require","_sdkVersion","_config","_cookies","_fronteggLogger","_utils","_constants","logger","fronteggLogger","child","tag","ProxyRequestCallback","proxyReq","req","_req$headers$xFronte","_req$headers$xFronte2","info","url","debug","allCookies","CookieManager","parseCookieHeader","fronteggCookiesNames","Object","keys","filter","cookieName","startsWith","config","join","modifiedCookies","forEach","requestCookieName","rewriteCookieByAppId","appId","replace","clientId","setHeader","headers","NextJsPkg","version","sdkVersion","clientIp","getClientIp","shouldForwardIp","_config$sharedSecret","FRONTEGG_FORWARD_IP_HEADER","FRONTEGG_HEADERS_VERIFIER_HEADER","sharedSecret","FRONTEGG_VENDOR_ID_HEADER","headersToRemove","map","header","removeHeader","method","body","bodyData","JSON","stringify","Buffer","byteLength","write","e","error","_default","exports","default"],"sources":["../../../../packages/nextjs/src/middleware/ProxyRequestCallback.ts"],"sourcesContent":["import NextJsPkg from 'next/package.json';\nimport { ProxyReqCallback } from 'http-proxy';\nimport { ClientRequest } from 'http';\nimport { NextApiRequest } from 'next';\nimport sdkVersion from '../sdkVersion';\nimport config from '../config';\nimport CookieManager from '../utils/cookies';\nimport fronteggLogger from '../utils/fronteggLogger';\nimport {\n FRONTEGG_HEADERS_VERIFIER_HEADER,\n FRONTEGG_FORWARD_IP_HEADER,\n getClientIp,\n FRONTEGG_VENDOR_ID_HEADER,\n} from '../api/utils';\nimport { headersToRemove } from './constants';\n\nconst logger = fronteggLogger.child({ tag: 'FronteggApiMiddleware.ProxyRequestCallback' });\n/**\n * Proxy request callback fired on before each request to Frontegg services,\n * to transport frontegg cookies.\n *\n * @param {ClientRequest} proxyReq - Proxy request to be sent\n * @param {NextApiRequest} req - Next.js incoming request\n */\nconst ProxyRequestCallback: ProxyReqCallback<ClientRequest, NextApiRequest> = (proxyReq, req) => {\n try {\n logger.info(`${req.url} | Going to proxy request`);\n logger.debug(`${req.url} | parsing request cookies`);\n const allCookies = CookieManager.parseCookieHeader(req);\n logger.debug(`${req.url} | found ${allCookies} cookies`);\n const fronteggCookiesNames = Object.keys(allCookies).filter((cookieName) => {\n return cookieName.startsWith('fe_') && !cookieName.startsWith(config.cookieName);\n });\n\n logger.debug(`${req.url} | proxy FronteggCookies (${fronteggCookiesNames.join(', ')})`);\n let modifiedCookies = ``;\n\n fronteggCookiesNames.forEach((requestCookieName: string) => {\n let cookieName = requestCookieName;\n if (config.rewriteCookieByAppId && config.appId) {\n cookieName = requestCookieName\n .replace(config.appId, config.clientId)\n .replace(config.appId.replace(/-/g, ''), config.clientId.replace(/-/g, ''))\n .replace(config.appId.replace('-', ''), config.clientId.replace('-', ''));\n\n logger.debug(`cookieName ${requestCookieName} replaced with appId ${cookieName}`);\n }\n\n logger.debug(`PROXY_ADDING_COOKIE ${cookieName}, ${allCookies[requestCookieName]}`);\n modifiedCookies += `${cookieName}=${allCookies[requestCookieName]}; `;\n });\n proxyReq.setHeader('cookie', modifiedCookies);\n\n proxyReq.setHeader('x-frontegg-framework', req.headers['x-frontegg-framework'] ?? `next@${NextJsPkg.version}`);\n proxyReq.setHeader('x-frontegg-sdk', req.headers['x-frontegg-sdk'] ?? `@frontegg/nextjs@${sdkVersion.version}`);\n proxyReq.setHeader('x-frontegg-middleware', 'true');\n\n const clientIp = getClientIp(req.headers['cf-connecting-ip'] || req.headers['x-forwarded-for']);\n\n if (clientIp && config.shouldForwardIp) {\n proxyReq.setHeader(FRONTEGG_FORWARD_IP_HEADER, clientIp);\n proxyReq.setHeader(FRONTEGG_HEADERS_VERIFIER_HEADER, config.sharedSecret ?? '');\n proxyReq.setHeader(FRONTEGG_VENDOR_ID_HEADER, config.clientId);\n }\n\n headersToRemove.map((header) => proxyReq.removeHeader(header));\n\n logger.debug(`${req.url} | check if request has body`);\n if (req.method !== 'GET' && req.body) {\n logger.debug(`${req.url} | writing request body to proxyReq`);\n const bodyData = JSON.stringify(req.body);\n // in case if content-type is application/x-www-form-urlencoded -> we need to change to application/json\n proxyReq.setHeader('Content-Type', 'application/json');\n proxyReq.setHeader('Content-Length', Buffer.byteLength(bodyData));\n // stream the content\n proxyReq.write(bodyData);\n }\n } catch (e) {\n logger.error(`${req.url} | Failed to proxy request`, e);\n }\n};\n\nexport default ProxyRequestCallback;\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@frontegg/nextjs",
3
3
  "libName": "FronteggNextJs",
4
- "version": "9.2.4",
4
+ "version": "9.2.5-alpha.15251860846",
5
5
  "author": "Frontegg LTD",
6
6
  "license": "MIT",
7
7
  "repository": {
package/sdkVersion.js CHANGED
@@ -5,6 +5,6 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
  var _default = exports.default = {
8
- version: '9.2.4'
8
+ version: '9.2.5-alpha.15251860846'
9
9
  };
10
10
  //# sourceMappingURL=sdkVersion.js.map
package/sdkVersion.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"sdkVersion.js","names":["version"],"sources":["../../../packages/nextjs/src/sdkVersion.ts"],"sourcesContent":["export default { version: '9.2.4' };\n"],"mappings":";;;;;;iCAAe;EAAEA,OAAO,EAAE;AAAQ,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"sdkVersion.js","names":["version"],"sources":["../../../packages/nextjs/src/sdkVersion.ts"],"sourcesContent":["export default { version: '9.2.5-alpha.15251860846' };\n"],"mappings":";;;;;;iCAAe;EAAEA,OAAO,EAAE;AAA0B,CAAC","ignoreList":[]}
@@ -63,31 +63,32 @@ const initializeFronteggApp = ({
63
63
  return options.envBaseUrl;
64
64
  }
65
65
  },
66
- beforeRequestInterceptor: (options, url) => {
66
+ beforeRequestInterceptor: (reqOptions, url) => {
67
67
  /**
68
68
  * Determines whether the authorization header should be removed from a request.
69
69
  * @param {String} urlStr - The URL of the request.
70
70
  */
71
71
  try {
72
- if (url && options.headers) {
72
+ if (url && reqOptions.headers) {
73
73
  const {
74
74
  pathname,
75
75
  origin
76
76
  } = new URL(url);
77
- if (typeof window !== 'undefined' && origin != window.location.origin) {
78
- return (0, _extends2.default)({}, options, {
77
+ if (typeof window !== 'undefined' && origin !== window.location.origin) {
78
+ return (0, _extends2.default)({}, reqOptions, {
79
79
  url
80
80
  });
81
81
  }
82
- if ([_urls.CommonUrls.refreshToken.embedded, _urls.CommonUrls.refreshToken.hosted, _urls.CommonUrls.activateAccount.activate, _urls.CommonUrls.logout].find(path => pathname.endsWith(path)) != undefined) {
83
- delete options.headers['authorization'];
84
- delete options.headers['Authorization'];
82
+ const excludedPaths = [_urls.CommonUrls.refreshToken.embedded, _urls.CommonUrls.refreshToken.hosted, _urls.CommonUrls.activateAccount.activate, _urls.CommonUrls.logout];
83
+ if (excludedPaths.some(path => pathname.endsWith(path))) {
84
+ delete reqOptions.headers['authorization'];
85
+ delete reqOptions.headers['Authorization'];
85
86
  }
86
87
  }
87
88
  } catch (e) {
88
89
  /** ignore */
89
90
  }
90
- return (0, _extends2.default)({}, options, {
91
+ return (0, _extends2.default)({}, reqOptions, {
91
92
  url
92
93
  });
93
94
  },
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_js","require","_reduxStore","_sdkVersion","_interopRequireDefault","_package","_utils","_urls","initializeFronteggApp","options","onRedirectTo","appName","storeHolder","_options$authOptions","_options$authOptions2","_options$hostedLoginB","_options$authOptions$","_options$authOptions3","session","user","tenants","activeTenant","accessToken","refreshToken","contextOptions","_extends2","default","requestCredentials","additionalHeadersResolver","_options$contextOptio","additionalHeaders","originalAdditionalHeadersResolver","push","e","Array","isArray","key","value","nextjsPkg","version","sdkVersion","tokenResolver","secureJwtEnabled","undefined","baseUrl","path","isMiddlewarePath","envAppUrl","envBaseUrl","beforeRequestInterceptor","url","headers","pathname","origin","URL","window","location","CommonUrls","embedded","hosted","activateAccount","activate","logout","find","endsWith","clientId","envClientId","appId","envAppId","tenantsState","authOptions","userData","isLoading","isAuthenticated","hostedLoginBox","disableSilentRefresh","sharedStore","store","createStore","context","previewMode","name","urlStrategy","builderMode","initialState","auth","createdApp","AppHolder","getInstance","_options$hostedLoginB2","_options$customLoginB","initialize","customLoginBox","basename","_default","exports"],"sources":["../../../../../packages/nextjs/src/utils/initializeFronteggApp/index.ts"],"sourcesContent":["import { AppHolder, FronteggApp, initialize } from '@frontegg/js';\nimport { createStore, AuthState } from '@frontegg/redux-store';\nimport { KeyValuePair } from '@frontegg/rest-api';\nimport { FronteggAppOptions } from '@frontegg/types';\nimport sdkVersion from '../../sdkVersion';\nimport type { FronteggProviderOptions } from '../../types';\nimport nextjsPkg from 'next/package.json';\nimport { isMiddlewarePath } from '../../api/utils';\nimport { CommonUrls } from '../common/urls';\n\ntype CreateOrGetFronteggAppParams = {\n options: FronteggProviderOptions;\n onRedirectTo: AuthState['onRedirectTo'];\n appName?: string;\n storeHolder: any;\n};\n\nconst initializeFronteggApp = ({\n options,\n onRedirectTo,\n appName,\n storeHolder,\n}: CreateOrGetFronteggAppParams): FronteggApp => {\n const { session, user, tenants, activeTenant } = options;\n const { accessToken, refreshToken } = session ?? {};\n\n const contextOptions: FronteggAppOptions['contextOptions'] = {\n requestCredentials: 'include' as RequestCredentials,\n ...options.contextOptions,\n additionalHeadersResolver: async () => {\n const additionalHeaders: KeyValuePair[] = [];\n const originalAdditionalHeadersResolver = options.contextOptions?.additionalHeadersResolver;\n if (typeof originalAdditionalHeadersResolver === 'function') {\n try {\n additionalHeaders.push(...(await originalAdditionalHeadersResolver()));\n } catch (e) {\n /** ignore failed additionalHeadersResolver */\n }\n } else if (Array.isArray(originalAdditionalHeadersResolver)) {\n additionalHeaders.push(...(originalAdditionalHeadersResolver as KeyValuePair[]));\n }\n additionalHeaders.push({\n key: 'x-frontegg-framework',\n value: `next@${nextjsPkg.version}`,\n });\n additionalHeaders.push({\n key: 'x-frontegg-sdk',\n value: `@frontegg/nextjs@${sdkVersion.version}`,\n });\n return additionalHeaders;\n },\n tokenResolver: options.secureJwtEnabled ? () => '' : undefined,\n baseUrl: (path: string) => {\n if (isMiddlewarePath(path) || options.secureJwtEnabled) {\n return `${options.envAppUrl}/api`;\n } else {\n return options.envBaseUrl;\n }\n },\n beforeRequestInterceptor: (options, url) => {\n /**\n * Determines whether the authorization header should be removed from a request.\n * @param {String} urlStr - The URL of the request.\n */\n try {\n if (url && options.headers) {\n const { pathname, origin } = new URL(url);\n if (typeof window !== 'undefined' && origin != window.location.origin) {\n return { ...options, url };\n }\n if (\n [\n CommonUrls.refreshToken.embedded,\n CommonUrls.refreshToken.hosted,\n CommonUrls.activateAccount.activate,\n CommonUrls.logout,\n ].find((path) => pathname.endsWith(path)) != undefined\n ) {\n delete options.headers['authorization'];\n delete options.headers['Authorization'];\n }\n }\n } catch (e) {\n /** ignore */\n }\n return { ...options, url };\n },\n clientId: options.envClientId,\n appId: options.envAppId,\n };\n\n const tenantsState = {\n tenants: tenants || [],\n activeTenant,\n ...options.authOptions?.tenantsState,\n };\n const userData = user\n ? {\n ...user,\n accessToken: accessToken ?? '',\n refreshToken: refreshToken ?? undefined,\n ...options.authOptions?.user,\n }\n : null;\n\n const authOptions: FronteggAppOptions['authOptions'] = {\n ...options.authOptions,\n onRedirectTo,\n isLoading: false,\n isAuthenticated: !!options.session,\n hostedLoginBox: options.hostedLoginBox ?? false,\n disableSilentRefresh: options.authOptions?.disableSilentRefresh ?? true,\n user: userData,\n tenantsState: tenantsState as AuthState['tenantsState'],\n };\n\n let sharedStore = storeHolder.store;\n if (!sharedStore) {\n sharedStore = createStore({\n context: contextOptions,\n storeHolder,\n previewMode: options.previewMode,\n name: appName ?? 'default',\n urlStrategy: options.urlStrategy,\n builderMode: false,\n initialState: {\n auth: authOptions,\n },\n });\n storeHolder.store = sharedStore;\n }\n\n let createdApp;\n try {\n createdApp = AppHolder.getInstance(appName ?? 'default');\n createdApp.store = sharedStore;\n } catch (e) {\n createdApp = initialize(\n {\n ...options,\n store: sharedStore,\n hostedLoginBox: options.hostedLoginBox ?? false,\n customLoginBox: options.customLoginBox ?? false,\n basename: options.basename,\n authOptions,\n contextOptions,\n onRedirectTo,\n },\n appName ?? 'default'\n );\n }\n return createdApp;\n};\nexport default initializeFronteggApp;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["_js","require","_reduxStore","_sdkVersion","_interopRequireDefault","_package","_utils","_urls","initializeFronteggApp","options","onRedirectTo","appName","storeHolder","_options$authOptions","_options$authOptions2","_options$hostedLoginB","_options$authOptions$","_options$authOptions3","session","user","tenants","activeTenant","accessToken","refreshToken","contextOptions","_extends2","default","requestCredentials","additionalHeadersResolver","_options$contextOptio","additionalHeaders","originalAdditionalHeadersResolver","push","e","Array","isArray","key","value","nextjsPkg","version","sdkVersion","tokenResolver","secureJwtEnabled","undefined","baseUrl","path","isMiddlewarePath","envAppUrl","envBaseUrl","beforeRequestInterceptor","reqOptions","url","headers","pathname","origin","URL","window","location","excludedPaths","CommonUrls","embedded","hosted","activateAccount","activate","logout","some","endsWith","clientId","envClientId","appId","envAppId","tenantsState","authOptions","userData","isLoading","isAuthenticated","hostedLoginBox","disableSilentRefresh","sharedStore","store","createStore","context","previewMode","name","urlStrategy","builderMode","initialState","auth","createdApp","AppHolder","getInstance","_options$hostedLoginB2","_options$customLoginB","initialize","customLoginBox","basename","_default","exports"],"sources":["../../../../../packages/nextjs/src/utils/initializeFronteggApp/index.ts"],"sourcesContent":["import { AppHolder, FronteggApp, initialize } from '@frontegg/js';\nimport { createStore, AuthState } from '@frontegg/redux-store';\nimport { KeyValuePair } from '@frontegg/rest-api';\nimport { FronteggAppOptions } from '@frontegg/types';\nimport sdkVersion from '../../sdkVersion';\nimport type { FronteggProviderOptions } from '../../types';\nimport nextjsPkg from 'next/package.json';\nimport { isMiddlewarePath } from '../../api/utils';\nimport { CommonUrls } from '../common/urls';\n\ntype CreateOrGetFronteggAppParams = {\n options: FronteggProviderOptions;\n onRedirectTo: AuthState['onRedirectTo'];\n appName?: string;\n storeHolder: any;\n};\n\nconst initializeFronteggApp = ({\n options,\n onRedirectTo,\n appName,\n storeHolder,\n}: CreateOrGetFronteggAppParams): FronteggApp => {\n const { session, user, tenants, activeTenant } = options;\n const { accessToken, refreshToken } = session ?? {};\n\n const contextOptions: FronteggAppOptions['contextOptions'] = {\n requestCredentials: 'include' as RequestCredentials,\n ...options.contextOptions,\n additionalHeadersResolver: async () => {\n const additionalHeaders: KeyValuePair[] = [];\n const originalAdditionalHeadersResolver = options.contextOptions?.additionalHeadersResolver;\n if (typeof originalAdditionalHeadersResolver === 'function') {\n try {\n additionalHeaders.push(...(await originalAdditionalHeadersResolver()));\n } catch (e) {\n /** ignore failed additionalHeadersResolver */\n }\n } else if (Array.isArray(originalAdditionalHeadersResolver)) {\n additionalHeaders.push(...(originalAdditionalHeadersResolver as KeyValuePair[]));\n }\n additionalHeaders.push({\n key: 'x-frontegg-framework',\n value: `next@${nextjsPkg.version}`,\n });\n additionalHeaders.push({\n key: 'x-frontegg-sdk',\n value: `@frontegg/nextjs@${sdkVersion.version}`,\n });\n return additionalHeaders;\n },\n tokenResolver: options.secureJwtEnabled ? () => '' : undefined,\n baseUrl: (path: string) => {\n if (isMiddlewarePath(path) || options.secureJwtEnabled) {\n return `${options.envAppUrl}/api`;\n } else {\n return options.envBaseUrl;\n }\n },\n beforeRequestInterceptor: (reqOptions, url) => {\n /**\n * Determines whether the authorization header should be removed from a request.\n * @param {String} urlStr - The URL of the request.\n */\n try {\n if (url && reqOptions.headers) {\n const { pathname, origin } = new URL(url);\n if (typeof window !== 'undefined' && origin !== window.location.origin) {\n return { ...reqOptions, url };\n }\n\n const excludedPaths = [\n CommonUrls.refreshToken.embedded,\n CommonUrls.refreshToken.hosted,\n CommonUrls.activateAccount.activate,\n CommonUrls.logout,\n ];\n\n if (excludedPaths.some((path) => pathname.endsWith(path))) {\n delete reqOptions.headers['authorization'];\n delete reqOptions.headers['Authorization'];\n }\n }\n } catch (e) {\n /** ignore */\n }\n return { ...reqOptions, url };\n },\n clientId: options.envClientId,\n appId: options.envAppId,\n };\n\n const tenantsState = {\n tenants: tenants || [],\n activeTenant,\n ...options.authOptions?.tenantsState,\n };\n const userData = user\n ? {\n ...user,\n accessToken: accessToken ?? '',\n refreshToken: refreshToken ?? undefined,\n ...options.authOptions?.user,\n }\n : null;\n\n const authOptions: FronteggAppOptions['authOptions'] = {\n ...options.authOptions,\n onRedirectTo,\n isLoading: false,\n isAuthenticated: !!options.session,\n hostedLoginBox: options.hostedLoginBox ?? false,\n disableSilentRefresh: options.authOptions?.disableSilentRefresh ?? true,\n user: userData,\n tenantsState: tenantsState as AuthState['tenantsState'],\n };\n\n let sharedStore = storeHolder.store;\n if (!sharedStore) {\n sharedStore = createStore({\n context: contextOptions,\n storeHolder,\n previewMode: options.previewMode,\n name: appName ?? 'default',\n urlStrategy: options.urlStrategy,\n builderMode: false,\n initialState: {\n auth: authOptions,\n },\n });\n storeHolder.store = sharedStore;\n }\n\n let createdApp;\n try {\n createdApp = AppHolder.getInstance(appName ?? 'default');\n createdApp.store = sharedStore;\n } catch (e) {\n createdApp = initialize(\n {\n ...options,\n store: sharedStore,\n hostedLoginBox: options.hostedLoginBox ?? false,\n customLoginBox: options.customLoginBox ?? false,\n basename: options.basename,\n authOptions,\n contextOptions,\n onRedirectTo,\n },\n appName ?? 'default'\n );\n }\n return createdApp;\n};\nexport default initializeFronteggApp;\n"],"mappings":"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","ignoreList":[]}
@@ -25,12 +25,6 @@ export declare function isSamlCallback(url: string): boolean;
25
25
  * is posting an http request to the nextjs backend middleware after successfully logged in the user
26
26
  */
27
27
  export declare function isSSOPostRequest(url: string): boolean;
28
- /**
29
- * Checks if the request URL is a refresh token request.
30
- * This is used to determine if the current request is targeting
31
- * one of the predefined refresh token URLs (embedded or hosted modes).
32
- */
33
- export declare function isRefreshTokenRequest(url: string): boolean;
34
28
  /**
35
29
  * This function verifies if the headers includes a 'set-cookie' header
36
30
  * from a prior refresh token request. If it's the case, we can infer that the
@@ -8,7 +8,6 @@ exports.getForwardedSession = getForwardedSession;
8
8
  exports.hasRefreshTokenCookie = hasRefreshTokenCookie;
9
9
  exports.hasSetSessionCookie = hasSetSessionCookie;
10
10
  exports.isOauthCallback = isOauthCallback;
11
- exports.isRefreshTokenRequest = isRefreshTokenRequest;
12
11
  exports.isRuntimeNextRequest = isRuntimeNextRequest;
13
12
  exports.isSSOPostRequest = isSSOPostRequest;
14
13
  exports.isSamlCallback = isSamlCallback;
@@ -21,7 +20,6 @@ var _api = _interopRequireDefault(require("../../api"));
21
20
  var _common = require("../../common");
22
21
  var _config = _interopRequireDefault(require("../../config"));
23
22
  var _constants = require("../common/constants");
24
- var _urls = require("../common/urls");
25
23
  function hasRefreshTokenCookie(cookies) {
26
24
  if (cookies == null) {
27
25
  return false;
@@ -119,16 +117,6 @@ function isSSOPostRequest(url) {
119
117
  return url === '/frontegg/auth/saml/callback' || url === '/frontegg/auth/oidc/callback';
120
118
  }
121
119
 
122
- /**
123
- * Checks if the request URL is a refresh token request.
124
- * This is used to determine if the current request is targeting
125
- * one of the predefined refresh token URLs (embedded or hosted modes).
126
- */
127
- function isRefreshTokenRequest(url) {
128
- const refreshTokenUrls = [_urls.CommonUrls.refreshToken.embedded, _urls.CommonUrls.refreshToken.hosted];
129
- return refreshTokenUrls.includes(url);
130
- }
131
-
132
120
  /**
133
121
  * This function verifies if the headers includes a 'set-cookie' header
134
122
  * from a prior refresh token request. If it's the case, we can infer that the
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","names":["_fronteggLogger","_interopRequireDefault","require","_cookies","_api","_common","_config","_constants","_urls","hasRefreshTokenCookie","cookies","logger","fronteggLogger","child","tag","refreshTokenKey","CookieManager","debug","cookieKey","Object","keys","find","cookie","replace","exists","refreshAccessTokenEmbedded","request","headers","info","config","appId","api","refreshTokenEmbedded","refreshAccessTokenHostedLogin","sealFromCookies","getSessionCookieFromRequest","tokens","getTokensFromCookie","refreshToken","secureJwtEnabled","clientId","clientSecret","refreshTokenHostedLogin","e","error","isRuntimeNextRequest","url","startsWith","isOauthCallback","isSamlCallback","isSSOPostRequest","isRefreshTokenRequest","refreshTokenUrls","CommonUrls","embedded","hosted","includes","hasSetSessionCookie","cookieHeader","cookieName","indexOf","Array","isArray","some","header","saveForwardedSession","holder","session","FRONTEGG_FORWARDED_SESSION_KEY","getForwardedSession"],"sources":["../../../../../packages/nextjs/src/utils/refreshAccessTokenIfNeeded/helpers.ts"],"sourcesContent":["import fronteggLogger from '../fronteggLogger';\nimport CookieManager from '../cookies';\nimport { NextApiRequest } from 'next/dist/shared/lib/utils';\nimport api from '../../api';\nimport { getTokensFromCookie } from '../../common';\nimport { IncomingMessage } from 'http';\nimport config from '../../config';\n\nimport { FRONTEGG_FORWARDED_SESSION_KEY } from '../common/constants';\nimport { FronteggNextJSSession } from '../../types';\nimport { CommonUrls } from '../common/urls';\n\nexport function hasRefreshTokenCookie(cookies: Record<string, any>): boolean {\n if (cookies == null) {\n return false;\n }\n const logger = fronteggLogger.child({ tag: 'refreshToken.hasRefreshTokenCookie' });\n const refreshTokenKey = CookieManager.refreshTokenKey;\n logger.debug(`Checking if '${refreshTokenKey}' exists in cookies`);\n const cookieKey = Object.keys(cookies).find((cookie) => {\n return cookie.replace(/-/g, '') === refreshTokenKey;\n });\n const exists: boolean = cookieKey != null;\n logger.debug(`Cookie '${refreshTokenKey}' ${exists ? 'exists' : 'NOT exists'} in cookies`);\n return exists;\n}\n\nexport async function refreshAccessTokenEmbedded(request: IncomingMessage): Promise<Response | null> {\n const logger = fronteggLogger.child({ tag: 'refreshToken.refreshAccessTokenEmbedded' });\n\n const headers = request.headers as Record<string, string>;\n const cookies = (request as NextApiRequest).cookies;\n\n logger.info('check if has refresh token headers');\n if (hasRefreshTokenCookie(cookies)) {\n logger.info('going to refresh token (embedded mode)');\n if (config.appId) {\n headers['frontegg-requested-application-id'] = config.appId;\n }\n return await api.refreshTokenEmbedded(headers);\n }\n return null;\n}\n\nexport async function refreshAccessTokenHostedLogin(request: IncomingMessage): Promise<Response | null> {\n const logger = fronteggLogger.child({ tag: 'refreshToken.refreshAccessTokenHostedLogin' });\n const headers = request.headers as Record<string, string>;\n\n logger.info('trying to get token from cookies');\n\n const sealFromCookies = CookieManager.getSessionCookieFromRequest(request);\n try {\n const tokens = await getTokensFromCookie(sealFromCookies);\n if (!tokens?.refreshToken) {\n logger.info('refresh token not found');\n return null;\n }\n if (config.appId) {\n headers['frontegg-requested-application-id'] = config.appId;\n }\n if (config.secureJwtEnabled) {\n const clientId = config.clientId;\n const clientSecret = config.clientSecret;\n\n logger.info('going to refresh token (hosted-login mode) (secure-jwt mode)');\n return await api.refreshTokenHostedLogin(headers, tokens.refreshToken, clientId, clientSecret);\n } else {\n logger.info('going to refresh token (hosted-login mode) ', tokens.refreshToken);\n return await api.refreshTokenHostedLogin(headers, tokens.refreshToken);\n }\n } catch (e) {\n logger.error(e);\n return null;\n }\n}\n\n/**\n * If url starts with /_next/ means that the user trying to navigate\n * to a new nextjs page, in this scenario no need to refresh token\n * we can just return the actual stateless session from\n * the encrypted cookie\n */\nexport function isRuntimeNextRequest(url: string): boolean {\n return url.startsWith('/_next/');\n}\n\n/**\n * If url starts with '/oauth/callback' means that the user navigated back\n * from frontegg hosted login, in this scenario no need to SSR refresh token\n */\nexport function isOauthCallback(url: string): boolean {\n return url.startsWith('/oauth/callback');\n}\n\n/**\n * If url starts with '/account/saml/callback' means that the user navigated back\n * from sso login, in this scenario no need to SSR refresh token\n */\nexport function isSamlCallback(url: string): boolean {\n return url.startsWith('/account/saml/callback') || url.startsWith('/account/oidc/callback');\n}\n\n/**\n * If the url equals to '/frontegg/auth/{provider}/callback', it means that the SSO provider\n * is posting an http request to the nextjs backend middleware after successfully logged in the user\n */\nexport function isSSOPostRequest(url: string): boolean {\n return url === '/frontegg/auth/saml/callback' || url === '/frontegg/auth/oidc/callback';\n}\n\n/**\n * Checks if the request URL is a refresh token request.\n * This is used to determine if the current request is targeting\n * one of the predefined refresh token URLs (embedded or hosted modes).\n */\nexport function isRefreshTokenRequest(url: string): boolean {\n const refreshTokenUrls = [CommonUrls.refreshToken.embedded, CommonUrls.refreshToken.hosted];\n return refreshTokenUrls.includes(url);\n}\n\n/**\n * This function verifies if the headers includes a 'set-cookie' header\n * from a prior refresh token request. If it's the case, we can infer that the\n * session cookie has been initialized, thus we can disable the double refresh token\n * for server-side redirects such as '/_error' or any other server-side redirects.\n */\nexport function hasSetSessionCookie(cookieHeader: number | string | string[] | undefined): boolean {\n if (!cookieHeader || typeof cookieHeader === 'number') {\n return false;\n }\n const cookieName = config.cookieName;\n if (typeof cookieHeader === 'string') {\n return cookieHeader.indexOf(cookieName) !== -1;\n }\n if (Array.isArray(cookieHeader)) {\n return cookieHeader.some((header) => header.startsWith(cookieName));\n }\n return false;\n}\n\n/**\n * This function stores the Frontegg session instance for use\n * within the Next.js application during the token refresh process\n * in the redirect request page.\n */\nexport function saveForwardedSession(holder: any, session: FronteggNextJSSession | undefined) {\n holder[FRONTEGG_FORWARDED_SESSION_KEY] = session;\n}\n\n/**\n * This function retrieves the stored session from the previous redirected page request.\n * This helps in preventing the token from being refreshed twice during a single client page request.\n */\n\nexport function getForwardedSession(holder: any): FronteggNextJSSession | null {\n return holder[FRONTEGG_FORWARDED_SESSION_KEY];\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"helpers.js","names":["_fronteggLogger","_interopRequireDefault","require","_cookies","_api","_common","_config","_constants","hasRefreshTokenCookie","cookies","logger","fronteggLogger","child","tag","refreshTokenKey","CookieManager","debug","cookieKey","Object","keys","find","cookie","replace","exists","refreshAccessTokenEmbedded","request","headers","info","config","appId","api","refreshTokenEmbedded","refreshAccessTokenHostedLogin","sealFromCookies","getSessionCookieFromRequest","tokens","getTokensFromCookie","refreshToken","secureJwtEnabled","clientId","clientSecret","refreshTokenHostedLogin","e","error","isRuntimeNextRequest","url","startsWith","isOauthCallback","isSamlCallback","isSSOPostRequest","hasSetSessionCookie","cookieHeader","cookieName","indexOf","Array","isArray","some","header","saveForwardedSession","holder","session","FRONTEGG_FORWARDED_SESSION_KEY","getForwardedSession"],"sources":["../../../../../packages/nextjs/src/utils/refreshAccessTokenIfNeeded/helpers.ts"],"sourcesContent":["import fronteggLogger from '../fronteggLogger';\nimport CookieManager from '../cookies';\nimport { NextApiRequest } from 'next/dist/shared/lib/utils';\nimport api from '../../api';\nimport { getTokensFromCookie } from '../../common';\nimport { IncomingMessage } from 'http';\nimport config from '../../config';\n\nimport { FRONTEGG_FORWARDED_SESSION_KEY } from '../common/constants';\nimport { FronteggNextJSSession } from '../../types';\n\nexport function hasRefreshTokenCookie(cookies: Record<string, any>): boolean {\n if (cookies == null) {\n return false;\n }\n const logger = fronteggLogger.child({ tag: 'refreshToken.hasRefreshTokenCookie' });\n const refreshTokenKey = CookieManager.refreshTokenKey;\n logger.debug(`Checking if '${refreshTokenKey}' exists in cookies`);\n const cookieKey = Object.keys(cookies).find((cookie) => {\n return cookie.replace(/-/g, '') === refreshTokenKey;\n });\n const exists: boolean = cookieKey != null;\n logger.debug(`Cookie '${refreshTokenKey}' ${exists ? 'exists' : 'NOT exists'} in cookies`);\n return exists;\n}\n\nexport async function refreshAccessTokenEmbedded(request: IncomingMessage): Promise<Response | null> {\n const logger = fronteggLogger.child({ tag: 'refreshToken.refreshAccessTokenEmbedded' });\n\n const headers = request.headers as Record<string, string>;\n const cookies = (request as NextApiRequest).cookies;\n\n logger.info('check if has refresh token headers');\n if (hasRefreshTokenCookie(cookies)) {\n logger.info('going to refresh token (embedded mode)');\n if (config.appId) {\n headers['frontegg-requested-application-id'] = config.appId;\n }\n return await api.refreshTokenEmbedded(headers);\n }\n return null;\n}\n\nexport async function refreshAccessTokenHostedLogin(request: IncomingMessage): Promise<Response | null> {\n const logger = fronteggLogger.child({ tag: 'refreshToken.refreshAccessTokenHostedLogin' });\n const headers = request.headers as Record<string, string>;\n\n logger.info('trying to get token from cookies');\n\n const sealFromCookies = CookieManager.getSessionCookieFromRequest(request);\n try {\n const tokens = await getTokensFromCookie(sealFromCookies);\n if (!tokens?.refreshToken) {\n logger.info('refresh token not found');\n return null;\n }\n if (config.appId) {\n headers['frontegg-requested-application-id'] = config.appId;\n }\n if (config.secureJwtEnabled) {\n const clientId = config.clientId;\n const clientSecret = config.clientSecret;\n\n logger.info('going to refresh token (hosted-login mode) (secure-jwt mode)');\n return await api.refreshTokenHostedLogin(headers, tokens.refreshToken, clientId, clientSecret);\n } else {\n logger.info('going to refresh token (hosted-login mode) ', tokens.refreshToken);\n return await api.refreshTokenHostedLogin(headers, tokens.refreshToken);\n }\n } catch (e) {\n logger.error(e);\n return null;\n }\n}\n\n/**\n * If url starts with /_next/ means that the user trying to navigate\n * to a new nextjs page, in this scenario no need to refresh token\n * we can just return the actual stateless session from\n * the encrypted cookie\n */\nexport function isRuntimeNextRequest(url: string): boolean {\n return url.startsWith('/_next/');\n}\n\n/**\n * If url starts with '/oauth/callback' means that the user navigated back\n * from frontegg hosted login, in this scenario no need to SSR refresh token\n */\nexport function isOauthCallback(url: string): boolean {\n return url.startsWith('/oauth/callback');\n}\n\n/**\n * If url starts with '/account/saml/callback' means that the user navigated back\n * from sso login, in this scenario no need to SSR refresh token\n */\nexport function isSamlCallback(url: string): boolean {\n return url.startsWith('/account/saml/callback') || url.startsWith('/account/oidc/callback');\n}\n\n/**\n * If the url equals to '/frontegg/auth/{provider}/callback', it means that the SSO provider\n * is posting an http request to the nextjs backend middleware after successfully logged in the user\n */\nexport function isSSOPostRequest(url: string): boolean {\n return url === '/frontegg/auth/saml/callback' || url === '/frontegg/auth/oidc/callback';\n}\n\n/**\n * This function verifies if the headers includes a 'set-cookie' header\n * from a prior refresh token request. If it's the case, we can infer that the\n * session cookie has been initialized, thus we can disable the double refresh token\n * for server-side redirects such as '/_error' or any other server-side redirects.\n */\nexport function hasSetSessionCookie(cookieHeader: number | string | string[] | undefined): boolean {\n if (!cookieHeader || typeof cookieHeader === 'number') {\n return false;\n }\n const cookieName = config.cookieName;\n if (typeof cookieHeader === 'string') {\n return cookieHeader.indexOf(cookieName) !== -1;\n }\n if (Array.isArray(cookieHeader)) {\n return cookieHeader.some((header) => header.startsWith(cookieName));\n }\n return false;\n}\n\n/**\n * This function stores the Frontegg session instance for use\n * within the Next.js application during the token refresh process\n * in the redirect request page.\n */\nexport function saveForwardedSession(holder: any, session: FronteggNextJSSession | undefined) {\n holder[FRONTEGG_FORWARDED_SESSION_KEY] = session;\n}\n\n/**\n * This function retrieves the stored session from the previous redirected page request.\n * This helps in preventing the token from being refreshed twice during a single client page request.\n */\n\nexport function getForwardedSession(holder: any): FronteggNextJSSession | null {\n return holder[FRONTEGG_FORWARDED_SESSION_KEY];\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAAA,IAAAA,eAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,QAAA,GAAAF,sBAAA,CAAAC,OAAA;AAEA,IAAAE,IAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,OAAA,GAAAH,OAAA;AAEA,IAAAI,OAAA,GAAAL,sBAAA,CAAAC,OAAA;AAEA,IAAAK,UAAA,GAAAL,OAAA;AAGO,SAASM,qBAAqBA,CAACC,OAA4B,EAAW;EAC3E,IAAIA,OAAO,IAAI,IAAI,EAAE;IACnB,OAAO,KAAK;EACd;EACA,MAAMC,MAAM,GAAGC,uBAAc,CAACC,KAAK,CAAC;IAAEC,GAAG,EAAE;EAAqC,CAAC,CAAC;EAClF,MAAMC,eAAe,GAAGC,gBAAa,CAACD,eAAe;EACrDJ,MAAM,CAACM,KAAK,CAAC,gBAAgBF,eAAe,qBAAqB,CAAC;EAClE,MAAMG,SAAS,GAAGC,MAAM,CAACC,IAAI,CAACV,OAAO,CAAC,CAACW,IAAI,CAAEC,MAAM,IAAK;IACtD,OAAOA,MAAM,CAACC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,KAAKR,eAAe;EACrD,CAAC,CAAC;EACF,MAAMS,MAAe,GAAGN,SAAS,IAAI,IAAI;EACzCP,MAAM,CAACM,KAAK,CAAC,WAAWF,eAAe,KAAKS,MAAM,GAAG,QAAQ,GAAG,YAAY,aAAa,CAAC;EAC1F,OAAOA,MAAM;AACf;AAEO,eAAeC,0BAA0BA,CAACC,OAAwB,EAA4B;EACnG,MAAMf,MAAM,GAAGC,uBAAc,CAACC,KAAK,CAAC;IAAEC,GAAG,EAAE;EAA0C,CAAC,CAAC;EAEvF,MAAMa,OAAO,GAAGD,OAAO,CAACC,OAAiC;EACzD,MAAMjB,OAAO,GAAIgB,OAAO,CAAoBhB,OAAO;EAEnDC,MAAM,CAACiB,IAAI,CAAC,oCAAoC,CAAC;EACjD,IAAInB,qBAAqB,CAACC,OAAO,CAAC,EAAE;IAClCC,MAAM,CAACiB,IAAI,CAAC,wCAAwC,CAAC;IACrD,IAAIC,eAAM,CAACC,KAAK,EAAE;MAChBH,OAAO,CAAC,mCAAmC,CAAC,GAAGE,eAAM,CAACC,KAAK;IAC7D;IACA,OAAO,MAAMC,YAAG,CAACC,oBAAoB,CAACL,OAAO,CAAC;EAChD;EACA,OAAO,IAAI;AACb;AAEO,eAAeM,6BAA6BA,CAACP,OAAwB,EAA4B;EACtG,MAAMf,MAAM,GAAGC,uBAAc,CAACC,KAAK,CAAC;IAAEC,GAAG,EAAE;EAA6C,CAAC,CAAC;EAC1F,MAAMa,OAAO,GAAGD,OAAO,CAACC,OAAiC;EAEzDhB,MAAM,CAACiB,IAAI,CAAC,kCAAkC,CAAC;EAE/C,MAAMM,eAAe,GAAGlB,gBAAa,CAACmB,2BAA2B,CAACT,OAAO,CAAC;EAC1E,IAAI;IACF,MAAMU,MAAM,GAAG,MAAM,IAAAC,2BAAmB,EAACH,eAAe,CAAC;IACzD,IAAI,EAACE,MAAM,YAANA,MAAM,CAAEE,YAAY,GAAE;MACzB3B,MAAM,CAACiB,IAAI,CAAC,yBAAyB,CAAC;MACtC,OAAO,IAAI;IACb;IACA,IAAIC,eAAM,CAACC,KAAK,EAAE;MAChBH,OAAO,CAAC,mCAAmC,CAAC,GAAGE,eAAM,CAACC,KAAK;IAC7D;IACA,IAAID,eAAM,CAACU,gBAAgB,EAAE;MAC3B,MAAMC,QAAQ,GAAGX,eAAM,CAACW,QAAQ;MAChC,MAAMC,YAAY,GAAGZ,eAAM,CAACY,YAAY;MAExC9B,MAAM,CAACiB,IAAI,CAAC,8DAA8D,CAAC;MAC3E,OAAO,MAAMG,YAAG,CAACW,uBAAuB,CAACf,OAAO,EAAES,MAAM,CAACE,YAAY,EAAEE,QAAQ,EAAEC,YAAY,CAAC;IAChG,CAAC,MAAM;MACL9B,MAAM,CAACiB,IAAI,CAAC,6CAA6C,EAAEQ,MAAM,CAACE,YAAY,CAAC;MAC/E,OAAO,MAAMP,YAAG,CAACW,uBAAuB,CAACf,OAAO,EAAES,MAAM,CAACE,YAAY,CAAC;IACxE;EACF,CAAC,CAAC,OAAOK,CAAC,EAAE;IACVhC,MAAM,CAACiC,KAAK,CAACD,CAAC,CAAC;IACf,OAAO,IAAI;EACb;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAASE,oBAAoBA,CAACC,GAAW,EAAW;EACzD,OAAOA,GAAG,CAACC,UAAU,CAAC,SAAS,CAAC;AAClC;;AAEA;AACA;AACA;AACA;AACO,SAASC,eAAeA,CAACF,GAAW,EAAW;EACpD,OAAOA,GAAG,CAACC,UAAU,CAAC,iBAAiB,CAAC;AAC1C;;AAEA;AACA;AACA;AACA;AACO,SAASE,cAAcA,CAACH,GAAW,EAAW;EACnD,OAAOA,GAAG,CAACC,UAAU,CAAC,wBAAwB,CAAC,IAAID,GAAG,CAACC,UAAU,CAAC,wBAAwB,CAAC;AAC7F;;AAEA;AACA;AACA;AACA;AACO,SAASG,gBAAgBA,CAACJ,GAAW,EAAW;EACrD,OAAOA,GAAG,KAAK,8BAA8B,IAAIA,GAAG,KAAK,8BAA8B;AACzF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAASK,mBAAmBA,CAACC,YAAoD,EAAW;EACjG,IAAI,CAACA,YAAY,IAAI,OAAOA,YAAY,KAAK,QAAQ,EAAE;IACrD,OAAO,KAAK;EACd;EACA,MAAMC,UAAU,GAAGxB,eAAM,CAACwB,UAAU;EACpC,IAAI,OAAOD,YAAY,KAAK,QAAQ,EAAE;IACpC,OAAOA,YAAY,CAACE,OAAO,CAACD,UAAU,CAAC,KAAK,CAAC,CAAC;EAChD;EACA,IAAIE,KAAK,CAACC,OAAO,CAACJ,YAAY,CAAC,EAAE;IAC/B,OAAOA,YAAY,CAACK,IAAI,CAAEC,MAAM,IAAKA,MAAM,CAACX,UAAU,CAACM,UAAU,CAAC,CAAC;EACrE;EACA,OAAO,KAAK;AACd;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASM,oBAAoBA,CAACC,MAAW,EAAEC,OAA0C,EAAE;EAC5FD,MAAM,CAACE,yCAA8B,CAAC,GAAGD,OAAO;AAClD;;AAEA;AACA;AACA;AACA;;AAEO,SAASE,mBAAmBA,CAACH,MAAW,EAAgC;EAC7E,OAAOA,MAAM,CAACE,yCAA8B,CAAC;AAC/C","ignoreList":[]}