@frontegg/nextjs 9.0.4 → 9.0.5-alpha.11469892684

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.
Files changed (50) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/README.md +29 -8
  3. package/api/utils.js +24 -1
  4. package/api/utils.js.map +1 -1
  5. package/app/FronteggAppProvider.js +1 -1
  6. package/app/FronteggAppProvider.js.map +1 -1
  7. package/app/FronteggAppRouter.d.ts +7 -0
  8. package/app/FronteggAppRouter.js +25 -0
  9. package/app/FronteggAppRouter.js.map +1 -1
  10. package/app/getAppUrlForCustomLoginWithSubdomain.js +1 -1
  11. package/app/getAppUrlForCustomLoginWithSubdomain.js.map +1 -1
  12. package/app/helpers.d.ts +8 -2
  13. package/app/helpers.js +56 -11
  14. package/app/helpers.js.map +1 -1
  15. package/common/FronteggBaseProvider.js +4 -2
  16. package/common/FronteggBaseProvider.js.map +1 -1
  17. package/common/hooks.js +5 -2
  18. package/common/hooks.js.map +1 -1
  19. package/config/constants.d.ts +21 -0
  20. package/config/constants.js +4 -0
  21. package/config/constants.js.map +1 -1
  22. package/config/index.d.ts +3 -0
  23. package/config/index.js +37 -5
  24. package/config/index.js.map +1 -1
  25. package/edge/getSessionOnEdge.js +22 -5
  26. package/edge/getSessionOnEdge.js.map +1 -1
  27. package/index.js +1 -1
  28. package/middleware/ProxyRequestCallback.js +13 -13
  29. package/middleware/ProxyRequestCallback.js.map +1 -1
  30. package/no-ssr/FronteggProviderNoSSR.js +1 -1
  31. package/no-ssr/FronteggProviderNoSSR.js.map +1 -1
  32. package/package.json +1 -1
  33. package/pages/withFronteggApp/withFronteggApp.js +3 -1
  34. package/pages/withFronteggApp/withFronteggApp.js.map +1 -1
  35. package/sdkVersion.js +1 -1
  36. package/sdkVersion.js.map +1 -1
  37. package/types/index.d.ts +1 -0
  38. package/types/index.js.map +1 -1
  39. package/utils/cookies/helpers.js +7 -1
  40. package/utils/cookies/helpers.js.map +1 -1
  41. package/utils/cookies/index.js +32 -4
  42. package/utils/cookies/index.js.map +1 -1
  43. package/utils/fetchUserData/index.js +4 -0
  44. package/utils/fetchUserData/index.js.map +1 -1
  45. package/utils/initializeFronteggApp/index.js +2 -1
  46. package/utils/initializeFronteggApp/index.js.map +1 -1
  47. package/utils/refreshAccessTokenIfNeeded/helpers.js +6 -0
  48. package/utils/refreshAccessTokenIfNeeded/helpers.js.map +1 -1
  49. package/utils/refreshAccessTokenIfNeeded/index.js +5 -4
  50. package/utils/refreshAccessTokenIfNeeded/index.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","names":["EnvVariables","exports"],"sources":["../../../../packages/nextjs/src/config/constants.ts"],"sourcesContent":["export enum EnvVariables {\n /**\n * The AppUrl is to tell Frontegg your application's app url\n * for generating cookies and proxy http requests\n */\n FRONTEGG_APP_URL = 'FRONTEGG_APP_URL',\n /**\n * The Frontegg domain is your unique URL to connect to the Frontegg gateway, get it by visit:\n * - For Dev environment [visit](https://portal.frontegg.com/development/settings/domains)\n * - For Prod environment [visit](https://portal.frontegg.com/production/settings/domains)\n */\n FRONTEGG_BASE_URL = 'FRONTEGG_BASE_URL',\n /**\n * The Frontegg test domain used for testing proxy middleware\n * @private for Frontegg\n */\n FRONTEGG_TEST_URL = 'FRONTEGG_TEST_URL',\n\n /**\n * Your Frontegg application's Client ID, get it by visit:\n * - For Dev environment [visit](https://portal.frontegg.com/development/settings/general)\n * - For Prod environment [visit](https://portal.frontegg.com/production/settings/general)\n */\n FRONTEGG_CLIENT_ID = 'FRONTEGG_CLIENT_ID',\n\n /**\n * Your Frontegg application's Client Secret, get it by visit:\n * - For Dev environment [visit](https://portal.frontegg.com/development/settings/general)\n * - For Prod environment [visit](https://portal.frontegg.com/production/settings/general)\n */\n FRONTEGG_CLIENT_SECRET = 'FRONTEGG_CLIENT_SECRET',\n\n /**\n * The stateless session encryption password, used to encrypt\n * JWT before sending it to the client side.\n *\n * For quick password generation use the following command:\n *\n * ```sh\n * node -e \"console.log(crypto.randomBytes(32).toString('hex'))\"\n * ```\n */\n FRONTEGG_ENCRYPTION_PASSWORD = 'FRONTEGG_ENCRYPTION_PASSWORD',\n\n /**\n * The JWT public key generated by frontegg, to verify JWT before create session,\n * get it by visit: https://[YOUR_FRONTEGG_FOMAIN]/.well-known/jwks.json.\n *\n * Then: Copy and Paste the first key from the response:\n * {keys: [{__KEY__}]}\n */\n FRONTEGG_JWT_PUBLIC_KEY = 'FRONTEGG_JWT_PUBLIC_KEY',\n\n /**\n * The stateless cookie name for storing the encrypted JWT\n * value as session cookies for supporting getServerSideProps and ServerComponents\n */\n FRONTEGG_COOKIE_NAME = 'FRONTEGG_COOKIE_NAME',\n\n /**\n * When `true`, the initial props will not refresh access token if it's valid.\n */\n DISABLE_INITIAL_PROPS_REFRESH_TOKEN = 'DISABLE_INITIAL_PROPS_REFRESH_TOKEN',\n\n /**\n * Enable secure JWT by removing the signature from the JWT token.\n * In order to enable this feature, you need to provide {@link EnvVariables.FRONTEGG_CLIENT_SECRET}\n */\n FRONTEGG_SECURE_JWT_ENABLED = 'FRONTEGG_SECURE_JWT_ENABLED',\n\n /**\n * The Frontegg Hosted Login URL, used to redirect the user to the Frontegg login page\n * set to 'true' to enable the hosted login feature\n */\n FRONTEGG_HOSTED_LOGIN = 'FRONTEGG_HOSTED_LOGIN',\n\n /**\n * Forward client IP address to Frontegg gateway, used to detect the client's IP address\n * when the Next.js application using frontegg middleware proxy service\n * In order to enable this feature, you need to provide {@link EnvVariables.FRONTEGG_CLIENT_SECRET}\n */\n FRONTEGG_FORWARD_IP = 'FRONTEGG_FORWARD_IP',\n /**\n * This Env variable assign automatically when deploying you Next.js application\n * to Vercel deployments service, and will be used to detect to dynamically configure\n * the {@link EnvVariables.FRONTEGG_APP_URL}\n *\n * @see [Vercel Environment Variables](https://vercel.com/docs/concepts/projects/environment-variables#system-environment-variables)\n */\n VERCEL = 'VERCEL',\n VERCEL_URL = 'VERCEL_URL',\n}\n"],"mappings":";;;;;;IAAYA,YAAY,0BAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAA,OAAZA,YAAY;AAAA;AAAAC,OAAA,CAAAD,YAAA,GAAAA,YAAA"}
