@frontegg/nextjs 9.2.10 → 9.2.11-alpha.19798105448

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,25 @@
1
1
  # Change Log
2
2
 
3
+ ## [9.2.11](https://github.com/frontegg/frontegg-nextjs/compare/v9.2.10...v9.2.11) (2025-11-30)
4
+
5
+ - FR-22193 - Added admin portal support for searching by username, email, name, etc. in the users table
6
+
7
+ <!-- CURSOR_SUMMARY -->
8
+ ---
9
+
10
+ > [!NOTE]
11
+ > Updates @frontegg/js and @frontegg/react-hooks to 7.93.0 and refreshes related lockfile entries.
12
+ >
13
+ > - **Dependencies**:
14
+ > - Bump `@frontegg/js` and `@frontegg/react-hooks` to `7.93.0` in `packages/nextjs/package.json`.
15
+ > - Update related Frontegg entries in `yarn.lock` (`@frontegg/types`, `@frontegg/redux-store`, `@frontegg/rest-api`) to `7.93.0`.
16
+ >
17
+ > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 5e41e46c4b54adeb7957e68544a9f317b3a82202. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup>
18
+ <!-- /CURSOR_SUMMARY -->
19
+
20
+ ### NextJS Wrapper 9.2.11:
21
+ - FR-22443 Enhance getSession function to require response object
22
+
3
23
  ## [9.2.10](https://github.com/frontegg/frontegg-nextjs/compare/v9.2.9...v9.2.10) (2025-10-19)
4
24
 
5
25
 
package/index.js CHANGED
@@ -1,4 +1,4 @@
1
- /** @license Frontegg v9.2.10
1
+ /** @license Frontegg v9.2.11-alpha.19798105448
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":"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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.10",
4
+ "version": "9.2.11-alpha.19798105448",
5
5
  "author": "Frontegg LTD",
6
6
  "license": "MIT",
7
7
  "repository": {
@@ -27,8 +27,8 @@
27
27
  "lint-json": "eslint -c .eslintrc.json -o ./lint-report.json --format json --no-color ./src/**/*.{ts,tsx}"
28
28
  },
29
29
  "dependencies": {
30
- "@frontegg/js": "7.92.0",
31
- "@frontegg/react-hooks": "7.92.0",
30
+ "@frontegg/js": "7.93.0",
31
+ "@frontegg/react-hooks": "7.93.0",
32
32
  "http-proxy": "^1.18.1",
33
33
  "iron-session": "^6.3.1",
34
34
  "jose": "^4.12.2"
@@ -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.19798105448'
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.19798105448' };\n"],"mappings":";;;;;;iCAAe;EAAEA,OAAO,EAAE;AAA2B,CAAC","ignoreList":[]}