@frontegg/nextjs 9.2.10 → 9.2.11-alpha.18744232867

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,11 @@
1
1
  # Change Log
2
2
 
3
+ ## [9.2.11](https://github.com/frontegg/frontegg-nextjs/compare/v9.2.10...v9.2.11) (2025-10-23)
4
+
5
+
6
+ ### NextJS Wrapper 9.2.11:
7
+ - FR-22443 Enhance getSession function to require response object
8
+
3
9
  ## [9.2.10](https://github.com/frontegg/frontegg-nextjs/compare/v9.2.9...v9.2.10) (2025-10-19)
4
10
 
5
11
 
package/index.js CHANGED
@@ -1,4 +1,4 @@
1
- /** @license Frontegg v9.2.10
1
+ /** @license Frontegg v9.2.11-alpha.18744232867
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.
@@ -50,7 +50,7 @@ const middlewarePromise = (req, res, options) => new Promise(async resolve => {
50
50
  }
51
51
  const headers = {};
52
52
  if (process.env['FRONTEGG_SECURE_JWT_ENABLED'] === 'true') {
53
- const session = await (0, _pages.getSession)(req);
53
+ const session = await (0, _pages.getSession)(req, res);
54
54
  if (session != null && session.accessToken) {
55
55
  headers['authorization'] = 'Bearer ' + session.accessToken;
56
56
  }
@@ -1 +1 @@
1
- {"version":3,"file":"FronteggApiMiddleware.js","names":["_FronteggProxy","require","_constants","_helpers","_pages","_config","_interopRequireDefault","_cookies","_common","handleCors","req","res","corsOptions","_req$headers$host","allowedOrigins","allowedMethods","allowedHeaders","allowCredentials","isInternalRequest","headers","host","_req$headers$origin","origin","combinedHeaders","Array","from","Set","defaultFronteggHeaders","includes","setHeader","removeHeader","join","middlewarePromise","options","Promise","resolve","_req$url","fronteggUrlPath","rewritePath","url","fronteggPathRewrite","rewriteUrl","fronteggSSOPathRewrite","on","proxyOptions","target","process","env","session","getSession","accessToken","config","isHostedLogin","isFronteggLogoutUrl","sessionCookie","CookieManager","getSessionCookieFromRequest","tokens","getTokensFromCookie","ipResolver","cors","FronteggProxy","web","_extends2","default","FronteggApiMiddleware","exports","withOptions"],"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, FronteggMiddlewareOptions } from './types';\nimport config from '../config';\nimport { isFronteggLogoutUrl } from './helpers';\nimport CookieManager from '../utils/cookies';\nimport { getTokensFromCookie } from '../common';\n\nconst handleCors = (req: NextApiRequest, res: NextApiResponse, corsOptions?: CorsOptions) => {\n if (!corsOptions) return;\n\n const {\n allowedOrigins = ['*'],\n allowedMethods = ['GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'OPTIONS'],\n allowedHeaders = ['Content-Type', 'Authorization'],\n allowCredentials = true,\n } = corsOptions;\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\nconst middlewarePromise = (req: NextApiRequest, res: NextApiResponse, options?: FronteggMiddlewareOptions) =>\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 proxyOptions = {\n target: process.env['FRONTEGG_BASE_URL'],\n };\n if (process.env['FRONTEGG_TEST_URL'] && req.url == '/frontegg/middleware-test') {\n proxyOptions.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\n if (options?.ipResolver) {\n config.ipResolver = options.ipResolver;\n }\n\n handleCors(req, res, options?.cors);\n\n FronteggProxy.web(req, res, {\n ...proxyOptions,\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.withOptions =\n (options: FronteggMiddlewareOptions) =>\n async (req: NextApiRequest, res: NextApiResponse): Promise<void> => {\n return await middlewarePromise(req, res, options);\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","handleCors","req","res","corsOptions","_req$headers$host","allowedOrigins","allowedMethods","allowedHeaders","allowCredentials","isInternalRequest","headers","host","_req$headers$origin","origin","combinedHeaders","Array","from","Set","defaultFronteggHeaders","includes","setHeader","removeHeader","join","middlewarePromise","options","Promise","resolve","_req$url","fronteggUrlPath","rewritePath","url","fronteggPathRewrite","rewriteUrl","fronteggSSOPathRewrite","on","proxyOptions","target","process","env","session","getSession","accessToken","config","isHostedLogin","isFronteggLogoutUrl","sessionCookie","CookieManager","getSessionCookieFromRequest","tokens","getTokensFromCookie","ipResolver","cors","FronteggProxy","web","_extends2","default","FronteggApiMiddleware","exports","withOptions"],"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, FronteggMiddlewareOptions } from './types';\nimport config from '../config';\nimport { isFronteggLogoutUrl } from './helpers';\nimport CookieManager from '../utils/cookies';\nimport { getTokensFromCookie } from '../common';\n\nconst handleCors = (req: NextApiRequest, res: NextApiResponse, corsOptions?: CorsOptions) => {\n if (!corsOptions) return;\n\n const {\n allowedOrigins = ['*'],\n allowedMethods = ['GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'OPTIONS'],\n allowedHeaders = ['Content-Type', 'Authorization'],\n allowCredentials = true,\n } = corsOptions;\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\nconst middlewarePromise = (req: NextApiRequest, res: NextApiResponse, options?: FronteggMiddlewareOptions) =>\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 proxyOptions = {\n target: process.env['FRONTEGG_BASE_URL'],\n };\n if (process.env['FRONTEGG_TEST_URL'] && req.url == '/frontegg/middleware-test') {\n proxyOptions.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, res);\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\n if (options?.ipResolver) {\n config.ipResolver = options.ipResolver;\n }\n\n handleCors(req, res, options?.cors);\n\n FronteggProxy.web(req, res, {\n ...proxyOptions,\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.withOptions =\n (options: FronteggMiddlewareOptions) =>\n async (req: NextApiRequest, res: NextApiResponse): Promise<void> => {\n return await middlewarePromise(req, res, options);\n };\n\nexport { FronteggApiMiddleware };\n"],"mappings":";;;;;;;;AACA,IAAAA,cAAA,GAAAC,OAAA;AACA,IAAAC,UAAA,GAAAD,OAAA;AACA,IAAAE,QAAA,GAAAF,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AAEA,IAAAI,OAAA,GAAAC,sBAAA,CAAAL,OAAA;AAEA,IAAAM,QAAA,GAAAD,sBAAA,CAAAL,OAAA;AACA,IAAAO,OAAA,GAAAP,OAAA;AAEA,MAAMQ,UAAU,GAAGA,CAACC,GAAmB,EAAEC,GAAoB,EAAEC,WAAyB,KAAK;EAAA,IAAAC,iBAAA;EAC3F,IAAI,CAACD,WAAW,EAAE;EAElB,MAAM;IACJE,cAAc,GAAG,CAAC,GAAG,CAAC;IACtBC,cAAc,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC;IACrEC,cAAc,GAAG,CAAC,cAAc,EAAE,eAAe,CAAC;IAClDC,gBAAgB,GAAG;EACrB,CAAC,GAAGL,WAAW;EAEf,IAAI,IAAAM,0BAAiB,GAAAL,iBAAA,GAACH,GAAG,CAACS,OAAO,CAACC,IAAI,YAAAP,iBAAA,GAAI,EAAE,CAAC,EAAE;IAAA,IAAAQ,mBAAA;IAC7C,MAAMC,MAAM,IAAAD,mBAAA,GAAGX,GAAG,CAACS,OAAO,CAACG,MAAM,YAAAD,mBAAA,GAAI,EAAE;IACvC,MAAME,eAAe,GAAGC,KAAK,CAACC,IAAI,CAAC,IAAIC,GAAG,CAAC,CAAC,GAAGC,iCAAsB,EAAE,GAAGX,cAAc,CAAC,CAAC,CAAC;IAE3F,IAAIF,cAAc,CAACc,QAAQ,CAACN,MAAM,CAAC,EAAE;MACnCX,GAAG,CAACkB,SAAS,CAAC,6BAA6B,EAAEP,MAAM,CAAC;IACtD,CAAC,MAAM;MACLX,GAAG,CAACmB,YAAY,CAAC,6BAA6B,CAAC;IACjD;IAEAnB,GAAG,CAACkB,SAAS,CAAC,8BAA8B,EAAEd,cAAc,CAACgB,IAAI,CAAC,GAAG,CAAC,CAAC;IACvEpB,GAAG,CAACkB,SAAS,CAAC,8BAA8B,EAAEN,eAAe,CAACQ,IAAI,CAAC,GAAG,CAAC,CAAC;IACxEpB,GAAG,CAACkB,SAAS,CAAC,kCAAkC,EAAEZ,gBAAgB,GAAG,MAAM,GAAG,OAAO,CAAC;EACxF;AACF,CAAC;AAED,MAAMe,iBAAiB,GAAGA,CAACtB,GAAmB,EAAEC,GAAoB,EAAEsB,OAAmC,KACvG,IAAIC,OAAO,CAAO,MAAOC,OAAO,IAAK;EAAA,IAAAC,QAAA;EACnC,MAAMC,eAAe,GAAG,IAAAC,oBAAW,GAAAF,QAAA,GAAC1B,GAAG,CAAC6B,GAAG,YAAAH,QAAA,GAAI,GAAG,EAAEI,8BAAmB,CAAC;EACxE,MAAMC,UAAU,GAAG,IAAAH,oBAAW,EAACD,eAAe,WAAfA,eAAe,GAAI,GAAG,EAAEK,iCAAsB,CAAC;EAC9EhC,GAAG,CAAC6B,GAAG,GAAGE,UAAU;EACpB9B,GAAG,CAACgC,EAAE,CAAC,OAAO,EAAE,MAAMR,OAAO,CAAC,CAAC,CAAC;EAChC,MAAMS,YAAY,GAAG;IACnBC,MAAM,EAAEC,OAAO,CAACC,GAAG,CAAC,mBAAmB;EACzC,CAAC;EACD,IAAID,OAAO,CAACC,GAAG,CAAC,mBAAmB,CAAC,IAAIrC,GAAG,CAAC6B,GAAG,IAAI,2BAA2B,EAAE;IAC9EK,YAAY,CAACC,MAAM,GAAGC,OAAO,CAACC,GAAG,CAAC,mBAAmB,CAAC;EACxD;EACA,MAAM5B,OAA+B,GAAG,CAAC,CAAC;EAC1C,IAAI2B,OAAO,CAACC,GAAG,CAAC,6BAA6B,CAAC,KAAK,MAAM,EAAE;IACzD,MAAMC,OAAO,GAAG,MAAM,IAAAC,iBAAU,EAACvC,GAAG,EAAEC,GAAG,CAAC;IAC1C,IAAIqC,OAAO,YAAPA,OAAO,CAAEE,WAAW,EAAE;MACxB/B,OAAO,CAAC,eAAe,CAAC,GAAG,SAAS,GAAG6B,OAAO,CAACE,WAAW;IAC5D;EACF;EAEA,IAAIC,eAAM,CAACC,aAAa,IAAI,IAAAC,4BAAmB,EAAC3C,GAAG,CAAC6B,GAAG,IAAI,EAAE,CAAC,IAAI,CAACpB,OAAO,CAAC,eAAe,CAAC,EAAE;IAC3F,MAAMmC,aAAa,GAAGC,gBAAa,CAACC,2BAA2B,CAAC9C,GAAG,CAAC;IACpE,MAAM+C,MAAM,GAAG,MAAM,IAAAC,2BAAmB,EAACJ,aAAa,CAAC;IACvD,IAAIG,MAAM,YAANA,MAAM,CAAEP,WAAW,EAAE;MACvB/B,OAAO,CAAC,eAAe,CAAC,GAAG,SAAS,GAAGsC,MAAM,CAACP,WAAW;IAC3D;EACF;EAEA,IAAIjB,OAAO,YAAPA,OAAO,CAAE0B,UAAU,EAAE;IACvBR,eAAM,CAACQ,UAAU,GAAG1B,OAAO,CAAC0B,UAAU;EACxC;EAEAlD,UAAU,CAACC,GAAG,EAAEC,GAAG,EAAEsB,OAAO,oBAAPA,OAAO,CAAE2B,IAAI,CAAC;EAEnCC,4BAAa,CAACC,GAAG,CAACpD,GAAG,EAAEC,GAAG,MAAAoD,SAAA,CAAAC,OAAA,MACrBpB,YAAY;IACfzB;EAAO,EACR,CAAC;AACJ,CAAC,CAAC;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA,MAAM8C,qBAAgD,GAAI,MAAAA,CACxDvD,GAAmB,EACnBC,GAAoB,KACF;EAClB,OAAO,MAAMqB,iBAAiB,CAACtB,GAAG,EAAEC,GAAG,CAAC;AAC1C,CAA+B;AAACuD,OAAA,CAAAD,qBAAA,GAAAA,qBAAA;AAEhCA,qBAAqB,CAACE,WAAW,GAC9BlC,OAAkC,IACnC,OAAOvB,GAAmB,EAAEC,GAAoB,KAAoB;EAClE,OAAO,MAAMqB,iBAAiB,CAACtB,GAAG,EAAEC,GAAG,EAAEsB,OAAO,CAAC;AACnD,CAAC","ignoreList":[]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@frontegg/nextjs",
3
3
  "libName": "FronteggNextJs",
4
- "version": "9.2.10",
4
+ "version": "9.2.11-alpha.18744232867",
5
5
  "author": "Frontegg LTD",
6
6
  "license": "MIT",
7
7
  "repository": {
@@ -3,7 +3,18 @@ import type { GetServerSidePropsContext, GetServerSidePropsResult } from 'next';
3
3
  import type { ParsedUrlQuery } from 'querystring';
4
4
  import type { FronteggNextJSSession, RequestType } from '../types';
5
5
  import { ServerResponse } from 'http';
6
- export declare const getSession: (req: RequestType, res?: ServerResponse) => Promise<FronteggNextJSSession | undefined>;
6
+ /**
7
+ * Retrieves the Frontegg session from Next.js request and response objects.
8
+ *
9
+ * @param req - The Next.js request object containing incoming HTTP request data
10
+ * @param res - The Next.js response object (or undefined). This parameter is required and must be explicitly passed.
11
+ * It will be non-null in cases where there are sequential redirects or multiple getInitialProps
12
+ * executions within a single page visit — for example, when middlewares or getServerSideProps
13
+ * functions are concatenated.
14
+ *
15
+ * @returns The Frontegg session if available, or undefined if no session exists
16
+ */
17
+ export declare const getSession: (req: RequestType, res: ServerResponse | undefined) => Promise<FronteggNextJSSession | undefined>;
7
18
  export declare function withSSRSession<P extends {
8
19
  [key: string]: any;
9
20
  } = {
package/pages/helpers.js CHANGED
@@ -12,6 +12,17 @@ var _cookies = _interopRequireDefault(require("../utils/cookies"));
12
12
  var _createSession = _interopRequireDefault(require("../utils/createSession"));
13
13
  var _encryption = _interopRequireDefault(require("../utils/encryption"));
14
14
  var _helpers = require("../utils/refreshAccessTokenIfNeeded/helpers");
15
+ /**
16
+ * Retrieves the Frontegg session from Next.js request and response objects.
17
+ *
18
+ * @param req - The Next.js request object containing incoming HTTP request data
19
+ * @param res - The Next.js response object (or undefined). This parameter is required and must be explicitly passed.
20
+ * It will be non-null in cases where there are sequential redirects or multiple getInitialProps
21
+ * executions within a single page visit — for example, when middlewares or getServerSideProps
22
+ * functions are concatenated.
23
+ *
24
+ * @returns The Frontegg session if available, or undefined if no session exists
25
+ */
15
26
  const getSession = (req, res) => {
16
27
  if (res && (0, _helpers.hasSetSessionCookie)(res.getHeader('set-cookie'))) {
17
28
  const cookies = _cookies.default.getSessionCookieFromRedirectedResponse(res);
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","names":["_routing","require","_config","_interopRequireDefault","_cookies","_createSession","_encryption","_helpers","getSession","req","res","hasSetSessionCookie","getHeader","cookies","CookieManager","getSessionCookieFromRedirectedResponse","createSession","encryption","getSessionCookieFromRequest","exports","withSSRSession","handler","context","session","_config$authRoutes$lo","_context$resolvedUrl","loginUrl","config","authRoutes","defaultFronteggRoutes","startsWith","fullUrl","URL","appUrl","resolvedUrl","urlSearchParams","searchParams","set","url","redirect","permanent","destination","toString","props"],"sources":["../../../../packages/nextjs/src/pages/helpers.ts"],"sourcesContent":["import { defaultFronteggRoutes } from '../utils/routing';\nimport type { GetServerSidePropsContext, GetServerSidePropsResult } from 'next';\nimport type { ParsedUrlQuery } from 'querystring';\nimport type { FronteggNextJSSession, RequestType } from '../types';\nimport config from '../config';\nimport CookieManager from '../utils/cookies';\nimport createSession from '../utils/createSession';\nimport encryption from '../utils/encryption';\nimport { hasSetSessionCookie } from '../utils/refreshAccessTokenIfNeeded/helpers';\nimport { NextResponse } from 'next/server';\nimport { ServerResponse } from 'http';\n\nexport const getSession = (req: RequestType, res?: ServerResponse) => {\n if (res && hasSetSessionCookie(res.getHeader('set-cookie'))) {\n const cookies = CookieManager.getSessionCookieFromRedirectedResponse(res);\n return createSession(cookies, encryption);\n }\n const cookies = CookieManager.getSessionCookieFromRequest(req);\n return createSession(cookies, encryption);\n};\n\nexport function withSSRSession<\n P extends { [key: string]: any } = { [key: string]: any },\n Q extends ParsedUrlQuery = ParsedUrlQuery\n>(\n handler: (\n context: GetServerSidePropsContext<Q>,\n session: FronteggNextJSSession\n ) => GetServerSidePropsResult<P> | Promise<GetServerSidePropsResult<P>>\n) {\n return async (context: GetServerSidePropsContext<Q>): Promise<GetServerSidePropsResult<P>> => {\n const session = await getSession(context.req, context.res);\n if (session) {\n return handler(context, session);\n } else {\n let loginUrl = config.authRoutes.loginUrl ?? defaultFronteggRoutes.loginUrl;\n\n if (!loginUrl.startsWith('/')) {\n loginUrl = `/${loginUrl}`;\n }\n\n const fullUrl = new URL(config.appUrl + context.resolvedUrl);\n const urlSearchParams = fullUrl.searchParams;\n urlSearchParams.set('redirectUrl', context.resolvedUrl ?? context.req.url);\n\n return {\n redirect: {\n permanent: false,\n destination: `${loginUrl}?${urlSearchParams.toString()}`,\n },\n props: {},\n } as GetServerSidePropsResult<P>;\n }\n };\n}\n"],"mappings":";;;;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AAIA,IAAAC,OAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,QAAA,GAAAD,sBAAA,CAAAF,OAAA;AACA,IAAAI,cAAA,GAAAF,sBAAA,CAAAF,OAAA;AACA,IAAAK,WAAA,GAAAH,sBAAA,CAAAF,OAAA;AACA,IAAAM,QAAA,GAAAN,OAAA;AAIO,MAAMO,UAAU,GAAGA,CAACC,GAAgB,EAAEC,GAAoB,KAAK;EACpE,IAAIA,GAAG,IAAI,IAAAC,4BAAmB,EAACD,GAAG,CAACE,SAAS,CAAC,YAAY,CAAC,CAAC,EAAE;IAC3D,MAAMC,OAAO,GAAGC,gBAAa,CAACC,sCAAsC,CAACL,GAAG,CAAC;IACzE,OAAO,IAAAM,sBAAa,EAACH,OAAO,EAAEI,mBAAU,CAAC;EAC3C;EACA,MAAMJ,OAAO,GAAGC,gBAAa,CAACI,2BAA2B,CAACT,GAAG,CAAC;EAC9D,OAAO,IAAAO,sBAAa,EAACH,OAAO,EAAEI,mBAAU,CAAC;AAC3C,CAAC;AAACE,OAAA,CAAAX,UAAA,GAAAA,UAAA;AAEK,SAASY,cAAcA,CAI5BC,OAGuE,EACvE;EACA,OAAO,MAAOC,OAAqC,IAA2C;IAC5F,MAAMC,OAAO,GAAG,MAAMf,UAAU,CAACc,OAAO,CAACb,GAAG,EAAEa,OAAO,CAACZ,GAAG,CAAC;IAC1D,IAAIa,OAAO,EAAE;MACX,OAAOF,OAAO,CAACC,OAAO,EAAEC,OAAO,CAAC;IAClC,CAAC,MAAM;MAAA,IAAAC,qBAAA,EAAAC,oBAAA;MACL,IAAIC,QAAQ,IAAAF,qBAAA,GAAGG,eAAM,CAACC,UAAU,CAACF,QAAQ,YAAAF,qBAAA,GAAIK,8BAAqB,CAACH,QAAQ;MAE3E,IAAI,CAACA,QAAQ,CAACI,UAAU,CAAC,GAAG,CAAC,EAAE;QAC7BJ,QAAQ,GAAG,IAAIA,QAAQ,EAAE;MAC3B;MAEA,MAAMK,OAAO,GAAG,IAAIC,GAAG,CAACL,eAAM,CAACM,MAAM,GAAGX,OAAO,CAACY,WAAW,CAAC;MAC5D,MAAMC,eAAe,GAAGJ,OAAO,CAACK,YAAY;MAC5CD,eAAe,CAACE,GAAG,CAAC,aAAa,GAAAZ,oBAAA,GAAEH,OAAO,CAACY,WAAW,YAAAT,oBAAA,GAAIH,OAAO,CAACb,GAAG,CAAC6B,GAAG,CAAC;MAE1E,OAAO;QACLC,QAAQ,EAAE;UACRC,SAAS,EAAE,KAAK;UAChBC,WAAW,EAAE,GAAGf,QAAQ,IAAIS,eAAe,CAACO,QAAQ,CAAC,CAAC;QACxD,CAAC;QACDC,KAAK,EAAE,CAAC;MACV,CAAC;IACH;EACF,CAAC;AACH","ignoreList":[]}
1
+ {"version":3,"file":"helpers.js","names":["_routing","require","_config","_interopRequireDefault","_cookies","_createSession","_encryption","_helpers","getSession","req","res","hasSetSessionCookie","getHeader","cookies","CookieManager","getSessionCookieFromRedirectedResponse","createSession","encryption","getSessionCookieFromRequest","exports","withSSRSession","handler","context","session","_config$authRoutes$lo","_context$resolvedUrl","loginUrl","config","authRoutes","defaultFronteggRoutes","startsWith","fullUrl","URL","appUrl","resolvedUrl","urlSearchParams","searchParams","set","url","redirect","permanent","destination","toString","props"],"sources":["../../../../packages/nextjs/src/pages/helpers.ts"],"sourcesContent":["import { defaultFronteggRoutes } from '../utils/routing';\nimport type { GetServerSidePropsContext, GetServerSidePropsResult } from 'next';\nimport type { ParsedUrlQuery } from 'querystring';\nimport type { FronteggNextJSSession, RequestType } from '../types';\nimport config from '../config';\nimport CookieManager from '../utils/cookies';\nimport createSession from '../utils/createSession';\nimport encryption from '../utils/encryption';\nimport { hasSetSessionCookie } from '../utils/refreshAccessTokenIfNeeded/helpers';\nimport { NextResponse } from 'next/server';\nimport { ServerResponse } from 'http';\n\n/**\n * Retrieves the Frontegg session from Next.js request and response objects.\n *\n * @param req - The Next.js request object containing incoming HTTP request data\n * @param res - The Next.js response object (or undefined). This parameter is required and must be explicitly passed.\n * It will be non-null in cases where there are sequential redirects or multiple getInitialProps\n * executions within a single page visit — for example, when middlewares or getServerSideProps\n * functions are concatenated.\n *\n * @returns The Frontegg session if available, or undefined if no session exists\n */\nexport const getSession = (req: RequestType, res: ServerResponse | undefined) => {\n if (res && hasSetSessionCookie(res.getHeader('set-cookie'))) {\n const cookies = CookieManager.getSessionCookieFromRedirectedResponse(res);\n return createSession(cookies, encryption);\n }\n const cookies = CookieManager.getSessionCookieFromRequest(req);\n return createSession(cookies, encryption);\n};\n\nexport function withSSRSession<\n P extends { [key: string]: any } = { [key: string]: any },\n Q extends ParsedUrlQuery = ParsedUrlQuery\n>(\n handler: (\n context: GetServerSidePropsContext<Q>,\n session: FronteggNextJSSession\n ) => GetServerSidePropsResult<P> | Promise<GetServerSidePropsResult<P>>\n) {\n return async (context: GetServerSidePropsContext<Q>): Promise<GetServerSidePropsResult<P>> => {\n const session = await getSession(context.req, context.res);\n if (session) {\n return handler(context, session);\n } else {\n let loginUrl = config.authRoutes.loginUrl ?? defaultFronteggRoutes.loginUrl;\n\n if (!loginUrl.startsWith('/')) {\n loginUrl = `/${loginUrl}`;\n }\n\n const fullUrl = new URL(config.appUrl + context.resolvedUrl);\n const urlSearchParams = fullUrl.searchParams;\n urlSearchParams.set('redirectUrl', context.resolvedUrl ?? context.req.url);\n\n return {\n redirect: {\n permanent: false,\n destination: `${loginUrl}?${urlSearchParams.toString()}`,\n },\n props: {},\n } as GetServerSidePropsResult<P>;\n }\n };\n}\n"],"mappings":";;;;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AAIA,IAAAC,OAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,QAAA,GAAAD,sBAAA,CAAAF,OAAA;AACA,IAAAI,cAAA,GAAAF,sBAAA,CAAAF,OAAA;AACA,IAAAK,WAAA,GAAAH,sBAAA,CAAAF,OAAA;AACA,IAAAM,QAAA,GAAAN,OAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMO,UAAU,GAAGA,CAACC,GAAgB,EAAEC,GAA+B,KAAK;EAC/E,IAAIA,GAAG,IAAI,IAAAC,4BAAmB,EAACD,GAAG,CAACE,SAAS,CAAC,YAAY,CAAC,CAAC,EAAE;IAC3D,MAAMC,OAAO,GAAGC,gBAAa,CAACC,sCAAsC,CAACL,GAAG,CAAC;IACzE,OAAO,IAAAM,sBAAa,EAACH,OAAO,EAAEI,mBAAU,CAAC;EAC3C;EACA,MAAMJ,OAAO,GAAGC,gBAAa,CAACI,2BAA2B,CAACT,GAAG,CAAC;EAC9D,OAAO,IAAAO,sBAAa,EAACH,OAAO,EAAEI,mBAAU,CAAC;AAC3C,CAAC;AAACE,OAAA,CAAAX,UAAA,GAAAA,UAAA;AAEK,SAASY,cAAcA,CAI5BC,OAGuE,EACvE;EACA,OAAO,MAAOC,OAAqC,IAA2C;IAC5F,MAAMC,OAAO,GAAG,MAAMf,UAAU,CAACc,OAAO,CAACb,GAAG,EAAEa,OAAO,CAACZ,GAAG,CAAC;IAC1D,IAAIa,OAAO,EAAE;MACX,OAAOF,OAAO,CAACC,OAAO,EAAEC,OAAO,CAAC;IAClC,CAAC,MAAM;MAAA,IAAAC,qBAAA,EAAAC,oBAAA;MACL,IAAIC,QAAQ,IAAAF,qBAAA,GAAGG,eAAM,CAACC,UAAU,CAACF,QAAQ,YAAAF,qBAAA,GAAIK,8BAAqB,CAACH,QAAQ;MAE3E,IAAI,CAACA,QAAQ,CAACI,UAAU,CAAC,GAAG,CAAC,EAAE;QAC7BJ,QAAQ,GAAG,IAAIA,QAAQ,EAAE;MAC3B;MAEA,MAAMK,OAAO,GAAG,IAAIC,GAAG,CAACL,eAAM,CAACM,MAAM,GAAGX,OAAO,CAACY,WAAW,CAAC;MAC5D,MAAMC,eAAe,GAAGJ,OAAO,CAACK,YAAY;MAC5CD,eAAe,CAACE,GAAG,CAAC,aAAa,GAAAZ,oBAAA,GAAEH,OAAO,CAACY,WAAW,YAAAT,oBAAA,GAAIH,OAAO,CAACb,GAAG,CAAC6B,GAAG,CAAC;MAE1E,OAAO;QACLC,QAAQ,EAAE;UACRC,SAAS,EAAE,KAAK;UAChBC,WAAW,EAAE,GAAGf,QAAQ,IAAIS,eAAe,CAACO,QAAQ,CAAC,CAAC;QACxD,CAAC;QACDC,KAAK,EAAE,CAAC;MACV,CAAC;IACH;EACF,CAAC;AACH","ignoreList":[]}
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.10'
8
+ version: '9.2.11-alpha.18744232867'
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.10' };\n"],"mappings":";;;;;;iCAAe;EAAEA,OAAO,EAAE;AAAS,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"sdkVersion.js","names":["version"],"sources":["../../../packages/nextjs/src/sdkVersion.ts"],"sourcesContent":["export default { version: '9.2.11-alpha.18744232867' };\n"],"mappings":";;;;;;iCAAe;EAAEA,OAAO,EAAE;AAA2B,CAAC","ignoreList":[]}