1
+ {"version":3,"file":"constants.js","names":["EnvVariables","exports"],"sources":["../../../../packages/nextjs/src/config/constants.ts"],"sourcesContent":["export enum EnvVariables {\n /**\n * The AppUrl is to tell Frontegg your application's app url\n * for generating cookies and proxy http requests\n */\n FRONTEGG_APP_URL = 'FRONTEGG_APP_URL',\n /**\n * The Frontegg domain is your unique URL to connect to the Frontegg gateway, get it by visit:\n * - For Dev environment [visit](https://portal.frontegg.com/development/settings/domains)\n * - For Prod environment [visit](https://portal.frontegg.com/production/settings/domains)\n */\n FRONTEGG_BASE_URL = 'FRONTEGG_BASE_URL',\n /**\n * The Frontegg test domain used for testing proxy middleware\n * @private for Frontegg\n */\n FRONTEGG_TEST_URL = 'FRONTEGG_TEST_URL',\n\n /**\n * Your Frontegg application's Client ID, get it by visit:\n * - For Dev environment [visit](https://portal.frontegg.com/development/settings/general)\n * - For Prod environment [visit](https://portal.frontegg.com/production/settings/general)\n */\n FRONTEGG_CLIENT_ID = 'FRONTEGG_CLIENT_ID',\n\n /**\n * Your Frontegg application ID, get it by visit:\n * - For Dev environment [visit](https://portal.frontegg.com/development/applications)\n * - For Prod environment [visit](https://portal.frontegg.com/production/applications)\n */\n FRONTEGG_APP_ID = 'FRONTEGG_APP_ID',\n\n /**\n * Rewrite the cookie name by the Frontegg application ID\n * to support multiple Frontegg applications with same domain\n */\n FRONTEGG_REWRITE_COOKIE_BY_APP_ID = 'FRONTEGG_REWRITE_COOKIE_BY_APP_ID',\n\n /**\n * Your Frontegg application's Client Secret, get it by visit:\n * - For Dev environment [visit](https://portal.frontegg.com/development/settings/general)\n * - For Prod environment [visit](https://portal.frontegg.com/production/settings/general)\n */\n FRONTEGG_CLIENT_SECRET = 'FRONTEGG_CLIENT_SECRET',\n\n /**\n * The stateless session encryption password, used to encrypt\n * JWT before sending it to the client side.\n *\n * For quick password generation use the following command:\n *\n * ```sh\n * node -e \"console.log(crypto.randomBytes(32).toString('hex'))\"\n * ```\n */\n FRONTEGG_ENCRYPTION_PASSWORD = 'FRONTEGG_ENCRYPTION_PASSWORD',\n\n /**\n * The JWT public key generated by frontegg, to verify JWT before create session,\n * get it by visit: https://[YOUR_FRONTEGG_FOMAIN]/.well-known/jwks.json.\n *\n * Then: Copy and Paste the first key from the response:\n * {keys: [{__KEY__}]}\n */\n FRONTEGG_JWT_PUBLIC_KEY = 'FRONTEGG_JWT_PUBLIC_KEY',\n\n /**\n * The stateless cookie name for storing the encrypted JWT\n * value as session cookies for supporting getServerSideProps and ServerComponents\n */\n FRONTEGG_COOKIE_NAME = 'FRONTEGG_COOKIE_NAME',\n\n /**\n * The stateless cookie domain for storing the encrypted JWT\n * value as session cookies for supporting getServerSideProps and ServerComponents\n */\n FRONTEGG_COOKIE_DOMAIN = 'FRONTEGG_COOKIE_DOMAIN',\n\n /**\n * The stateless cookie same site value for storing the encrypted JWT\n * default is none, you can set it to 'lax' or 'strict' for more security\n */\n FRONTEGG_COOKIE_SAME_SITE = 'FRONTEGG_COOKIE_SAME_SITE',\n\n /**\n * When `true`, the initial props will not refresh access token if it's valid.\n */\n DISABLE_INITIAL_PROPS_REFRESH_TOKEN = 'DISABLE_INITIAL_PROPS_REFRESH_TOKEN',\n\n /**\n * Enable secure JWT by removing the signature from the JWT token.\n * In order to enable this feature, you need to provide {@link EnvVariables.FRONTEGG_CLIENT_SECRET}\n */\n FRONTEGG_SECURE_JWT_ENABLED = 'FRONTEGG_SECURE_JWT_ENABLED',\n\n /**\n * The Frontegg Hosted Login URL, used to redirect the user to the Frontegg login page\n * set to 'true' to enable the hosted login feature\n */\n FRONTEGG_HOSTED_LOGIN = 'FRONTEGG_HOSTED_LOGIN',\n\n /**\n * Forward client IP address to Frontegg gateway, used to detect the client's IP address\n * when the Next.js application using frontegg middleware proxy service\n * In order to enable this feature, you need to provide {@link EnvVariables.FRONTEGG_CLIENT_SECRET}\n */\n FRONTEGG_FORWARD_IP = 'FRONTEGG_FORWARD_IP',\n /**\n * This Env variable assign automatically when deploying you Next.js application\n * to Vercel deployments service, and will be used to detect to dynamically configure\n * the {@link EnvVariables.FRONTEGG_APP_URL}\n *\n * @see [Vercel Environment Variables](https://vercel.com/docs/concepts/projects/environment-variables#system-environment-variables)\n */\n VERCEL = 'VERCEL',\n VERCEL_URL = 'VERCEL_URL',\n}\n"],"mappings":";;;;;;IAAYA,YAAY,0BAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAA,OAAZA,YAAY;AAAA;AAAAC,OAAA,CAAAD,YAAA,GAAAA,YAAA"}
package/config/index.d.ts CHANGED
@@ -9,11 +9,14 @@ declare class Config {
9
9
  get baseUrl(): string;
10
10
  get baseUrlHost(): string;
11
11
  get clientId(): string;
12
+ get appId(): string | undefined;
13
+ get rewriteCookieByAppId(): boolean;
12
14
  get clientSecret(): string | undefined;
13
15
  get jwtPublicKeyJson(): string | undefined;
14
16
  get secureJwtEnabled(): string | undefined;
15
17
  get cookieName(): string;
16
18
  get cookieDomain(): string;
19
+ get cookieSameSite(): 'lax' | 'strict' | 'none';
17
20
  get authRoutes(): Partial<AuthPageRoutes>;
18
21
  private validatePassword;
19
22
  get password(): PasswordsMap;
package/config/index.js CHANGED
@@ -18,9 +18,13 @@ const setupEnvVariables = {
18
18
  FRONTEGG_BASE_URL: process.env.FRONTEGG_BASE_URL,
19
19
  FRONTEGG_TEST_URL: process.env.FRONTEGG_TEST_URL,
20
20
  FRONTEGG_CLIENT_ID: process.env.FRONTEGG_CLIENT_ID,
21
+ FRONTEGG_APP_ID: process.env.FRONTEGG_APP_ID,
22
+ FRONTEGG_REWRITE_COOKIE_BY_APP_ID: process.env.FRONTEGG_REWRITE_COOKIE_BY_APP_ID,
21
23
  FRONTEGG_CLIENT_SECRET: process.env.FRONTEGG_CLIENT_SECRET,
22
24
  FRONTEGG_ENCRYPTION_PASSWORD: process.env.FRONTEGG_ENCRYPTION_PASSWORD,
23
25
  FRONTEGG_COOKIE_NAME: process.env.FRONTEGG_COOKIE_NAME,
26
+ FRONTEGG_COOKIE_DOMAIN: process.env.FRONTEGG_COOKIE_DOMAIN,
27
+ FRONTEGG_COOKIE_SAME_SITE: process.env.FRONTEGG_COOKIE_SAME_SITE,
24
28
  FRONTEGG_JWT_PUBLIC_KEY: process.env.FRONTEGG_JWT_PUBLIC_KEY,
25
29
  FRONTEGG_SECURE_JWT_ENABLED: process.env.FRONTEGG_SECURE_JWT_ENABLED,
26
30
  DISABLE_INITIAL_PROPS_REFRESH_TOKEN: process.env.DISABLE_INITIAL_PROPS_REFRESH_TOKEN,
@@ -55,6 +59,13 @@ class Config {
55
59
  var _getEnv2;
56
60
  return (_getEnv2 = (0, _helpers.getEnv)(_constants.EnvVariables.FRONTEGG_CLIENT_ID)) != null ? _getEnv2 : setupEnvVariables.FRONTEGG_CLIENT_ID;
57
61
  }
62
+ get appId() {
63
+ return (0, _helpers.getEnvOrDefault)(_constants.EnvVariables.FRONTEGG_APP_ID, setupEnvVariables.FRONTEGG_APP_ID);
64
+ }
65
+ get rewriteCookieByAppId() {
66
+ var _setupEnvVariables$FR;
67
+ return (0, _helpers.getEnvOrDefault)(_constants.EnvVariables.FRONTEGG_REWRITE_COOKIE_BY_APP_ID, (_setupEnvVariables$FR = setupEnvVariables.FRONTEGG_REWRITE_COOKIE_BY_APP_ID) != null ? _setupEnvVariables$FR : 'false') === 'true';
68
+ }
58
69
  get clientSecret() {
59
70
  let clientSecret = undefined;
60
71
  try {
@@ -80,12 +91,33 @@ class Config {
80
91
  }
81
92
  }
82
93
  get cookieName() {
83
- var _setupEnvVariables$FR;
84
- const cookieNameEnv = (0, _helpers.getEnvOrDefault)(_constants.EnvVariables.FRONTEGG_COOKIE_NAME, (_setupEnvVariables$FR = setupEnvVariables.FRONTEGG_COOKIE_NAME) != null ? _setupEnvVariables$FR : 'fe_session');
85
- return `${cookieNameEnv}-${this.clientId.replace(/-/g, '')}`;
94
+ var _setupEnvVariables$FR2;
95
+ const cookieNameEnv = (0, _helpers.getEnvOrDefault)(_constants.EnvVariables.FRONTEGG_COOKIE_NAME, (_setupEnvVariables$FR2 = setupEnvVariables.FRONTEGG_COOKIE_NAME) != null ? _setupEnvVariables$FR2 : 'fe_session');
96
+ if (this.rewriteCookieByAppId && this.appId) {
97
+ return `${cookieNameEnv}-${this.appId.replace(/-/g, '')}`;
98
+ } else {
99
+ return `${cookieNameEnv}-${this.clientId.replace(/-/g, '')}`;
100
+ }
86
101
  }
87
102
  get cookieDomain() {
88
- return (0, _helpers.generateCookieDomain)(this.appUrl);
103
+ var _setupEnvVariables$FR3;
104
+ return (0, _helpers.getEnvOrDefault)(_constants.EnvVariables.FRONTEGG_COOKIE_DOMAIN, (_setupEnvVariables$FR3 = setupEnvVariables.FRONTEGG_COOKIE_DOMAIN) != null ? _setupEnvVariables$FR3 : (0, _helpers.generateCookieDomain)(this.appUrl));
105
+ }
106
+ get cookieSameSite() {
107
+ var _setupEnvVariables$FR4;
108
+ let sameSite = (0, _helpers.getEnvOrDefault)(_constants.EnvVariables.FRONTEGG_COOKIE_SAME_SITE, (_setupEnvVariables$FR4 = setupEnvVariables.FRONTEGG_COOKIE_SAME_SITE) != null ? _setupEnvVariables$FR4 : 'none');
109
+ switch (sameSite) {
110
+ case 'true':
111
+ return 'strict';
112
+ case 'false':
113
+ return 'none';
114
+ case 'lax':
115
+ case 'strict':
116
+ case 'none':
117
+ return sameSite;
118
+ default:
119
+ return 'none';
120
+ }
89
121
  }
90
122
  get authRoutes() {
91
123
  var _this$fronteggAppOpti, _this$fronteggAppOpti2, _this$fronteggAppOpti3;
@@ -127,9 +159,9 @@ class Config {
127
159
  envAppUrl: this.appUrl,
128
160
  envBaseUrl: this.baseUrl,
129
161
  envClientId: this.clientId,
162
+ envAppId: this.appId,
130
163
  secureJwtEnabled: this.secureJwtEnabled
131
164
  };
132
- console.log('this.appEnvConfig', config);
133
165
  return config;
134
166
  }
135
167
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_helpers","require","_constants","_errors","setupEnvVariables","FRONTEGG_APP_URL","process","env","FRONTEGG_BASE_URL","FRONTEGG_TEST_URL","FRONTEGG_CLIENT_ID","FRONTEGG_CLIENT_SECRET","FRONTEGG_ENCRYPTION_PASSWORD","FRONTEGG_COOKIE_NAME","FRONTEGG_JWT_PUBLIC_KEY","FRONTEGG_SECURE_JWT_ENABLED","DISABLE_INITIAL_PROPS_REFRESH_TOKEN","VERCEL","VERCEL_URL","Config","constructor","fronteggAppOptions","window","validatePassword","appUrl","generateAppUrl","testUrl","getEnvOrDefault","EnvVariables","baseUrl","_getEnv","getEnv","endsWith","slice","baseUrlHost","URL","hostname","clientId","_getEnv2","clientSecret","undefined","_getEnv3","e","secureJwtEnabled","InvalidFronteggEnv","jwtPublicKeyJson","_getEnv4","cookieName","_setupEnvVariables$FR","cookieNameEnv","replace","cookieDomain","generateCookieDomain","authRoutes","_this$fronteggAppOpti","_this$fronteggAppOpti2","_this$fronteggAppOpti3","authOptions","routes","passwordMaps","password","key","Object","keys","match","length","_getEnv5","encryptionPasswordEnv","normalizeStringPasswordToMap","isSSL","protocol","isHostedLogin","_this$fronteggAppOpti4","hostedLoginBox","FRONTEGG_HOSTED_LOGIN","isForwardIpEnabled","disableInitialPropsRefreshToken","appEnvConfig","config","envAppUrl","envBaseUrl","envClientId","console","log","_default","exports","default"],"sources":["../../../../packages/nextjs/src/config/index.ts"],"sourcesContent":["import { AuthPageRoutes } from '@frontegg/redux-store';\nimport { WithFronteggAppOptions } from '../pages';\nimport { AppEnvConfig, PasswordsMap } from './types';\nimport { generateAppUrl, generateCookieDomain, getEnv, getEnvOrDefault, normalizeStringPasswordToMap } from './helpers';\nimport { EnvVariables } from './constants';\nimport { InvalidFronteggEnv } from '../utils/errors';\n\nconst setupEnvVariables = {\n FRONTEGG_APP_URL: process.env.FRONTEGG_APP_URL,\n FRONTEGG_BASE_URL: process.env.FRONTEGG_BASE_URL,\n FRONTEGG_TEST_URL: process.env.FRONTEGG_TEST_URL,\n FRONTEGG_CLIENT_ID: process.env.FRONTEGG_CLIENT_ID,\n FRONTEGG_CLIENT_SECRET: process.env.FRONTEGG_CLIENT_SECRET,\n FRONTEGG_ENCRYPTION_PASSWORD: process.env.FRONTEGG_ENCRYPTION_PASSWORD,\n FRONTEGG_COOKIE_NAME: process.env.FRONTEGG_COOKIE_NAME,\n FRONTEGG_JWT_PUBLIC_KEY: process.env.FRONTEGG_JWT_PUBLIC_KEY,\n FRONTEGG_SECURE_JWT_ENABLED: process.env.FRONTEGG_SECURE_JWT_ENABLED,\n DISABLE_INITIAL_PROPS_REFRESH_TOKEN: process.env.DISABLE_INITIAL_PROPS_REFRESH_TOKEN,\n VERCEL: process.env.VERCEL,\n VERCEL_URL: process.env.VERCEL_URL,\n};\n\nclass Config {\n public fronteggAppOptions: Partial<WithFronteggAppOptions> = {};\n\n constructor() {\n if (typeof window === 'undefined') {\n this.validatePassword();\n }\n }\n\n get appUrl(): string {\n return generateAppUrl();\n }\n\n get testUrl(): string | undefined {\n return getEnvOrDefault(EnvVariables.FRONTEGG_TEST_URL, setupEnvVariables.FRONTEGG_TEST_URL);\n }\n\n get baseUrl(): string {\n const baseUrl = getEnv(EnvVariables.FRONTEGG_BASE_URL) ?? setupEnvVariables.FRONTEGG_BASE_URL;\n if (baseUrl.endsWith('/')) {\n return baseUrl.slice(0, -1);\n }\n return baseUrl;\n }\n\n get baseUrlHost(): string {\n return new URL(this.baseUrl).hostname;\n }\n\n get clientId(): string {\n return getEnv(EnvVariables.FRONTEGG_CLIENT_ID) ?? setupEnvVariables.FRONTEGG_CLIENT_ID;\n }\n\n get clientSecret(): string | undefined {\n let clientSecret = undefined;\n try {\n clientSecret = getEnv(EnvVariables.FRONTEGG_CLIENT_SECRET) ?? setupEnvVariables.FRONTEGG_CLIENT_SECRET;\n } catch (e) {\n clientSecret = setupEnvVariables.FRONTEGG_CLIENT_SECRET;\n }\n\n if (this.secureJwtEnabled === 'true' && !clientSecret) {\n throw new InvalidFronteggEnv(\n EnvVariables.FRONTEGG_CLIENT_SECRET,\n 'Client secret is required when secure JWT is enabled'\n );\n }\n return clientSecret;\n }\n\n get jwtPublicKeyJson(): string | undefined {\n return getEnv(EnvVariables.FRONTEGG_JWT_PUBLIC_KEY);\n }\n\n get secureJwtEnabled(): string | undefined {\n try {\n return getEnv(EnvVariables.FRONTEGG_SECURE_JWT_ENABLED) ?? setupEnvVariables.FRONTEGG_SECURE_JWT_ENABLED;\n } catch (e) {\n return setupEnvVariables.FRONTEGG_SECURE_JWT_ENABLED;\n }\n }\n\n get cookieName(): string {\n const cookieNameEnv = getEnvOrDefault(\n EnvVariables.FRONTEGG_COOKIE_NAME,\n setupEnvVariables.FRONTEGG_COOKIE_NAME ?? 'fe_session'\n );\n return `${cookieNameEnv}-${this.clientId.replace(/-/g, '')}`;\n }\n\n get cookieDomain(): string {\n return generateCookieDomain(this.appUrl);\n }\n\n get authRoutes(): Partial<AuthPageRoutes> {\n return this.fronteggAppOptions?.authOptions?.routes ?? {};\n }\n\n private validatePassword() {\n const passwordMaps = this.password;\n for (let key of Object.keys(passwordMaps)) {\n const password = passwordMaps[key];\n if (!password.match(/[0-9A-Fa-f]{6}/g) || password.length !== 64) {\n throw new InvalidFronteggEnv(\n EnvVariables.FRONTEGG_ENCRYPTION_PASSWORD,\n `Hex string.\\n\\nFor quick password generation use the following command:\\nnode -e \"console.log(crypto.randomBytes(32).toString('hex'))\"`\n );\n }\n }\n }\n\n get password(): PasswordsMap {\n const encryptionPasswordEnv =\n getEnv(EnvVariables.FRONTEGG_ENCRYPTION_PASSWORD) ?? setupEnvVariables.FRONTEGG_ENCRYPTION_PASSWORD;\n\n return normalizeStringPasswordToMap(encryptionPasswordEnv);\n }\n\n get isSSL(): boolean {\n return new URL(this.appUrl).protocol === 'https:';\n }\n\n get isHostedLogin(): boolean {\n return (\n this.fronteggAppOptions.hostedLoginBox ?? getEnvOrDefault(EnvVariables.FRONTEGG_HOSTED_LOGIN, 'false') === 'true'\n );\n }\n\n get isForwardIpEnabled(): boolean {\n if (this.clientSecret) {\n return getEnvOrDefault(EnvVariables.FRONTEGG_HOSTED_LOGIN, 'false') === 'true';\n }\n return false;\n }\n\n get disableInitialPropsRefreshToken(): boolean {\n const disableInitialPropsRefreshToken = getEnvOrDefault(\n EnvVariables.DISABLE_INITIAL_PROPS_REFRESH_TOKEN,\n setupEnvVariables.DISABLE_INITIAL_PROPS_REFRESH_TOKEN\n );\n return disableInitialPropsRefreshToken === 'true';\n }\n\n get appEnvConfig(): AppEnvConfig {\n const config = {\n envAppUrl: this.appUrl,\n envBaseUrl: this.baseUrl,\n envClientId: this.clientId,\n secureJwtEnabled: this.secureJwtEnabled,\n };\n console.log('this.appEnvConfig', config);\n return config;\n }\n}\n\nexport { EnvVariables } from './constants';\nexport default new Config();\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["_helpers","require","_constants","_errors","setupEnvVariables","FRONTEGG_APP_URL","process","env","FRONTEGG_BASE_URL","FRONTEGG_TEST_URL","FRONTEGG_CLIENT_ID","FRONTEGG_APP_ID","FRONTEGG_REWRITE_COOKIE_BY_APP_ID","FRONTEGG_CLIENT_SECRET","FRONTEGG_ENCRYPTION_PASSWORD","FRONTEGG_COOKIE_NAME","FRONTEGG_COOKIE_DOMAIN","FRONTEGG_COOKIE_SAME_SITE","FRONTEGG_JWT_PUBLIC_KEY","FRONTEGG_SECURE_JWT_ENABLED","DISABLE_INITIAL_PROPS_REFRESH_TOKEN","VERCEL","VERCEL_URL","Config","constructor","fronteggAppOptions","window","validatePassword","appUrl","generateAppUrl","testUrl","getEnvOrDefault","EnvVariables","baseUrl","_getEnv","getEnv","endsWith","slice","baseUrlHost","URL","hostname","clientId","_getEnv2","appId","rewriteCookieByAppId","_setupEnvVariables$FR","clientSecret","undefined","_getEnv3","e","secureJwtEnabled","InvalidFronteggEnv","jwtPublicKeyJson","_getEnv4","cookieName","_setupEnvVariables$FR2","cookieNameEnv","replace","cookieDomain","_setupEnvVariables$FR3","generateCookieDomain","cookieSameSite","_setupEnvVariables$FR4","sameSite","authRoutes","_this$fronteggAppOpti","_this$fronteggAppOpti2","_this$fronteggAppOpti3","authOptions","routes","passwordMaps","password","key","Object","keys","match","length","_getEnv5","encryptionPasswordEnv","normalizeStringPasswordToMap","isSSL","protocol","isHostedLogin","_this$fronteggAppOpti4","hostedLoginBox","FRONTEGG_HOSTED_LOGIN","isForwardIpEnabled","disableInitialPropsRefreshToken","appEnvConfig","config","envAppUrl","envBaseUrl","envClientId","envAppId","_default","exports","default"],"sources":["../../../../packages/nextjs/src/config/index.ts"],"sourcesContent":["import { AuthPageRoutes } from '@frontegg/redux-store';\nimport { WithFronteggAppOptions } from '../pages';\nimport { AppEnvConfig, PasswordsMap } from './types';\nimport { generateAppUrl, generateCookieDomain, getEnv, getEnvOrDefault, normalizeStringPasswordToMap } from './helpers';\nimport { EnvVariables } from './constants';\nimport { InvalidFronteggEnv } from '../utils/errors';\n\nconst setupEnvVariables = {\n FRONTEGG_APP_URL: process.env.FRONTEGG_APP_URL,\n FRONTEGG_BASE_URL: process.env.FRONTEGG_BASE_URL,\n FRONTEGG_TEST_URL: process.env.FRONTEGG_TEST_URL,\n FRONTEGG_CLIENT_ID: process.env.FRONTEGG_CLIENT_ID,\n FRONTEGG_APP_ID: process.env.FRONTEGG_APP_ID,\n FRONTEGG_REWRITE_COOKIE_BY_APP_ID: process.env.FRONTEGG_REWRITE_COOKIE_BY_APP_ID,\n FRONTEGG_CLIENT_SECRET: process.env.FRONTEGG_CLIENT_SECRET,\n FRONTEGG_ENCRYPTION_PASSWORD: process.env.FRONTEGG_ENCRYPTION_PASSWORD,\n FRONTEGG_COOKIE_NAME: process.env.FRONTEGG_COOKIE_NAME,\n FRONTEGG_COOKIE_DOMAIN: process.env.FRONTEGG_COOKIE_DOMAIN,\n FRONTEGG_COOKIE_SAME_SITE: process.env.FRONTEGG_COOKIE_SAME_SITE,\n FRONTEGG_JWT_PUBLIC_KEY: process.env.FRONTEGG_JWT_PUBLIC_KEY,\n FRONTEGG_SECURE_JWT_ENABLED: process.env.FRONTEGG_SECURE_JWT_ENABLED,\n DISABLE_INITIAL_PROPS_REFRESH_TOKEN: process.env.DISABLE_INITIAL_PROPS_REFRESH_TOKEN,\n VERCEL: process.env.VERCEL,\n VERCEL_URL: process.env.VERCEL_URL,\n};\n\nclass Config {\n public fronteggAppOptions: Partial<WithFronteggAppOptions> = {};\n\n constructor() {\n if (typeof window === 'undefined') {\n this.validatePassword();\n }\n }\n\n get appUrl(): string {\n return generateAppUrl();\n }\n\n get testUrl(): string | undefined {\n return getEnvOrDefault(EnvVariables.FRONTEGG_TEST_URL, setupEnvVariables.FRONTEGG_TEST_URL);\n }\n\n get baseUrl(): string {\n const baseUrl = getEnv(EnvVariables.FRONTEGG_BASE_URL) ?? setupEnvVariables.FRONTEGG_BASE_URL;\n if (baseUrl.endsWith('/')) {\n return baseUrl.slice(0, -1);\n }\n return baseUrl;\n }\n\n get baseUrlHost(): string {\n return new URL(this.baseUrl).hostname;\n }\n\n get clientId(): string {\n return getEnv(EnvVariables.FRONTEGG_CLIENT_ID) ?? setupEnvVariables.FRONTEGG_CLIENT_ID;\n }\n\n get appId(): string | undefined {\n return getEnvOrDefault(EnvVariables.FRONTEGG_APP_ID, setupEnvVariables.FRONTEGG_APP_ID);\n }\n get rewriteCookieByAppId(): boolean {\n return (\n getEnvOrDefault(\n EnvVariables.FRONTEGG_REWRITE_COOKIE_BY_APP_ID,\n setupEnvVariables.FRONTEGG_REWRITE_COOKIE_BY_APP_ID ?? 'false'\n ) === 'true'\n );\n }\n\n get clientSecret(): string | undefined {\n let clientSecret = undefined;\n try {\n clientSecret = getEnv(EnvVariables.FRONTEGG_CLIENT_SECRET) ?? setupEnvVariables.FRONTEGG_CLIENT_SECRET;\n } catch (e) {\n clientSecret = setupEnvVariables.FRONTEGG_CLIENT_SECRET;\n }\n\n if (this.secureJwtEnabled === 'true' && !clientSecret) {\n throw new InvalidFronteggEnv(\n EnvVariables.FRONTEGG_CLIENT_SECRET,\n 'Client secret is required when secure JWT is enabled'\n );\n }\n return clientSecret;\n }\n\n get jwtPublicKeyJson(): string | undefined {\n return getEnv(EnvVariables.FRONTEGG_JWT_PUBLIC_KEY);\n }\n\n get secureJwtEnabled(): string | undefined {\n try {\n return getEnv(EnvVariables.FRONTEGG_SECURE_JWT_ENABLED) ?? setupEnvVariables.FRONTEGG_SECURE_JWT_ENABLED;\n } catch (e) {\n return setupEnvVariables.FRONTEGG_SECURE_JWT_ENABLED;\n }\n }\n\n get cookieName(): string {\n const cookieNameEnv = getEnvOrDefault(\n EnvVariables.FRONTEGG_COOKIE_NAME,\n setupEnvVariables.FRONTEGG_COOKIE_NAME ?? 'fe_session'\n );\n\n if (this.rewriteCookieByAppId && this.appId) {\n return `${cookieNameEnv}-${this.appId.replace(/-/g, '')}`;\n } else {\n return `${cookieNameEnv}-${this.clientId.replace(/-/g, '')}`;\n }\n }\n\n get cookieDomain(): string {\n return getEnvOrDefault(\n EnvVariables.FRONTEGG_COOKIE_DOMAIN,\n setupEnvVariables.FRONTEGG_COOKIE_DOMAIN ?? generateCookieDomain(this.appUrl)\n );\n }\n\n get cookieSameSite(): 'lax' | 'strict' | 'none' {\n let sameSite = getEnvOrDefault(\n EnvVariables.FRONTEGG_COOKIE_SAME_SITE,\n setupEnvVariables.FRONTEGG_COOKIE_SAME_SITE ?? 'none'\n );\n switch (sameSite) {\n case 'true':\n return 'strict';\n case 'false':\n return 'none';\n case 'lax':\n case 'strict':\n case 'none':\n return sameSite;\n default:\n return 'none';\n }\n }\n\n get authRoutes(): Partial<AuthPageRoutes> {\n return this.fronteggAppOptions?.authOptions?.routes ?? {};\n }\n\n private validatePassword() {\n const passwordMaps = this.password;\n for (let key of Object.keys(passwordMaps)) {\n const password = passwordMaps[key];\n if (!password.match(/[0-9A-Fa-f]{6}/g) || password.length !== 64) {\n throw new InvalidFronteggEnv(\n EnvVariables.FRONTEGG_ENCRYPTION_PASSWORD,\n `Hex string.\\n\\nFor quick password generation use the following command:\\nnode -e \"console.log(crypto.randomBytes(32).toString('hex'))\"`\n );\n }\n }\n }\n\n get password(): PasswordsMap {\n const encryptionPasswordEnv =\n getEnv(EnvVariables.FRONTEGG_ENCRYPTION_PASSWORD) ?? setupEnvVariables.FRONTEGG_ENCRYPTION_PASSWORD;\n\n return normalizeStringPasswordToMap(encryptionPasswordEnv);\n }\n\n get isSSL(): boolean {\n return new URL(this.appUrl).protocol === 'https:';\n }\n\n get isHostedLogin(): boolean {\n return (\n this.fronteggAppOptions.hostedLoginBox ?? getEnvOrDefault(EnvVariables.FRONTEGG_HOSTED_LOGIN, 'false') === 'true'\n );\n }\n\n get isForwardIpEnabled(): boolean {\n if (this.clientSecret) {\n return getEnvOrDefault(EnvVariables.FRONTEGG_HOSTED_LOGIN, 'false') === 'true';\n }\n return false;\n }\n\n get disableInitialPropsRefreshToken(): boolean {\n const disableInitialPropsRefreshToken = getEnvOrDefault(\n EnvVariables.DISABLE_INITIAL_PROPS_REFRESH_TOKEN,\n setupEnvVariables.DISABLE_INITIAL_PROPS_REFRESH_TOKEN\n );\n return disableInitialPropsRefreshToken === 'true';\n }\n\n get appEnvConfig(): AppEnvConfig {\n const config = {\n envAppUrl: this.appUrl,\n envBaseUrl: this.baseUrl,\n envClientId: this.clientId,\n envAppId: this.appId,\n secureJwtEnabled: this.secureJwtEnabled,\n };\n return config;\n }\n}\n\nexport { EnvVariables } from './constants';\nexport default new Config();\n"],"mappings":"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"}
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.isHostedLoginCallback = exports.handleHostedLoginCallback = exports.getSessionOnEdge = void 0;
8
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
8
9
  var _cookies = _interopRequireDefault(require("../utils/cookies"));
9
10
  var _createSession = _interopRequireDefault(require("../utils/createSession"));
10
11
  var _encryptionEdge = _interopRequireDefault(require("../utils/encryption-edge"));
@@ -12,6 +13,7 @@ var _api = _interopRequireDefault(require("../api"));
12
13
  var _server = require("next/server");
13
14
  var _config = _interopRequireDefault(require("../config"));
14
15
  var _jwt = _interopRequireDefault(require("../utils/jwt"));
16
+ var _utils = require("../api/utils");
15
17
  async function createSessionFromAccessTokenEdge(data) {
16
18
  var _data$accessToken, _data$refreshToken;
17
19
  const accessToken = (_data$accessToken = data.accessToken) != null ? _data$accessToken : data.access_token;
@@ -33,14 +35,25 @@ const getSessionOnEdge = req => {
33
35
  };
34
36
  exports.getSessionOnEdge = getSessionOnEdge;
35
37
  const handleHostedLoginCallback = async (req, pathname, searchParams) => {
36
- var _searchParams$get;
38
+ var _searchParams$get, _req$headers;
37
39
  if (!isHostedLoginCallback(pathname, searchParams)) {
38
40
  return _server.NextResponse.next();
39
41
  }
40
42
  const code = (_searchParams$get = searchParams.get('code')) != null ? _searchParams$get : '';
41
- const response = await _api.default.exchangeHostedLoginToken({
42
- 'Content-Type': 'application/json'
43
- }, code, _config.default.clientId, _config.default.clientSecret);
43
+ let headers = {};
44
+ let clientIp = undefined;
45
+ if (typeof ((_req$headers = req.headers) == null ? void 0 : _req$headers.get) === 'function') {
46
+ var _socket;
47
+ clientIp = req.headers.get('cf-connecting-ip') || req.headers.get('x-original-forwarded-for') || req.headers.get('x-forwarded-for') || ((_socket = req.socket) == null ? void 0 : _socket.remoteAddress);
48
+ } else if (typeof req.headers === 'object') {
49
+ var _socket2;
50
+ let requestHeaders = (0, _extends2.default)({}, req.headers);
51
+ clientIp = requestHeaders['cf-connecting-ip'] || requestHeaders['x-original-forwarded-for'] || requestHeaders['x-forwarded-for'] || ((_socket2 = req.socket) == null ? void 0 : _socket2.remoteAddress);
52
+ }
53
+ if (clientIp) {
54
+ headers['x-original-forwarded-for'] = clientIp;
55
+ }
56
+ const response = await _api.default.exchangeHostedLoginToken((0, _utils.buildRequestHeaders)(headers), code, _config.default.clientId, _config.default.clientSecret);
44
57
  const data = await response.json();
45
58
  const [session, decodedJwt, refreshToken] = await createSessionFromAccessTokenEdge(data);
46
59
  if (!session) {
@@ -52,8 +65,12 @@ const handleHostedLoginCallback = async (req, pathname, searchParams) => {
52
65
  expires: new Date(decodedJwt.exp * 1000),
53
66
  secure: isSecured
54
67
  });
68
+ let cookieName = `fe_refresh_${_config.default.clientId.replace('-', '')}`;
69
+ if (_config.default.rewriteCookieByAppId && _config.default.appId) {
70
+ cookieName = `fe_refresh_${_config.default.appId.replace('-', '')}`;
71
+ }
55
72
  const refreshCookie = _cookies.default.create({
56
- cookieName: `fe_refresh_${_config.default.clientId.replace('-', '')}`,
73
+ cookieName,
57
74
  value: refreshToken != null ? refreshToken : '',
58
75
  expires: new Date(decodedJwt.exp * 1000),
59
76
  secure: isSecured
@@ -1 +1 @@
1
- {"version":3,"file":"getSessionOnEdge.js","names":["_cookies","_interopRequireDefault","require","_createSession","_encryptionEdge","_api","_server","_config","_jwt","createSessionFromAccessTokenEdge","data","_data$accessToken","_data$refreshToken","accessToken","access_token","refreshToken","refresh_token","payload","decodedJwt","JwtManager","verify","expiresIn","Math","floor","exp","Date","now","tokens","session","encryptionUtils","sealTokens","getSessionOnEdge","req","cookies","CookieManager","getSessionCookieFromRequest","createSession","encryptionEdge","exports","handleHostedLoginCallback","pathname","searchParams","_searchParams$get","isHostedLoginCallback","NextResponse","next","code","get","response","api","exchangeHostedLoginToken","config","clientId","clientSecret","json","redirect","appUrl","isSecured","isSSL","cookieValue","create","value","expires","secure","refreshCookie","cookieName","replace","sessionCookieHeaders","map","cookie","refreshCookieHeaders","headers","secureJwtEnabled","startsWith"],"sources":["../../../../packages/nextjs/src/edge/getSessionOnEdge.ts"],"sourcesContent":["import type { IncomingMessage } from 'http';\nimport { FronteggNextJSSession } from '../types';\nimport CookieManager from '../utils/cookies';\nimport createSession from '../utils/createSession';\nimport encryptionEdge from '../utils/encryption-edge';\nimport api from '../api';\nimport { NextResponse } from 'next/server';\nimport config from '../config';\nimport JwtManager from '../utils/jwt';\nimport encryptionUtils from '../utils/encryption-edge';\nimport Cookies from '../utils/cookies';\n\nasync function createSessionFromAccessTokenEdge(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 encryptionUtils.sealTokens(tokens, decodedJwt.exp);\n return [session, decodedJwt, refreshToken];\n}\n\nexport const getSessionOnEdge = (req: IncomingMessage | Request): Promise<FronteggNextJSSession | undefined> => {\n const cookies = CookieManager.getSessionCookieFromRequest(req);\n return createSession(cookies, encryptionEdge);\n};\n\nexport const handleHostedLoginCallback = async (\n req: IncomingMessage | Request,\n pathname: string,\n searchParams: URLSearchParams\n): Promise<NextResponse> => {\n if (!isHostedLoginCallback(pathname, searchParams)) {\n return NextResponse.next();\n }\n\n const code = searchParams.get('code') ?? '';\n const response = await api.exchangeHostedLoginToken(\n {\n 'Content-Type': 'application/json',\n },\n code,\n config.clientId,\n config.clientSecret!\n );\n\n const data = await response.json();\n\n const [session, decodedJwt, refreshToken] = await createSessionFromAccessTokenEdge(data);\n\n if (!session) {\n return NextResponse.redirect(config.appUrl);\n }\n const isSecured = config.isSSL;\n const cookieValue = CookieManager.create({\n value: session,\n expires: new Date(decodedJwt.exp * 1000),\n secure: isSecured,\n });\n const refreshCookie = CookieManager.create({\n cookieName: `fe_refresh_${config.clientId.replace('-', '')}`,\n value: refreshToken ?? '',\n expires: new Date(decodedJwt.exp * 1000),\n secure: isSecured,\n });\n const sessionCookieHeaders: [string, string][] = cookieValue.map((cookie) => ['set-cookie', cookie]);\n const refreshCookieHeaders: [string, string][] = refreshCookie.map((cookie) => ['set-cookie', cookie]);\n\n return NextResponse.redirect(config.appUrl, {\n headers: [...sessionCookieHeaders, ...refreshCookieHeaders],\n });\n};\n\nexport const isHostedLoginCallback = (pathname: string, searchParams: URLSearchParams): boolean => {\n if (config.secureJwtEnabled) {\n if (pathname.startsWith('/oauth/callback')) {\n return searchParams.get('code') != null;\n }\n }\n return false;\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"getSessionOnEdge.js","names":["_cookies","_interopRequireDefault","require","_createSession","_encryptionEdge","_api","_server","_config","_jwt","_utils","createSessionFromAccessTokenEdge","data","_data$accessToken","_data$refreshToken","accessToken","access_token","refreshToken","refresh_token","payload","decodedJwt","JwtManager","verify","expiresIn","Math","floor","exp","Date","now","tokens","session","encryptionUtils","sealTokens","getSessionOnEdge","req","cookies","CookieManager","getSessionCookieFromRequest","createSession","encryptionEdge","exports","handleHostedLoginCallback","pathname","searchParams","_searchParams$get","_req$headers","isHostedLoginCallback","NextResponse","next","code","get","headers","clientIp","undefined","_socket","socket","remoteAddress","_socket2","requestHeaders","_extends2","default","response","api","exchangeHostedLoginToken","buildRequestHeaders","config","clientId","clientSecret","json","redirect","appUrl","isSecured","isSSL","cookieValue","create","value","expires","secure","cookieName","replace","rewriteCookieByAppId","appId","refreshCookie","sessionCookieHeaders","map","cookie","refreshCookieHeaders","secureJwtEnabled","startsWith"],"sources":["../../../../packages/nextjs/src/edge/getSessionOnEdge.ts"],"sourcesContent":["import type { IncomingMessage } from 'http';\nimport { FronteggNextJSSession } from '../types';\nimport CookieManager from '../utils/cookies';\nimport createSession from '../utils/createSession';\nimport encryptionEdge from '../utils/encryption-edge';\nimport api from '../api';\nimport { NextResponse } from 'next/server';\nimport config from '../config';\nimport JwtManager from '../utils/jwt';\nimport encryptionUtils from '../utils/encryption-edge';\nimport Cookies from '../utils/cookies';\nimport { buildRequestHeaders } from '../api/utils';\n\nasync function createSessionFromAccessTokenEdge(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 encryptionUtils.sealTokens(tokens, decodedJwt.exp);\n return [session, decodedJwt, refreshToken];\n}\n\nexport const getSessionOnEdge = (req: IncomingMessage | Request): Promise<FronteggNextJSSession | undefined> => {\n const cookies = CookieManager.getSessionCookieFromRequest(req);\n return createSession(cookies, encryptionEdge);\n};\n\nexport const handleHostedLoginCallback = async (\n req: IncomingMessage | Request,\n pathname: string,\n searchParams: URLSearchParams\n): Promise<NextResponse> => {\n if (!isHostedLoginCallback(pathname, searchParams)) {\n return NextResponse.next();\n }\n\n const code = searchParams.get('code') ?? '';\n\n let headers: Record<string, string> = {};\n let clientIp: string | undefined = undefined;\n if (typeof req.headers?.get === 'function') {\n clientIp =\n req.headers.get('cf-connecting-ip') ||\n req.headers.get('x-original-forwarded-for') ||\n req.headers.get('x-forwarded-for') ||\n (req as any).socket?.remoteAddress;\n } else if (typeof req.headers === 'object') {\n let requestHeaders: any = { ...req.headers };\n clientIp =\n requestHeaders['cf-connecting-ip'] ||\n requestHeaders['x-original-forwarded-for'] ||\n requestHeaders['x-forwarded-for'] ||\n (req as any).socket?.remoteAddress;\n }\n\n if (clientIp) {\n headers['x-original-forwarded-for'] = clientIp;\n }\n\n const response = await api.exchangeHostedLoginToken(\n buildRequestHeaders(headers),\n code,\n config.clientId,\n config.clientSecret!\n );\n\n const data = await response.json();\n\n const [session, decodedJwt, refreshToken] = await createSessionFromAccessTokenEdge(data);\n\n if (!session) {\n return NextResponse.redirect(config.appUrl);\n }\n const isSecured = config.isSSL;\n const cookieValue = CookieManager.create({\n value: session,\n expires: new Date(decodedJwt.exp * 1000),\n secure: isSecured,\n });\n\n let cookieName = `fe_refresh_${config.clientId.replace('-', '')}`;\n if (config.rewriteCookieByAppId && config.appId) {\n cookieName = `fe_refresh_${config.appId.replace('-', '')}`;\n }\n const refreshCookie = CookieManager.create({\n cookieName,\n value: refreshToken ?? '',\n expires: new Date(decodedJwt.exp * 1000),\n secure: isSecured,\n });\n const sessionCookieHeaders: [string, string][] = cookieValue.map((cookie) => ['set-cookie', cookie]);\n const refreshCookieHeaders: [string, string][] = refreshCookie.map((cookie) => ['set-cookie', cookie]);\n\n return NextResponse.redirect(config.appUrl, {\n headers: [...sessionCookieHeaders, ...refreshCookieHeaders],\n });\n};\n\nexport const isHostedLoginCallback = (pathname: string, searchParams: URLSearchParams): boolean => {\n if (config.secureJwtEnabled) {\n if (pathname.startsWith('/oauth/callback')) {\n return searchParams.get('code') != null;\n }\n }\n return false;\n};\n"],"mappings":"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"}
package/index.js CHANGED
@@ -1,4 +1,4 @@
1
- /** @license Frontegg v9.0.4
1
+ /** @license Frontegg v9.0.5-alpha.11469892684
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.
@@ -32,23 +32,23 @@ const ProxyRequestCallback = (proxyReq, req) => {
32
32
  return cookieName.startsWith('fe_') && !cookieName.startsWith(_config.default.cookieName);
33
33
  });
34
34
  logger.debug(`${req.url} | proxy FronteggCookies (${fronteggCookiesNames.join(', ')})`);
35
- fronteggCookiesNames.forEach(cookieName => {
36
- proxyReq.setHeader(cookieName, allCookies[cookieName]);
35
+ let modifiedCookies = ``;
36
+ fronteggCookiesNames.forEach(requestCookieName => {
37
+ let cookieName = requestCookieName;
38
+ if (_config.default.rewriteCookieByAppId && _config.default.appId) {
39
+ cookieName = requestCookieName.replace(_config.default.appId, _config.default.clientId).replace(_config.default.appId.replace(/-/g, ''), _config.default.clientId.replace(/-/g, '')).replace(_config.default.appId.replace('-', ''), _config.default.clientId.replace('-', ''));
40
+ logger.debug(`cookieName ${requestCookieName} replaced with appId ${cookieName}`);
41
+ }
42
+ logger.debug(`PROXY_ADDING_COOKIE ${cookieName}, ${allCookies[requestCookieName]}`);
43
+ modifiedCookies += `${cookieName}=${allCookies[requestCookieName]}; `;
37
44
  });
45
+ proxyReq.setHeader('cookie', modifiedCookies);
38
46
  proxyReq.setHeader('x-frontegg-framework', (_req$headers$xFronte = req.headers['x-frontegg-framework']) != null ? _req$headers$xFronte : `next@${_package.default.version}`);
39
47
  proxyReq.setHeader('x-frontegg-sdk', (_req$headers$xFronte2 = req.headers['x-frontegg-sdk']) != null ? _req$headers$xFronte2 : `@frontegg/nextjs@${_sdkVersion.default.version}`);
40
48
  proxyReq.setHeader('x-frontegg-middleware', 'true');
41
- const xForwardedFor = req.headers['x-forwarded-for'];
42
- const xOriginalForwardedFor = req.headers['x-original-forwarded-for'];
43
- const cfConnectionIp = req.headers['cf-connecting-ip'];
44
- if (xForwardedFor) {
45
- proxyReq.setHeader('x-forwarded-for', xForwardedFor);
46
- }
47
- if (xOriginalForwardedFor) {
48
- proxyReq.setHeader('x-original-forwarded-for', xOriginalForwardedFor);
49
- }
50
- if (cfConnectionIp) {
51
- proxyReq.setHeader('cf-connecting-ip', cfConnectionIp);
49
+ const clientIp = req.headers['cf-connecting-ip'] || req.headers['x-original-forwarded-for'] || req.headers['x-forwarded-for'];
50
+ if (clientIp) {
51
+ proxyReq.setHeader('x-original-forwarded-for', clientIp);
52
52
  }
53
53
  if ((0, _helpers.isRefreshTokenRequest)(req.url)) {
54
54
  logger.debug(`${req.url} | removing Authorization header`);
@@ -1 +1 @@
1
- {"version":3,"file":"ProxyRequestCallback.js","names":["_package","_interopRequireDefault","require","_sdkVersion","_config","_cookies","_fronteggLogger","_helpers","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","forEach","setHeader","headers","NextJsPkg","version","sdkVersion","xForwardedFor","xOriginalForwardedFor","cfConnectionIp","isRefreshTokenRequest","removeHeader","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';\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 fronteggCookiesNames.forEach((cookieName: string) => {\n proxyReq.setHeader(cookieName, allCookies[cookieName]);\n });\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 xForwardedFor = req.headers['x-forwarded-for'];\n const xOriginalForwardedFor = req.headers['x-original-forwarded-for'];\n const cfConnectionIp = req.headers['cf-connecting-ip'];\n\n if (xForwardedFor) {\n proxyReq.setHeader('x-forwarded-for', xForwardedFor);\n }\n if (xOriginalForwardedFor) {\n proxyReq.setHeader('x-original-forwarded-for', xOriginalForwardedFor);\n }\n if (cfConnectionIp) {\n proxyReq.setHeader('cf-connecting-ip', cfConnectionIp);\n }\n\n if (isRefreshTokenRequest(req.url!)) {\n logger.debug(`${req.url} | removing Authorization header`);\n proxyReq.removeHeader('authorization');\n }\n\n [\n 'x-invoke-path',\n 'x-invoke-query',\n 'x-middleware-invoke',\n 'x-middleware-next',\n 'transfer-encoding',\n 'cache-control',\n ].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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"}
1
+ {"version":3,"file":"ProxyRequestCallback.js","names":["_package","_interopRequireDefault","require","_sdkVersion","_config","_cookies","_fronteggLogger","_helpers","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","isRefreshTokenRequest","removeHeader","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';\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 =\n req.headers['cf-connecting-ip'] || req.headers['x-original-forwarded-for'] || req.headers['x-forwarded-for'];\n\n if (clientIp) {\n proxyReq.setHeader('x-original-forwarded-for', clientIp);\n }\n\n if (isRefreshTokenRequest(req.url!)) {\n logger.debug(`${req.url} | removing Authorization header`);\n proxyReq.removeHeader('authorization');\n }\n\n [\n 'x-invoke-path',\n 'x-invoke-query',\n 'x-middleware-invoke',\n 'x-middleware-next',\n 'transfer-encoding',\n 'cache-control',\n ].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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"}
@@ -51,7 +51,7 @@ const Connector = _props => {
51
51
  }
52
52
  return createdApp;
53
53
  }, [appName, props, hostedLoginBox, baseName, onRedirectTo]);
54
- _restApi.ContextHolder.setOnRedirectTo(onRedirectTo);
54
+ _restApi.ContextHolder.for(appName != null ? appName : 'default').setOnRedirectTo(onRedirectTo);
55
55
  (0, _react.useEffect)(() => {
56
56
  app.store.dispatch({
57
57
  type: 'auth/requestAuthorize',
@@ -1 +1 @@
1
- {"version":3,"file":"FronteggProviderNoSSR.js","names":["_interopRequireDefault","require","Object","defineProperty","exports","value","FronteggProviderNoSSR","_extends2","_objectWithoutPropertiesLoose2","_js","_reactHooks","_restApi","_router","_react","_interopRequireWildcard","_AppContext","_useOnRedirectTo","_ExpireInListener2","_jsxRuntime","_ExpireInListener","_excluded","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","Connector","_props","_props$basename","_props$authOptions","router","appName","hostedLoginBox","props","baseName","basename","basePath","onRedirectTo","useOnRedirectTo","authOptions","routes","app","useMemo","createdApp","AppHolder","getInstance","e","_props$basename2","initialize","contextOptions","requestCredentials","ContextHolder","setOnRedirectTo","useEffect","store","dispatch","type","payload","jsx","Provider","children","FronteggStoreProvider","FronteggNextJSProvider","useRouter","jsxs","framework"],"sources":["../../../../packages/nextjs/src/no-ssr/FronteggProviderNoSSR.tsx"],"sourcesContent":["'use client';\n\nimport { AppHolder, initialize } from '@frontegg/js';\nimport { FronteggStoreProvider } from '@frontegg/react-hooks';\nimport { ContextHolder } from '@frontegg/rest-api';\nimport { FronteggAppOptions } from '@frontegg/types';\nimport { NextRouter, useRouter } from 'next/router';\nimport React, { FC, PropsWithChildren, useEffect, useMemo } from 'react';\nimport AppContext from '../common/AppContext';\nimport useOnRedirectTo from '../utils/useOnRedirectTo';\nimport ExpireInListener from './ExpireInListener';\n\nexport type FronteggProviderNoSSRProps = PropsWithChildren<FronteggAppOptions>;\n\ntype ConnectorProps = PropsWithChildren<FronteggAppOptions> & {\n router: NextRouter;\n appName?: string;\n};\n\nconst Connector: FC<ConnectorProps> = (_props) => {\n const { router, appName, hostedLoginBox, customLoginBox, ...props } = _props;\n const baseName = props.basename ?? router.basePath;\n\n const onRedirectTo = useOnRedirectTo(baseName, router, props.authOptions?.routes);\n\n const app = useMemo(() => {\n let createdApp;\n try {\n createdApp = AppHolder.getInstance(appName ?? 'default');\n } catch (e) {\n createdApp = initialize(\n {\n ...props,\n hostedLoginBox: hostedLoginBox ?? false,\n basename: props.basename ?? baseName,\n authOptions: {\n ...props.authOptions,\n onRedirectTo,\n },\n contextOptions: {\n requestCredentials: 'include',\n ...props.contextOptions,\n },\n onRedirectTo,\n },\n appName ?? 'default'\n );\n }\n return createdApp;\n }, [appName, props, hostedLoginBox, baseName, onRedirectTo]);\n ContextHolder.setOnRedirectTo(onRedirectTo);\n\n useEffect(() => {\n app.store.dispatch({ type: 'auth/requestAuthorize', payload: true });\n }, [app]);\n\n return (\n <AppContext.Provider value={app}>\n <FronteggStoreProvider {...({ ...props, app } as any)}>{props.children}</FronteggStoreProvider>\n </AppContext.Provider>\n );\n};\n\nconst FronteggNextJSProvider: FC<FronteggProviderNoSSRProps> = (props) => {\n const router = useRouter();\n\n return (\n <Connector {...props} router={router}>\n <ExpireInListener />\n {props.children}\n </Connector>\n );\n};\n\nexport const FronteggProviderNoSSR: FC<FronteggProviderNoSSRProps> = (props) => {\n return (\n <FronteggNextJSProvider {...props} framework={'nextjs'}>\n {props.children}\n </FronteggNextJSProvider>\n );\n};\n"],"mappings":";AAAA,YAAY;;AAAC,IAAAA,sBAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,cAAA,CAAAC,OAAA;EAAAC,KAAA;AAAA;AAAAD,OAAA,CAAAE,qBAAA;AAAA,IAAAC,SAAA,GAAAP,sBAAA,CAAAC,OAAA;AAAA,IAAAO,8BAAA,GAAAR,sBAAA,CAAAC,OAAA;AAEb,IAAAQ,GAAA,GAAAR,OAAA;AACA,IAAAS,WAAA,GAAAT,OAAA;AACA,IAAAU,QAAA,GAAAV,OAAA;AAEA,IAAAW,OAAA,GAAAX,OAAA;AACA,IAAAY,MAAA,GAAAC,uBAAA,CAAAb,OAAA;AACA,IAAAc,WAAA,GAAAf,sBAAA,CAAAC,OAAA;AACA,IAAAe,gBAAA,GAAAhB,sBAAA,CAAAC,OAAA;AACA,IAAAgB,kBAAA,GAAAjB,sBAAA,CAAAC,OAAA;AAAkD,IAAAiB,WAAA,GAAAjB,OAAA;AAAA,IAAAkB,iBAAA;AAAA,MAAAC,SAAA;AAAA,SAAAC,yBAAAC,WAAA,eAAAC,OAAA,kCAAAC,iBAAA,OAAAD,OAAA,QAAAE,gBAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,WAAA,WAAAA,WAAA,GAAAG,gBAAA,GAAAD,iBAAA,KAAAF,WAAA;AAAA,SAAAR,wBAAAY,GAAA,EAAAJ,WAAA,SAAAA,WAAA,IAAAI,GAAA,IAAAA,GAAA,CAAAC,UAAA,WAAAD,GAAA,QAAAA,GAAA,oBAAAA,GAAA,wBAAAA,GAAA,4BAAAE,OAAA,EAAAF,GAAA,UAAAG,KAAA,GAAAR,wBAAA,CAAAC,WAAA,OAAAO,KAAA,IAAAA,KAAA,CAAAC,GAAA,CAAAJ,GAAA,YAAAG,KAAA,CAAAE,GAAA,CAAAL,GAAA,SAAAM,MAAA,WAAAC,qBAAA,GAAA/B,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAgC,wBAAA,WAAAC,GAAA,IAAAT,GAAA,QAAAS,GAAA,kBAAAjC,MAAA,CAAAkC,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAZ,GAAA,EAAAS,GAAA,SAAAI,IAAA,GAAAN,qBAAA,GAAA/B,MAAA,CAAAgC,wBAAA,CAAAR,GAAA,EAAAS,GAAA,cAAAI,IAAA,KAAAA,IAAA,CAAAR,GAAA,IAAAQ,IAAA,CAAAC,GAAA,KAAAtC,MAAA,CAAAC,cAAA,CAAA6B,MAAA,EAAAG,GAAA,EAAAI,IAAA,YAAAP,MAAA,CAAAG,GAAA,IAAAT,GAAA,CAAAS,GAAA,SAAAH,MAAA,CAAAJ,OAAA,GAAAF,GAAA,MAAAG,KAAA,IAAAA,KAAA,CAAAW,GAAA,CAAAd,GAAA,EAAAM,MAAA,YAAAA,MAAA;AASlD,MAAMS,SAA6B,GAAIC,MAAM,IAAK;EAAA,IAAAC,eAAA,EAAAC,kBAAA;EAChD,MAAM;MAAEC,MAAM;MAAEC,OAAO;MAAEC;IAAyC,CAAC,GAAGL,MAAM;IAAhBM,KAAK,OAAAxC,8BAAA,CAAAoB,OAAA,EAAKc,MAAM,EAAAtB,SAAA;EAC5E,MAAM6B,QAAQ,IAAAN,eAAA,GAAGK,KAAK,CAACE,QAAQ,YAAAP,eAAA,GAAIE,MAAM,CAACM,QAAQ;EAElD,MAAMC,YAAY,GAAG,IAAAC,wBAAe,EAACJ,QAAQ,EAAEJ,MAAM,GAAAD,kBAAA,GAAEI,KAAK,CAACM,WAAW,qBAAjBV,kBAAA,CAAmBW,MAAM,CAAC;EAEjF,MAAMC,GAAG,GAAG,IAAAC,cAAO,EAAC,MAAM;IACxB,IAAIC,UAAU;IACd,IAAI;MACFA,UAAU,GAAGC,aAAS,CAACC,WAAW,CAACd,OAAO,WAAPA,OAAO,GAAI,SAAS,CAAC;IAC1D,CAAC,CAAC,OAAOe,CAAC,EAAE;MAAA,IAAAC,gBAAA;MACVJ,UAAU,GAAG,IAAAK,cAAU,MAAAxD,SAAA,CAAAqB,OAAA,MAEhBoB,KAAK;QACRD,cAAc,EAAEA,cAAc,WAAdA,cAAc,GAAI,KAAK;QACvCG,QAAQ,GAAAY,gBAAA,GAAEd,KAAK,CAACE,QAAQ,YAAAY,gBAAA,GAAIb,QAAQ;QACpCK,WAAW,MAAA/C,SAAA,CAAAqB,OAAA,MACNoB,KAAK,CAACM,WAAW;UACpBF;QAAY,EACb;QACDY,cAAc,MAAAzD,SAAA,CAAAqB,OAAA;UACZqC,kBAAkB,EAAE;QAAS,GAC1BjB,KAAK,CAACgB,cAAc,CACxB;QACDZ;MAAY,IAEdN,OAAO,WAAPA,OAAO,GAAI,SAAS,CACrB;IACH;IACA,OAAOY,UAAU;EACnB,CAAC,EAAE,CAACZ,OAAO,EAAEE,KAAK,EAAED,cAAc,EAAEE,QAAQ,EAAEG,YAAY,CAAC,CAAC;EAC5Dc,sBAAa,CAACC,eAAe,CAACf,YAAY,CAAC;EAE3C,IAAAgB,gBAAS,EAAC,MAAM;IACdZ,GAAG,CAACa,KAAK,CAACC,QAAQ,CAAC;MAAEC,IAAI,EAAE,uBAAuB;MAAEC,OAAO,EAAE;IAAK,CAAC,CAAC;EACtE,CAAC,EAAE,CAAChB,GAAG,CAAC,CAAC;EAET,oBACE,IAAAtC,WAAA,CAAAuD,GAAA,EAAC1D,WAAA,CAAAa,OAAU,CAAC8C,QAAQ;IAACrE,KAAK,EAAEmD,GAAI;IAAAmB,QAAA,eAC9B,IAAAzD,WAAA,CAAAuD,GAAA,EAAC/D,WAAA,CAAAkE,qBAAqB,MAAArE,SAAA,CAAAqB,OAAA,UAAArB,SAAA,CAAAqB,OAAA,MAAWoB,KAAK;MAAEQ;IAAG;MAAAmB,QAAA,EAAa3B,KAAK,CAAC2B;IAAQ;EAAyB,EAC3E;AAE1B,CAAC;AAED,MAAME,sBAAsD,GAAI7B,KAAK,IAAK;EACxE,MAAMH,MAAM,GAAG,IAAAiC,iBAAS,GAAE;EAE1B,oBACE,IAAA5D,WAAA,CAAA6D,IAAA,EAACtC,SAAS,MAAAlC,SAAA,CAAAqB,OAAA,MAAKoB,KAAK;IAAEH,MAAM,EAAEA,MAAO;IAAA8B,QAAA,GAAAxD,iBAAA,KAAAA,iBAAA,gBACnC,IAAAD,WAAA,CAAAuD,GAAA,EAACxD,kBAAA,CAAAW,OAAgB,KAAG,GACnBoB,KAAK,CAAC2B,QAAQ;EAAA,GACL;AAEhB,CAAC;AAEM,MAAMrE,qBAAqD,GAAI0C,KAAK,IAAK;EAC9E,oBACE,IAAA9B,WAAA,CAAAuD,GAAA,EAACI,sBAAsB,MAAAtE,SAAA,CAAAqB,OAAA,MAAKoB,KAAK;IAAEgC,SAAS,EAAE,QAAS;IAAAL,QAAA,EACpD3B,KAAK,CAAC2B;EAAQ,GACQ;AAE7B,CAAC;AAACvE,OAAA,CAAAE,qBAAA,GAAAA,qBAAA"}
1
+ {"version":3,"file":"FronteggProviderNoSSR.js","names":["_interopRequireDefault","require","Object","defineProperty","exports","value","FronteggProviderNoSSR","_extends2","_objectWithoutPropertiesLoose2","_js","_reactHooks","_restApi","_router","_react","_interopRequireWildcard","_AppContext","_useOnRedirectTo","_ExpireInListener2","_jsxRuntime","_ExpireInListener","_excluded","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","Connector","_props","_props$basename","_props$authOptions","router","appName","hostedLoginBox","props","baseName","basename","basePath","onRedirectTo","useOnRedirectTo","authOptions","routes","app","useMemo","createdApp","AppHolder","getInstance","e","_props$basename2","initialize","contextOptions","requestCredentials","ContextHolder","for","setOnRedirectTo","useEffect","store","dispatch","type","payload","jsx","Provider","children","FronteggStoreProvider","FronteggNextJSProvider","useRouter","jsxs","framework"],"sources":["../../../../packages/nextjs/src/no-ssr/FronteggProviderNoSSR.tsx"],"sourcesContent":["'use client';\n\nimport { AppHolder, initialize } from '@frontegg/js';\nimport { FronteggStoreProvider } from '@frontegg/react-hooks';\nimport { ContextHolder } from '@frontegg/rest-api';\nimport { FronteggAppOptions } from '@frontegg/types';\nimport { NextRouter, useRouter } from 'next/router';\nimport React, { FC, PropsWithChildren, useEffect, useMemo } from 'react';\nimport AppContext from '../common/AppContext';\nimport useOnRedirectTo from '../utils/useOnRedirectTo';\nimport ExpireInListener from './ExpireInListener';\n\nexport type FronteggProviderNoSSRProps = PropsWithChildren<FronteggAppOptions>;\n\ntype ConnectorProps = PropsWithChildren<FronteggAppOptions> & {\n router: NextRouter;\n appName?: string;\n};\n\nconst Connector: FC<ConnectorProps> = (_props) => {\n const { router, appName, hostedLoginBox, customLoginBox, ...props } = _props;\n const baseName = props.basename ?? router.basePath;\n\n const onRedirectTo = useOnRedirectTo(baseName, router, props.authOptions?.routes);\n\n const app = useMemo(() => {\n let createdApp;\n try {\n createdApp = AppHolder.getInstance(appName ?? 'default');\n } catch (e) {\n createdApp = initialize(\n {\n ...props,\n hostedLoginBox: hostedLoginBox ?? false,\n basename: props.basename ?? baseName,\n authOptions: {\n ...props.authOptions,\n onRedirectTo,\n },\n contextOptions: {\n requestCredentials: 'include',\n ...props.contextOptions,\n },\n onRedirectTo,\n },\n appName ?? 'default'\n );\n }\n return createdApp;\n }, [appName, props, hostedLoginBox, baseName, onRedirectTo]);\n ContextHolder.for(appName ?? 'default').setOnRedirectTo(onRedirectTo);\n\n useEffect(() => {\n app.store.dispatch({ type: 'auth/requestAuthorize', payload: true });\n }, [app]);\n\n return (\n <AppContext.Provider value={app}>\n <FronteggStoreProvider {...({ ...props, app } as any)}>{props.children}</FronteggStoreProvider>\n </AppContext.Provider>\n );\n};\n\nconst FronteggNextJSProvider: FC<FronteggProviderNoSSRProps> = (props) => {\n const router = useRouter();\n\n return (\n <Connector {...props} router={router}>\n <ExpireInListener />\n {props.children}\n </Connector>\n );\n};\n\nexport const FronteggProviderNoSSR: FC<FronteggProviderNoSSRProps> = (props) => {\n return (\n <FronteggNextJSProvider {...props} framework={'nextjs'}>\n {props.children}\n </FronteggNextJSProvider>\n );\n};\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@frontegg/nextjs",
3
3
  "libName": "FronteggNextJs",
4
- "version": "9.0.4",
4
+ "version": "9.0.5-alpha.11469892684",
5
5
  "author": "Frontegg LTD",
6
6
  "license": "MIT",
7
7
  "repository": {
@@ -70,7 +70,8 @@ const withFronteggApp = (app, options) => {
70
70
  envAppUrl,
71
71
  envBaseUrl,
72
72
  envClientId,
73
- secureJwtEnabled
73
+ secureJwtEnabled,
74
+ envAppId
74
75
  } = appProps.pageProps;
75
76
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_FronteggPagesProvider.default, (0, _extends2.default)({}, options, {
76
77
  user,
@@ -81,6 +82,7 @@ const withFronteggApp = (app, options) => {
81
82
  envBaseUrl,
82
83
  secureJwtEnabled,
83
84
  envClientId,
85
+ envAppId,
84
86
  children: app(appProps)
85
87
  }));
86
88
  }
@@ -1 +1 @@
1
- {"version":3,"file":"withFronteggApp.js","names":["_react","_interopRequireDefault","require","_FronteggPagesProvider","_refreshAccessTokenIfNeeded","_interopRequireWildcard","_fetchUserData","_config","_helpers","_jsxRuntime","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","withFronteggApp","app","options","originalGetInitialProps","getInitialProps","appContext","ctx","Component","appEnvConfig","appContextSessionData","session","user","tenants","req","_ctx$req","config","url","isRuntimeNextRequest","refreshAccessTokenIfNeeded","process","env","removeJwtSignatureFrom","assign","userData","fetchUserData","getSession","getHeaders","_ctx$req$headers","_ctx$req2","headers","_userData","pageProps","_extends2","CustomFronteggApp","appProps","activeTenant","envAppUrl","envBaseUrl","envClientId","secureJwtEnabled","jsx","children","exports"],"sources":["../../../../../packages/nextjs/src/pages/withFronteggApp/withFronteggApp.tsx"],"sourcesContent":["import React from 'react';\nimport type { AppContext, AppInitialProps, AppProps } from 'next/app';\nimport type { FronteggCustomAppClass, FronteggCustomApp, WithFronteggAppOptions } from './types';\nimport FronteggProvider from '../FronteggPagesProvider';\nimport refreshAccessTokenIfNeeded, { isRuntimeNextRequest } from '../../utils/refreshAccessTokenIfNeeded';\nimport fetchUserData from '../../utils/fetchUserData';\nimport config from '../../config';\nimport { AllUserData } from '../../types';\nimport { removeJwtSignatureFrom } from '../../middleware/helpers';\n\nexport const withFronteggApp = (app: FronteggCustomAppClass, options?: WithFronteggAppOptions): FronteggCustomApp => {\n const originalGetInitialProps = app.getInitialProps;\n\n app.getInitialProps = async (appContext: AppContext & AllUserData): Promise<AppInitialProps> => {\n const { ctx, Component } = appContext;\n\n let appEnvConfig = {};\n let appContextSessionData: AllUserData = {\n session: null,\n user: null,\n tenants: null,\n };\n\n if (ctx.req) {\n appEnvConfig = config.appEnvConfig;\n const url = ctx.req?.url;\n\n if (url && isRuntimeNextRequest(url)) {\n let session = await refreshAccessTokenIfNeeded(ctx);\n if (process.env['FRONTEGG_SECURE_JWT_ENABLED'] === 'true') {\n session = removeJwtSignatureFrom(session);\n }\n Object.assign(appContextSessionData, { session });\n } else {\n let userData = await fetchUserData({\n getSession: async () => await refreshAccessTokenIfNeeded(ctx),\n getHeaders: async () => ctx.req?.headers ?? {},\n });\n if (process.env['FRONTEGG_SECURE_JWT_ENABLED'] === 'true' && userData) {\n userData = removeJwtSignatureFrom(userData);\n userData.session = removeJwtSignatureFrom(userData?.session);\n }\n Object.assign(appContextSessionData, userData);\n }\n }\n\n Object.assign(appContext, appContextSessionData);\n\n return {\n pageProps: {\n ...(originalGetInitialProps ? await originalGetInitialProps(appContext) : {}),\n ...(Component.getInitialProps ? await Component.getInitialProps(ctx) : {}),\n ...(appContextSessionData.session == null ? {} : appContextSessionData),\n ...appEnvConfig,\n },\n };\n };\n\n function CustomFronteggApp(appProps: AppProps) {\n const { user, tenants, activeTenant, session, envAppUrl, envBaseUrl, envClientId, secureJwtEnabled } =\n appProps.pageProps;\n return (\n <FronteggProvider\n {...options}\n {...{\n user,\n tenants,\n activeTenant,\n session,\n envAppUrl,\n envBaseUrl,\n secureJwtEnabled,\n envClientId,\n }}\n >\n {app(appProps) as any}\n </FronteggProvider>\n );\n }\n\n CustomFronteggApp.getInitialProps = app.getInitialProps;\n\n return CustomFronteggApp as FronteggCustomApp;\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"withFronteggApp.js","names":["_react","_interopRequireDefault","require","_FronteggPagesProvider","_refreshAccessTokenIfNeeded","_interopRequireWildcard","_fetchUserData","_config","_helpers","_jsxRuntime","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","withFronteggApp","app","options","originalGetInitialProps","getInitialProps","appContext","ctx","Component","appEnvConfig","appContextSessionData","session","user","tenants","req","_ctx$req","config","url","isRuntimeNextRequest","refreshAccessTokenIfNeeded","process","env","removeJwtSignatureFrom","assign","userData","fetchUserData","getSession","getHeaders","_ctx$req$headers","_ctx$req2","headers","_userData","pageProps","_extends2","CustomFronteggApp","appProps","activeTenant","envAppUrl","envBaseUrl","envClientId","secureJwtEnabled","envAppId","jsx","children","exports"],"sources":["../../../../../packages/nextjs/src/pages/withFronteggApp/withFronteggApp.tsx"],"sourcesContent":["import React from 'react';\nimport type { AppContext, AppInitialProps, AppProps } from 'next/app';\nimport type { FronteggCustomAppClass, FronteggCustomApp, WithFronteggAppOptions } from './types';\nimport FronteggProvider from '../FronteggPagesProvider';\nimport refreshAccessTokenIfNeeded, { isRuntimeNextRequest } from '../../utils/refreshAccessTokenIfNeeded';\nimport fetchUserData from '../../utils/fetchUserData';\nimport config from '../../config';\nimport { AllUserData } from '../../types';\nimport { removeJwtSignatureFrom } from '../../middleware/helpers';\n\nexport const withFronteggApp = (app: FronteggCustomAppClass, options?: WithFronteggAppOptions): FronteggCustomApp => {\n const originalGetInitialProps = app.getInitialProps;\n\n app.getInitialProps = async (appContext: AppContext & AllUserData): Promise<AppInitialProps> => {\n const { ctx, Component } = appContext;\n\n let appEnvConfig = {};\n let appContextSessionData: AllUserData = {\n session: null,\n user: null,\n tenants: null,\n };\n\n if (ctx.req) {\n appEnvConfig = config.appEnvConfig;\n const url = ctx.req?.url;\n\n if (url && isRuntimeNextRequest(url)) {\n let session = await refreshAccessTokenIfNeeded(ctx);\n if (process.env['FRONTEGG_SECURE_JWT_ENABLED'] === 'true') {\n session = removeJwtSignatureFrom(session);\n }\n Object.assign(appContextSessionData, { session });\n } else {\n let userData = await fetchUserData({\n getSession: async () => await refreshAccessTokenIfNeeded(ctx),\n getHeaders: async () => ctx.req?.headers ?? {},\n });\n if (process.env['FRONTEGG_SECURE_JWT_ENABLED'] === 'true' && userData) {\n userData = removeJwtSignatureFrom(userData);\n userData.session = removeJwtSignatureFrom(userData?.session);\n }\n Object.assign(appContextSessionData, userData);\n }\n }\n\n Object.assign(appContext, appContextSessionData);\n\n return {\n pageProps: {\n ...(originalGetInitialProps ? await originalGetInitialProps(appContext) : {}),\n ...(Component.getInitialProps ? await Component.getInitialProps(ctx) : {}),\n ...(appContextSessionData.session == null ? {} : appContextSessionData),\n ...appEnvConfig,\n },\n };\n };\n\n function CustomFronteggApp(appProps: AppProps) {\n const { user, tenants, activeTenant, session, envAppUrl, envBaseUrl, envClientId, secureJwtEnabled, envAppId } =\n appProps.pageProps;\n return (\n <FronteggProvider\n {...options}\n {...{\n user,\n tenants,\n activeTenant,\n session,\n envAppUrl,\n envBaseUrl,\n secureJwtEnabled,\n envClientId,\n envAppId,\n }}\n >\n {app(appProps) as any}\n </FronteggProvider>\n );\n }\n\n CustomFronteggApp.getInitialProps = app.getInitialProps;\n\n return CustomFronteggApp as FronteggCustomApp;\n};\n"],"mappings":"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"}
package/sdkVersion.js CHANGED
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
  var _default = {
8
- version: '9.0.4'
8
+ version: '9.0.5-alpha.11469892684'
9
9
  };
10
10
  exports.default = _default;
11
11
  //# sourceMappingURL=sdkVersion.js.map
package/sdkVersion.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"sdkVersion.js","names":["version","exports","default","_default"],"sources":["../../../packages/nextjs/src/sdkVersion.ts"],"sourcesContent":["export default { version: '9.0.4' };\n"],"mappings":";;;;;;eAAe;EAAEA,OAAO,EAAE;AAAQ,CAAC;AAAAC,OAAA,CAAAC,OAAA,GAAAC,QAAA"}
1
+ {"version":3,"file":"sdkVersion.js","names":["version","exports","default","_default"],"sources":["../../../packages/nextjs/src/sdkVersion.ts"],"sourcesContent":["export default { version: '9.0.5-alpha.11469892684' };\n"],"mappings":";;;;;;eAAe;EAAEA,OAAO,EAAE;AAA0B,CAAC;AAAAC,OAAA,CAAAC,OAAA,GAAAC,QAAA"}
package/types/index.d.ts CHANGED
@@ -59,6 +59,7 @@ export interface FronteggProviderOptions extends Omit<FronteggAppOptions, 'conte
59
59
  envAppUrl: string;
60
60
  envBaseUrl: string;
61
61
  envClientId: string;
62
+ envAppId?: string;
62
63
  secureJwtEnabled?: boolean;
63
64
  contextOptions?: Omit<FronteggAppOptions['contextOptions'], 'baseUrl'>;
64
65
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../../packages/nextjs/src/types/index.ts"],"sourcesContent":["import type { FronteggAppOptions } from '@frontegg/types';\nimport type { ILoginResponse, ITenantsResponse } from '@frontegg/rest-api';\nimport type { IncomingMessage } from 'http';\nimport type { ReactNode } from 'react';\nimport type { AppRouterInstance } from 'next/dist/shared/lib/app-router-context';\nimport type { NextRouter } from 'next/router';\n\nexport interface EncryptionUtils {\n unsealTokens(data: string): Promise<FronteggUserTokens | undefined>;\n\n sealTokens(tokens: FronteggUserTokens, ttl: number): Promise<string>;\n}\n\nexport interface FronteggUserTokens {\n accessToken: string;\n refreshToken?: string;\n}\n\nexport interface FronteggNextJSSession extends FronteggUserTokens {\n user: FronteggUserSession;\n}\n\nexport type RequestType = IncomingMessage | Request;\n\nexport interface AccountEnvironment {\n id: string;\n createdAt: string;\n environment: 'production' | 'development';\n}\n\nexport interface CustomClaims {\n accountEnvironments: AccountEnvironment[];\n}\n\nexport interface FronteggUserTokens {\n accessToken: string;\n refreshToken?: string;\n}\n\nexport interface AllUserData {\n user?: ILoginResponse | null;\n tenants?: ITenantsResponse[] | null;\n activeTenant?: ITenantsResponse;\n session?: FronteggNextJSSession | null;\n}\nexport interface FronteggUserSession {\n sub: string;\n name: string;\n email: string;\n email_verified: boolean;\n metadata: any;\n roles: string[];\n permissions: string[];\n tenantId: string;\n tenantIds: string[];\n profilePictureUrl: string;\n type: string; // \"userToken\"\n customClaims: CustomClaims;\n iat: number;\n exp: number;\n aud: string;\n iss: string;\n}\n\nexport interface FronteggNextJSSession extends FronteggUserTokens {\n user: FronteggUserSession;\n}\n\nexport interface FronteggProviderOptions extends Omit<FronteggAppOptions, 'contextOptions'>, AllUserData {\n envAppUrl: string;\n envBaseUrl: string;\n envClientId: string;\n secureJwtEnabled?: boolean;\n contextOptions?: Omit<FronteggAppOptions['contextOptions'], 'baseUrl'>;\n}\n\nexport interface FronteggProviderProps extends FronteggProviderOptions {\n children?: ReactNode;\n router: AppRouterInstance | NextRouter;\n appName?: string;\n}\n\ntype CustomLoginOptionsWithParamKeyType = {\n /**\n *The param key from your tenant login url, for 'frontegg.com?organization=[tenant]' would be 'organization'\n */\n paramKey: string;\n subDomainIndex?: never;\n};\n\ntype CustomLoginOptionsWithSubDomainType = {\n /**\n *The index of sub domain from your tenant login url, for 'https://[tenant].frontegg.com' would be 0\n */\n subDomainIndex: number;\n paramKey?: never;\n};\n\nexport type CustomLoginOptionsType = CustomLoginOptionsWithParamKeyType | CustomLoginOptionsWithSubDomainType;\n\ntype PagesDirectoryProviderProps = {\n customLoginOptions?: CustomLoginOptionsType;\n};\n\nexport type ClientFronteggProviderProps = Omit<FronteggProviderProps, 'router'> & PagesDirectoryProviderProps;\n\ndeclare module 'iron-session' {\n interface IronSessionData {\n accessToken: FronteggNextJSSession['accessToken'];\n user: FronteggNextJSSession['user'];\n }\n}\n\ndeclare global {\n var customLoginAppUrl: string | undefined;\n interface ProcessEnv {\n FRONTEGG_BASE_URL: string;\n PORT?: string;\n PWD: string;\n }\n}\n"],"mappings":""}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../../packages/nextjs/src/types/index.ts"],"sourcesContent":["import type { FronteggAppOptions } from '@frontegg/types';\nimport type { ILoginResponse, ITenantsResponse } from '@frontegg/rest-api';\nimport type { IncomingMessage } from 'http';\nimport type { ReactNode } from 'react';\nimport type { AppRouterInstance } from 'next/dist/shared/lib/app-router-context';\nimport type { NextRouter } from 'next/router';\n\nexport interface EncryptionUtils {\n unsealTokens(data: string): Promise<FronteggUserTokens | undefined>;\n\n sealTokens(tokens: FronteggUserTokens, ttl: number): Promise<string>;\n}\n\nexport interface FronteggUserTokens {\n accessToken: string;\n refreshToken?: string;\n}\n\nexport interface FronteggNextJSSession extends FronteggUserTokens {\n user: FronteggUserSession;\n}\n\nexport type RequestType = IncomingMessage | Request;\n\nexport interface AccountEnvironment {\n id: string;\n createdAt: string;\n environment: 'production' | 'development';\n}\n\nexport interface CustomClaims {\n accountEnvironments: AccountEnvironment[];\n}\n\nexport interface FronteggUserTokens {\n accessToken: string;\n refreshToken?: string;\n}\n\nexport interface AllUserData {\n user?: ILoginResponse | null;\n tenants?: ITenantsResponse[] | null;\n activeTenant?: ITenantsResponse;\n session?: FronteggNextJSSession | null;\n}\nexport interface FronteggUserSession {\n sub: string;\n name: string;\n email: string;\n email_verified: boolean;\n metadata: any;\n roles: string[];\n permissions: string[];\n tenantId: string;\n tenantIds: string[];\n profilePictureUrl: string;\n type: string; // \"userToken\"\n customClaims: CustomClaims;\n iat: number;\n exp: number;\n aud: string;\n iss: string;\n}\n\nexport interface FronteggNextJSSession extends FronteggUserTokens {\n user: FronteggUserSession;\n}\n\nexport interface FronteggProviderOptions extends Omit<FronteggAppOptions, 'contextOptions'>, AllUserData {\n envAppUrl: string;\n envBaseUrl: string;\n envClientId: string;\n envAppId?: string;\n secureJwtEnabled?: boolean;\n contextOptions?: Omit<FronteggAppOptions['contextOptions'], 'baseUrl'>;\n}\n\nexport interface FronteggProviderProps extends FronteggProviderOptions {\n children?: ReactNode;\n router: AppRouterInstance | NextRouter;\n appName?: string;\n}\n\ntype CustomLoginOptionsWithParamKeyType = {\n /**\n *The param key from your tenant login url, for 'frontegg.com?organization=[tenant]' would be 'organization'\n */\n paramKey: string;\n subDomainIndex?: never;\n};\n\ntype CustomLoginOptionsWithSubDomainType = {\n /**\n *The index of sub domain from your tenant login url, for 'https://[tenant].frontegg.com' would be 0\n */\n subDomainIndex: number;\n paramKey?: never;\n};\n\nexport type CustomLoginOptionsType = CustomLoginOptionsWithParamKeyType | CustomLoginOptionsWithSubDomainType;\n\ntype PagesDirectoryProviderProps = {\n customLoginOptions?: CustomLoginOptionsType;\n};\n\nexport type ClientFronteggProviderProps = Omit<FronteggProviderProps, 'router'> & PagesDirectoryProviderProps;\n\ndeclare module 'iron-session' {\n interface IronSessionData {\n accessToken: FronteggNextJSSession['accessToken'];\n user: FronteggNextJSSession['user'];\n }\n}\n\ndeclare global {\n var customLoginAppUrl: string | undefined;\n interface ProcessEnv {\n FRONTEGG_BASE_URL: string;\n PORT?: string;\n PWD: string;\n }\n}\n"],"mappings":""}
@@ -59,6 +59,12 @@ const getCookieHeader = request => {
59
59
  return cookieHeader;
60
60
  };
61
61
  exports.getCookieHeader = getCookieHeader;
62
- const getRefreshTokenCookieNameVariants = () => [`fe_refresh_${_config.default.clientId}`, `fe_refresh_${_config.default.clientId.replace('-', '')}`, `fe_refresh_${_config.default.clientId.replace(/-/g, '')}`];
62
+ const getRefreshTokenCookieNameVariants = () => {
63
+ if (_config.default.rewriteCookieByAppId && _config.default.appId) {
64
+ return [`fe_refresh_${_config.default.appId}`, `fe_refresh_${_config.default.appId.replace('-', '')}`, `fe_refresh_${_config.default.appId.replace(/-/g, '')}`];
65
+ } else {
66
+ return [`fe_refresh_${_config.default.clientId}`, `fe_refresh_${_config.default.clientId.replace('-', '')}`, `fe_refresh_${_config.default.clientId.replace(/-/g, '')}`];
67
+ }
68
+ };
63
69
  exports.getRefreshTokenCookieNameVariants = getRefreshTokenCookieNameVariants;
64
70
  //# sourceMappingURL=helpers.js.map