@frontegg/nextjs 6.7.20 → 6.7.21-alpha.4441481917
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 +10 -0
- package/README.md +19 -37
- package/api/index.d.ts +19 -0
- package/api/index.js +78 -0
- package/api/index.js.map +1 -0
- package/api/package.json +6 -0
- package/api/urls.d.ts +33 -0
- package/api/urls.js +46 -0
- package/api/urls.js.map +1 -0
- package/api/utils.d.ts +46 -0
- package/api/utils.js +108 -0
- package/api/utils.js.map +1 -0
- package/app/ClientFronteggProvider.d.ts +3 -0
- package/app/ClientFronteggProvider.js +25 -0
- package/app/ClientFronteggProvider.js.map +1 -0
- package/app/FronteggAppProvider.d.ts +4 -0
- package/app/FronteggAppProvider.js +17 -0
- package/app/FronteggAppProvider.js.map +1 -0
- package/{client → app}/FronteggAppRouter.d.ts +11 -10
- package/app/FronteggAppRouter.js +31 -0
- package/app/FronteggAppRouter.js.map +1 -0
- package/app/helpers.d.ts +5 -0
- package/app/helpers.js +32 -0
- package/app/helpers.js.map +1 -0
- package/app/index.d.ts +4 -0
- package/app/index.js +4 -0
- package/app/index.js.map +1 -0
- package/app/package.json +6 -0
- package/common/{client/AppContext.d.ts → AppContext.d.ts} +4 -4
- package/common/AppContext.js +6 -0
- package/common/AppContext.js.map +1 -0
- package/{AuthorizedContent.d.ts → common/AuthorizedContent.d.ts} +9 -8
- package/common/AuthorizedContent.js +48 -0
- package/common/AuthorizedContent.js.map +1 -0
- package/common/{client/FronteggBaseProvider.d.ts → FronteggBaseProvider.d.ts} +3 -3
- package/common/FronteggBaseProvider.js +67 -0
- package/common/FronteggBaseProvider.js.map +1 -0
- package/common/FronteggRouterBase.d.ts +9 -0
- package/common/FronteggRouterBase.js +42 -0
- package/common/FronteggRouterBase.js.map +1 -0
- package/common/helpers.d.ts +3 -9
- package/common/helpers.js +24 -0
- package/common/helpers.js.map +1 -0
- package/common/index.d.ts +4 -6
- package/common/index.js +5 -10
- package/common/index.js.map +1 -1
- package/common/package.json +6 -0
- package/common/useRequestAuthorizeSSR.d.ts +5 -0
- package/common/useRequestAuthorizeSSR.js +24 -0
- package/common/useRequestAuthorizeSSR.js.map +1 -0
- package/config/constants.d.ts +57 -0
- package/config/constants.js +13 -0
- package/config/constants.js.map +1 -0
- package/config/helpers.d.ts +28 -0
- package/config/helpers.js +87 -0
- package/config/helpers.js.map +1 -0
- package/config/index.d.ts +24 -0
- package/config/index.js +82 -0
- package/config/index.js.map +1 -0
- package/config/package.json +6 -0
- package/config/types.d.ts +18 -0
- package/config/types.js +2 -0
- package/config/types.js.map +1 -0
- package/edge/getSessionOnEdge.d.ts +3 -2
- package/edge/getSessionOnEdge.js +8 -0
- package/edge/getSessionOnEdge.js.map +1 -0
- package/edge/index.d.ts +3 -2
- package/edge/index.js +4 -64
- package/edge/index.js.map +1 -1
- package/edge/package.json +6 -0
- package/edge/redirectToLogin.d.ts +2 -0
- package/edge/redirectToLogin.js +9 -0
- package/edge/redirectToLogin.js.map +1 -0
- package/edge/shouldBypassMiddleware.d.ts +21 -7
- package/edge/shouldBypassMiddleware.js +42 -0
- package/edge/shouldBypassMiddleware.js.map +1 -0
- package/index.d.ts +7 -11
- package/index.js +13 -1401
- package/index.js.map +1 -1
- package/middleware/FronteggApiMiddleware.d.ts +8 -0
- package/middleware/FronteggApiMiddleware.js +28 -0
- package/middleware/FronteggApiMiddleware.js.map +1 -0
- package/middleware/FronteggProxy.d.ts +4 -0
- package/middleware/FronteggProxy.js +24 -0
- package/middleware/FronteggProxy.js.map +1 -0
- package/middleware/ProxyRequestCallback.d.ts +13 -0
- package/middleware/ProxyRequestCallback.js +48 -0
- package/middleware/ProxyRequestCallback.js.map +1 -0
- package/middleware/ProxyResponseCallback.d.ts +13 -0
- package/middleware/ProxyResponseCallback.js +103 -0
- package/middleware/ProxyResponseCallback.js.map +1 -0
- package/middleware/constants.d.ts +8 -0
- package/middleware/constants.js +9 -0
- package/middleware/constants.js.map +1 -0
- package/{common/FronteggProxy.d.ts → middleware/helpers.d.ts} +13 -26
- package/middleware/helpers.js +35 -0
- package/middleware/helpers.js.map +1 -0
- package/middleware/index.d.ts +23 -0
- package/middleware/index.js +24 -0
- package/middleware/index.js.map +1 -0
- package/middleware/package.json +6 -0
- package/no-ssr/ExpireInListener.d.ts +2 -0
- package/no-ssr/ExpireInListener.js +22 -0
- package/no-ssr/ExpireInListener.js.map +1 -0
- package/{FronteggProviderNoSSR.d.ts → no-ssr/FronteggProviderNoSSR.d.ts} +4 -4
- package/no-ssr/FronteggProviderNoSSR.js +76 -0
- package/no-ssr/FronteggProviderNoSSR.js.map +1 -0
- package/no-ssr/index.d.ts +2 -0
- package/no-ssr/index.js +2 -0
- package/no-ssr/index.js.map +1 -0
- package/no-ssr/package.json +6 -0
- package/package.json +6 -7
- package/pages/FronteggPagesProvider/index.d.ts +4 -0
- package/pages/FronteggPagesProvider/index.js +24 -0
- package/pages/FronteggPagesProvider/index.js.map +1 -0
- package/pages/FronteggPagesProvider/package.json +6 -0
- package/{FronteggRouter.d.ts → pages/FronteggRouter/FronteggRouter.d.ts} +6 -5
- package/pages/FronteggRouter/FronteggRouter.js +38 -0
- package/pages/FronteggRouter/FronteggRouter.js.map +1 -0
- package/pages/FronteggRouter/index.d.ts +26 -0
- package/pages/FronteggRouter/index.js +27 -0
- package/pages/FronteggRouter/index.js.map +1 -0
- package/pages/FronteggRouter/package.json +6 -0
- package/{session.d.ts → pages/helpers.d.ts} +10 -10
- package/pages/helpers.js +31 -0
- package/pages/helpers.js.map +1 -0
- package/pages/index.d.ts +3 -0
- package/pages/index.js +4 -0
- package/pages/index.js.map +1 -0
- package/pages/package.json +6 -0
- package/pages/withFronteggApp/index.d.ts +2 -0
- package/pages/withFronteggApp/index.js +2 -0
- package/pages/withFronteggApp/index.js.map +1 -0
- package/pages/withFronteggApp/package.json +6 -0
- package/pages/withFronteggApp/types.d.ts +12 -0
- package/pages/withFronteggApp/types.js +2 -0
- package/pages/withFronteggApp/types.js.map +1 -0
- package/pages/withFronteggApp/withFronteggApp.d.ts +2 -0
- package/pages/withFronteggApp/withFronteggApp.js +62 -0
- package/pages/withFronteggApp/withFronteggApp.js.map +1 -0
- package/sdkVersion.d.ts +4 -4
- package/sdkVersion.js +4 -0
- package/sdkVersion.js.map +1 -0
- package/{common/types.d.ts → types/index.d.ts} +80 -74
- package/types/index.js +2 -0
- package/types/index.js.map +1 -0
- package/types/package.json +6 -0
- package/utils/common/constants.d.ts +12 -0
- package/utils/common/constants.js +14 -0
- package/utils/common/constants.js.map +1 -0
- package/utils/common/index.d.ts +15 -0
- package/utils/common/index.js +26 -0
- package/utils/common/index.js.map +1 -0
- package/utils/common/package.json +6 -0
- package/utils/cookies/constants.d.ts +7 -0
- package/utils/cookies/constants.js +8 -0
- package/utils/cookies/constants.js.map +1 -0
- package/utils/cookies/helpers.d.ts +25 -0
- package/utils/cookies/helpers.js +53 -0
- package/utils/cookies/helpers.js.map +1 -0
- package/utils/cookies/index.d.ts +45 -0
- package/utils/cookies/index.js +232 -0
- package/utils/cookies/index.js.map +1 -0
- package/utils/cookies/package.json +6 -0
- package/utils/cookies/serializer.d.ts +22 -0
- package/utils/cookies/serializer.js +154 -0
- package/utils/cookies/serializer.js.map +1 -0
- package/utils/cookies/types.d.ts +31 -0
- package/utils/cookies/types.js +2 -0
- package/utils/cookies/types.js.map +1 -0
- package/utils/createSession/index.d.ts +2 -0
- package/utils/createSession/index.js +44 -0
- package/utils/createSession/index.js.map +1 -0
- package/utils/createSession/package.json +6 -0
- package/utils/encryption/index.d.ts +3 -0
- package/utils/encryption/index.js +29 -0
- package/utils/encryption/index.js.map +1 -0
- package/utils/encryption/package.json +6 -0
- package/utils/encryption-edge/index.d.ts +3 -0
- package/utils/encryption-edge/index.js +29 -0
- package/utils/encryption-edge/index.js.map +1 -0
- package/utils/encryption-edge/package.json +6 -0
- package/utils/errors/FronteggEnvNotFound.d.ts +3 -0
- package/utils/errors/FronteggEnvNotFound.js +8 -0
- package/utils/errors/FronteggEnvNotFound.js.map +1 -0
- package/utils/errors/InvalidFronteggEnv.d.ts +3 -0
- package/utils/errors/InvalidFronteggEnv.js +8 -0
- package/utils/errors/InvalidFronteggEnv.js.map +1 -0
- package/utils/errors/index.d.ts +2 -0
- package/utils/errors/index.js +3 -0
- package/utils/errors/index.js.map +1 -0
- package/utils/errors/package.json +6 -0
- package/utils/fetchUserData/index.d.ts +7 -0
- package/utils/fetchUserData/index.js +49 -0
- package/utils/fetchUserData/index.js.map +1 -0
- package/utils/fetchUserData/package.json +6 -0
- package/utils/fronteggLogger/constants.d.ts +13 -0
- package/utils/fronteggLogger/constants.js +20 -0
- package/utils/fronteggLogger/constants.js.map +1 -0
- package/utils/fronteggLogger/index.d.ts +17 -0
- package/utils/fronteggLogger/index.js +61 -0
- package/utils/fronteggLogger/index.js.map +1 -0
- package/utils/fronteggLogger/package.json +6 -0
- package/{common/client/createOrGetFronteggApp.d.ts → utils/initializeFronteggApp/index.d.ts} +11 -11
- package/utils/initializeFronteggApp/index.js +100 -0
- package/utils/initializeFronteggApp/index.js.map +1 -0
- package/utils/initializeFronteggApp/package.json +6 -0
- package/utils/jwt/index.d.ts +22 -0
- package/utils/jwt/index.js +53 -0
- package/utils/jwt/index.js.map +1 -0
- package/utils/jwt/package.json +6 -0
- package/utils/refreshAccessToken/helpers.d.ts +16 -0
- package/utils/refreshAccessToken/helpers.js +69 -0
- package/utils/refreshAccessToken/helpers.js.map +1 -0
- package/utils/refreshAccessToken/index.d.ts +9 -0
- package/utils/refreshAccessToken/index.js +88 -0
- package/utils/refreshAccessToken/index.js.map +1 -0
- package/utils/refreshAccessToken/package.json +6 -0
- package/utils/routing/index.d.ts +5 -0
- package/utils/routing/index.js +23 -0
- package/utils/routing/index.js.map +1 -0
- package/utils/routing/package.json +6 -0
- package/utils/useOnRedirectTo/index.d.ts +5 -0
- package/utils/useOnRedirectTo/index.js +21 -0
- package/utils/useOnRedirectTo/index.js.map +1 -0
- package/utils/useOnRedirectTo/package.json +6 -0
- package/CookieManager-e50dc144.js +0 -322
- package/CookieManager-e50dc144.js.map +0 -1
- package/FronteggClientProviderNext13-b3c1e7a0.js +0 -158
- package/FronteggClientProviderNext13-b3c1e7a0.js.map +0 -1
- package/FronteggMiddleware.d.ts +0 -15
- package/FronteggProvider.d.ts +0 -3
- package/api-25516652.js +0 -58
- package/api-25516652.js.map +0 -1
- package/client/FronteggClientProviderNext13.d.ts +0 -3
- package/client/index.d.ts +0 -2
- package/client/index.js +0 -64
- package/client/index.js.map +0 -1
- package/common/CookieManager.d.ts +0 -41
- package/common/FronteggConfig.d.ts +0 -31
- package/common/api.d.ts +0 -3
- package/common/client/ExpireInListener.d.ts +0 -2
- package/common/client/hooks/index.d.ts +0 -1
- package/common/client/hooks/useRequestAuthorizeSSR.d.ts +0 -5
- package/common/client/index.d.ts +0 -4
- package/common/consts.d.ts +0 -6
- package/common/createGetSession.d.ts +0 -7
- package/common/utils.d.ts +0 -1
- package/createGetSession-2e1e4506.js +0 -50
- package/createGetSession-2e1e4506.js.map +0 -1
- package/helpers-dac37998.js +0 -88
- package/helpers-dac37998.js.map +0 -1
- package/refreshToken.d.ts +0 -3
- package/server/FronteggProviderNext13.d.ts +0 -3
- package/server/getSessionNext13.d.ts +0 -4
- package/server/index.d.ts +0 -2
- package/server/index.js +0 -84
- package/server/index.js.map +0 -1
- package/withFronteggApp.d.ts +0 -11
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { InvalidFronteggEnv, FronteggEnvNotFound } from '../utils/errors';
|
|
2
|
+
import { EnvVariables } from './constants';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Return environment variable's value.
|
|
6
|
+
* @throws {@link FronteggEnvNotFound} if not exists
|
|
7
|
+
* @param name
|
|
8
|
+
*/
|
|
9
|
+
export const getEnv = name => {
|
|
10
|
+
const value = process.env[name];
|
|
11
|
+
if (!value) {
|
|
12
|
+
throw new FronteggEnvNotFound(name);
|
|
13
|
+
}
|
|
14
|
+
return value;
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Return environment variable's value with default if not exists
|
|
19
|
+
* @param {string} name - the name from environment variable {@link EnvVariables}
|
|
20
|
+
* @param {optional string} defaultValue - default value if not exists
|
|
21
|
+
*/
|
|
22
|
+
export const getEnvOrDefault = (name, defaultValue) => {
|
|
23
|
+
try {
|
|
24
|
+
return getEnv(name);
|
|
25
|
+
} catch (e) {
|
|
26
|
+
return defaultValue;
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* extract hostname from appUrl for session cookie creation
|
|
32
|
+
* @param {string} appUrl - The generated appUrl
|
|
33
|
+
*/
|
|
34
|
+
export const generateCookieDomain = appUrl => {
|
|
35
|
+
try {
|
|
36
|
+
const url = new URL(appUrl);
|
|
37
|
+
return url.hostname.replace(/:(\d)+$/, '');
|
|
38
|
+
} catch (e) {
|
|
39
|
+
throw new InvalidFronteggEnv(EnvVariables.FRONTEGG_APP_URL, 'Valid URL');
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Create passwordMap if from {@link EnvVariables.FRONTEGG_ENCRYPTION_PASSWORD}
|
|
45
|
+
* @param {string} password - encryption password
|
|
46
|
+
*/
|
|
47
|
+
export function normalizeStringPasswordToMap(password) {
|
|
48
|
+
return typeof password === 'string' ? {
|
|
49
|
+
1: password
|
|
50
|
+
} : password;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Check if the Next.js application running on Vercel Deployment Service
|
|
55
|
+
* and calculate the appUrl based on Vercel Environment variables.
|
|
56
|
+
*/
|
|
57
|
+
export function generateAppUrl() {
|
|
58
|
+
const appUrlEnv = getEnvOrDefault(EnvVariables.FRONTEGG_APP_URL, undefined);
|
|
59
|
+
const isVercel = getEnvOrDefault(EnvVariables.VERCEL, undefined) != undefined;
|
|
60
|
+
const vercelUrl = getEnvOrDefault(EnvVariables.VERCEL_URL, undefined);
|
|
61
|
+
let appUrl;
|
|
62
|
+
if (appUrlEnv) {
|
|
63
|
+
appUrl = appUrlEnv;
|
|
64
|
+
} else if (isVercel && vercelUrl) {
|
|
65
|
+
appUrl = vercelUrl;
|
|
66
|
+
}
|
|
67
|
+
if (!appUrl) {
|
|
68
|
+
if (isVercel) {
|
|
69
|
+
throw new FronteggEnvNotFound(EnvVariables.VERCEL, EnvVariables.VERCEL_URL);
|
|
70
|
+
} else {
|
|
71
|
+
throw new FronteggEnvNotFound(EnvVariables.FRONTEGG_APP_URL);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* In some cases the {@link EnvVariables.VERCEL_URL} value does not
|
|
77
|
+
* include the URL protocol, bellow code to verify that the appUrl
|
|
78
|
+
* must have a valid http protocol
|
|
79
|
+
*/
|
|
80
|
+
if (!appUrl.startsWith('http')) {
|
|
81
|
+
// noinspection HttpUrlsUsage
|
|
82
|
+
const protocol = appUrl.startsWith('localhost') ? 'http://' : 'https://';
|
|
83
|
+
appUrl = `${protocol}${appUrl}`;
|
|
84
|
+
}
|
|
85
|
+
return appUrl;
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","names":["InvalidFronteggEnv","FronteggEnvNotFound","EnvVariables","getEnv","name","value","process","env","getEnvOrDefault","defaultValue","e","generateCookieDomain","appUrl","url","URL","hostname","replace","FRONTEGG_APP_URL","normalizeStringPasswordToMap","password","generateAppUrl","appUrlEnv","undefined","isVercel","VERCEL","vercelUrl","VERCEL_URL","startsWith","protocol"],"sources":["../../../../packages/nextjs/src/config/helpers.ts"],"sourcesContent":["import { InvalidFronteggEnv, FronteggEnvNotFound } from '../utils/errors';\nimport { PasswordsMap } from './types';\nimport { EnvVariables } from './constants';\n\n/**\n * Return environment variable's value.\n * @throws {@link FronteggEnvNotFound} if not exists\n * @param name\n */\nexport const getEnv = (name: string): string => {\n const value = process.env[name];\n if (!value) {\n throw new FronteggEnvNotFound(name);\n }\n return value;\n};\n\n/**\n * Return environment variable's value with default if not exists\n * @param {string} name - the name from environment variable {@link EnvVariables}\n * @param {optional string} defaultValue - default value if not exists\n */\nexport const getEnvOrDefault = <T>(name: string, defaultValue: T): string | T => {\n try {\n return getEnv(name);\n } catch (e) {\n return defaultValue;\n }\n};\n\n/**\n * extract hostname from appUrl for session cookie creation\n * @param {string} appUrl - The generated appUrl\n */\nexport const generateCookieDomain = (appUrl: string): string => {\n try {\n const url = new URL(appUrl);\n return url.hostname.replace(/:(\\d)+$/, '');\n } catch (e) {\n throw new InvalidFronteggEnv(EnvVariables.FRONTEGG_APP_URL, 'Valid URL');\n }\n};\n\n/**\n * Create passwordMap if from {@link EnvVariables.FRONTEGG_ENCRYPTION_PASSWORD}\n * @param {string} password - encryption password\n */\nexport function normalizeStringPasswordToMap(password: string | PasswordsMap): PasswordsMap {\n return typeof password === 'string' ? { 1: password } : password;\n}\n\n/**\n * Check if the Next.js application running on Vercel Deployment Service\n * and calculate the appUrl based on Vercel Environment variables.\n */\nexport function generateAppUrl() {\n const appUrlEnv = getEnvOrDefault(EnvVariables.FRONTEGG_APP_URL, undefined);\n const isVercel = getEnvOrDefault(EnvVariables.VERCEL, undefined) != undefined;\n const vercelUrl = getEnvOrDefault(EnvVariables.VERCEL_URL, undefined);\n\n let appUrl: string | undefined;\n if (appUrlEnv) {\n appUrl = appUrlEnv;\n } else if (isVercel && vercelUrl) {\n appUrl = vercelUrl;\n }\n\n if (!appUrl) {\n if (isVercel) {\n throw new FronteggEnvNotFound(EnvVariables.VERCEL, EnvVariables.VERCEL_URL);\n } else {\n throw new FronteggEnvNotFound(EnvVariables.FRONTEGG_APP_URL);\n }\n }\n\n /**\n * In some cases the {@link EnvVariables.VERCEL_URL} value does not\n * include the URL protocol, bellow code to verify that the appUrl\n * must have a valid http protocol\n */\n if (!appUrl.startsWith('http')) {\n // noinspection HttpUrlsUsage\n const protocol = appUrl.startsWith('localhost') ? 'http://' : 'https://';\n appUrl = `${protocol}${appUrl}`;\n }\n\n return appUrl;\n}\n"],"mappings":"AAAA,SAASA,kBAAkB,EAAEC,mBAAmB,QAAQ,iBAAiB;AAEzE,SAASC,YAAY,QAAQ,aAAa;;AAE1C;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,MAAM,GAAIC,IAAY,IAAa;EAC9C,MAAMC,KAAK,GAAGC,OAAO,CAACC,GAAG,CAACH,IAAI,CAAC;EAC/B,IAAI,CAACC,KAAK,EAAE;IACV,MAAM,IAAIJ,mBAAmB,CAACG,IAAI,CAAC;EACrC;EACA,OAAOC,KAAK;AACd,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMG,eAAe,GAAG,CAAIJ,IAAY,EAAEK,YAAe,KAAiB;EAC/E,IAAI;IACF,OAAON,MAAM,CAACC,IAAI,CAAC;EACrB,CAAC,CAAC,OAAOM,CAAC,EAAE;IACV,OAAOD,YAAY;EACrB;AACF,CAAC;;AAED;AACA;AACA;AACA;AACA,OAAO,MAAME,oBAAoB,GAAIC,MAAc,IAAa;EAC9D,IAAI;IACF,MAAMC,GAAG,GAAG,IAAIC,GAAG,CAACF,MAAM,CAAC;IAC3B,OAAOC,GAAG,CAACE,QAAQ,CAACC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;EAC5C,CAAC,CAAC,OAAON,CAAC,EAAE;IACV,MAAM,IAAIV,kBAAkB,CAACE,YAAY,CAACe,gBAAgB,EAAE,WAAW,CAAC;EAC1E;AACF,CAAC;;AAED;AACA;AACA;AACA;AACA,OAAO,SAASC,4BAA4B,CAACC,QAA+B,EAAgB;EAC1F,OAAO,OAAOA,QAAQ,KAAK,QAAQ,GAAG;IAAE,CAAC,EAAEA;EAAS,CAAC,GAAGA,QAAQ;AAClE;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASC,cAAc,GAAG;EAC/B,MAAMC,SAAS,GAAGb,eAAe,CAACN,YAAY,CAACe,gBAAgB,EAAEK,SAAS,CAAC;EAC3E,MAAMC,QAAQ,GAAGf,eAAe,CAACN,YAAY,CAACsB,MAAM,EAAEF,SAAS,CAAC,IAAIA,SAAS;EAC7E,MAAMG,SAAS,GAAGjB,eAAe,CAACN,YAAY,CAACwB,UAAU,EAAEJ,SAAS,CAAC;EAErE,IAAIV,MAA0B;EAC9B,IAAIS,SAAS,EAAE;IACbT,MAAM,GAAGS,SAAS;EACpB,CAAC,MAAM,IAAIE,QAAQ,IAAIE,SAAS,EAAE;IAChCb,MAAM,GAAGa,SAAS;EACpB;EAEA,IAAI,CAACb,MAAM,EAAE;IACX,IAAIW,QAAQ,EAAE;MACZ,MAAM,IAAItB,mBAAmB,CAACC,YAAY,CAACsB,MAAM,EAAEtB,YAAY,CAACwB,UAAU,CAAC;IAC7E,CAAC,MAAM;MACL,MAAM,IAAIzB,mBAAmB,CAACC,YAAY,CAACe,gBAAgB,CAAC;IAC9D;EACF;;EAEA;AACF;AACA;AACA;AACA;EACE,IAAI,CAACL,MAAM,CAACe,UAAU,CAAC,MAAM,CAAC,EAAE;IAC9B;IACA,MAAMC,QAAQ,GAAGhB,MAAM,CAACe,UAAU,CAAC,WAAW,CAAC,GAAG,SAAS,GAAG,UAAU;IACxEf,MAAM,GAAI,GAAEgB,QAAS,GAAEhB,MAAO,EAAC;EACjC;EAEA,OAAOA,MAAM;AACf"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { AuthPageRoutes } from '@frontegg/redux-store';
|
|
2
|
+
import { FronteggAppOptions } from '@frontegg/types';
|
|
3
|
+
import { AppEnvConfig, PasswordsMap } from './types';
|
|
4
|
+
declare class Config {
|
|
5
|
+
authRoutes: Partial<AuthPageRoutes>;
|
|
6
|
+
fronteggAppOptions: Partial<FronteggAppOptions>;
|
|
7
|
+
constructor();
|
|
8
|
+
get appUrl(): string;
|
|
9
|
+
get testUrl(): string | undefined;
|
|
10
|
+
get baseUrl(): string;
|
|
11
|
+
get baseUrlHost(): string;
|
|
12
|
+
get clientId(): string;
|
|
13
|
+
get jwtPublicKeyJson(): string | undefined;
|
|
14
|
+
get cookieName(): string;
|
|
15
|
+
get cookieDomain(): string;
|
|
16
|
+
private validatePassword;
|
|
17
|
+
get password(): PasswordsMap;
|
|
18
|
+
get isSSL(): boolean;
|
|
19
|
+
get isHostedLogin(): boolean;
|
|
20
|
+
get appEnvConfig(): AppEnvConfig;
|
|
21
|
+
}
|
|
22
|
+
export { EnvVariables } from './constants';
|
|
23
|
+
declare const _default: Config;
|
|
24
|
+
export default _default;
|
package/config/index.js
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { generateAppUrl, generateCookieDomain, getEnv, getEnvOrDefault, normalizeStringPasswordToMap } from './helpers';
|
|
2
|
+
import { EnvVariables } from './constants';
|
|
3
|
+
import { InvalidFronteggEnv } from '../utils/errors';
|
|
4
|
+
const setupEnvVariables = {
|
|
5
|
+
FRONTEGG_APP_URL: process.env.FRONTEGG_APP_URL,
|
|
6
|
+
FRONTEGG_BASE_URL: process.env.FRONTEGG_BASE_URL,
|
|
7
|
+
FRONTEGG_TEST_URL: process.env.FRONTEGG_TEST_URL,
|
|
8
|
+
FRONTEGG_CLIENT_ID: process.env.FRONTEGG_CLIENT_ID,
|
|
9
|
+
FRONTEGG_ENCRYPTION_PASSWORD: process.env.FRONTEGG_ENCRYPTION_PASSWORD,
|
|
10
|
+
FRONTEGG_COOKIE_NAME: process.env.FRONTEGG_COOKIE_NAME,
|
|
11
|
+
FRONTEGG_JWT_PUBLIC_KEY: process.env.FRONTEGG_JWT_PUBLIC_KEY,
|
|
12
|
+
VERCEL: process.env.VERCEL,
|
|
13
|
+
VERCEL_URL: process.env.VERCEL_URL
|
|
14
|
+
};
|
|
15
|
+
class Config {
|
|
16
|
+
constructor() {
|
|
17
|
+
this.authRoutes = {};
|
|
18
|
+
this.fronteggAppOptions = {};
|
|
19
|
+
if (typeof window === 'undefined') {
|
|
20
|
+
this.validatePassword();
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
get appUrl() {
|
|
24
|
+
return generateAppUrl();
|
|
25
|
+
}
|
|
26
|
+
get testUrl() {
|
|
27
|
+
return getEnvOrDefault(EnvVariables.FRONTEGG_TEST_URL, setupEnvVariables.FRONTEGG_TEST_URL);
|
|
28
|
+
}
|
|
29
|
+
get baseUrl() {
|
|
30
|
+
var _getEnv;
|
|
31
|
+
return (_getEnv = getEnv(EnvVariables.FRONTEGG_BASE_URL)) != null ? _getEnv : setupEnvVariables.FRONTEGG_BASE_URL;
|
|
32
|
+
}
|
|
33
|
+
get baseUrlHost() {
|
|
34
|
+
return new URL(this.baseUrl).hostname;
|
|
35
|
+
}
|
|
36
|
+
get clientId() {
|
|
37
|
+
var _getEnv2;
|
|
38
|
+
return (_getEnv2 = getEnv(EnvVariables.FRONTEGG_CLIENT_ID)) != null ? _getEnv2 : setupEnvVariables.FRONTEGG_CLIENT_ID;
|
|
39
|
+
}
|
|
40
|
+
get jwtPublicKeyJson() {
|
|
41
|
+
return getEnv(EnvVariables.FRONTEGG_JWT_PUBLIC_KEY);
|
|
42
|
+
}
|
|
43
|
+
get cookieName() {
|
|
44
|
+
var _setupEnvVariables$FR;
|
|
45
|
+
const cookieNameEnv = getEnvOrDefault(EnvVariables.FRONTEGG_COOKIE_NAME, (_setupEnvVariables$FR = setupEnvVariables.FRONTEGG_COOKIE_NAME) != null ? _setupEnvVariables$FR : 'fe_session');
|
|
46
|
+
return `${cookieNameEnv}-${this.clientId.replace(/-/g, '')}`;
|
|
47
|
+
}
|
|
48
|
+
get cookieDomain() {
|
|
49
|
+
return generateCookieDomain(this.appUrl);
|
|
50
|
+
}
|
|
51
|
+
validatePassword() {
|
|
52
|
+
const passwordMaps = this.password;
|
|
53
|
+
for (let key of Object.keys(passwordMaps)) {
|
|
54
|
+
const password = passwordMaps[key];
|
|
55
|
+
if (!password.match(/[0-9A-Fa-f]{6}/g) || password.length !== 64) {
|
|
56
|
+
throw new InvalidFronteggEnv(EnvVariables.FRONTEGG_ENCRYPTION_PASSWORD, `Hex string.\n\nFor quick password generation use the following command:\nnode -e "console.log(crypto.randomBytes(32).toString('hex'))"`);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
get password() {
|
|
61
|
+
var _getEnv3;
|
|
62
|
+
const encryptionPasswordEnv = (_getEnv3 = getEnv(EnvVariables.FRONTEGG_ENCRYPTION_PASSWORD)) != null ? _getEnv3 : setupEnvVariables.FRONTEGG_ENCRYPTION_PASSWORD;
|
|
63
|
+
return normalizeStringPasswordToMap(encryptionPasswordEnv);
|
|
64
|
+
}
|
|
65
|
+
get isSSL() {
|
|
66
|
+
return new URL(this.appUrl).protocol === 'https:';
|
|
67
|
+
}
|
|
68
|
+
get isHostedLogin() {
|
|
69
|
+
var _this$fronteggAppOpti;
|
|
70
|
+
return (_this$fronteggAppOpti = this.fronteggAppOptions.hostedLoginBox) != null ? _this$fronteggAppOpti : false;
|
|
71
|
+
}
|
|
72
|
+
get appEnvConfig() {
|
|
73
|
+
return {
|
|
74
|
+
envAppUrl: this.appUrl,
|
|
75
|
+
envBaseUrl: this.baseUrl,
|
|
76
|
+
envClientId: this.clientId
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
export { EnvVariables } from './constants';
|
|
81
|
+
export default new Config();
|
|
82
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["generateAppUrl","generateCookieDomain","getEnv","getEnvOrDefault","normalizeStringPasswordToMap","EnvVariables","InvalidFronteggEnv","setupEnvVariables","FRONTEGG_APP_URL","process","env","FRONTEGG_BASE_URL","FRONTEGG_TEST_URL","FRONTEGG_CLIENT_ID","FRONTEGG_ENCRYPTION_PASSWORD","FRONTEGG_COOKIE_NAME","FRONTEGG_JWT_PUBLIC_KEY","VERCEL","VERCEL_URL","Config","constructor","authRoutes","fronteggAppOptions","window","validatePassword","appUrl","testUrl","baseUrl","baseUrlHost","URL","hostname","clientId","jwtPublicKeyJson","cookieName","cookieNameEnv","replace","cookieDomain","passwordMaps","password","key","Object","keys","match","length","encryptionPasswordEnv","isSSL","protocol","isHostedLogin","hostedLoginBox","appEnvConfig","envAppUrl","envBaseUrl","envClientId"],"sources":["../../../../packages/nextjs/src/config/index.ts"],"sourcesContent":["import { AuthPageRoutes } from '@frontegg/redux-store';\nimport { FronteggAppOptions } from '@frontegg/types';\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_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 VERCEL: process.env.VERCEL,\n VERCEL_URL: process.env.VERCEL_URL,\n};\n\nclass Config {\n public authRoutes: Partial<AuthPageRoutes> = {};\n public fronteggAppOptions: Partial<FronteggAppOptions> = {};\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 return getEnv(EnvVariables.FRONTEGG_BASE_URL) ?? setupEnvVariables.FRONTEGG_BASE_URL;\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 jwtPublicKeyJson(): string | undefined {\n return getEnv(EnvVariables.FRONTEGG_JWT_PUBLIC_KEY);\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 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 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 this.fronteggAppOptions.hostedLoginBox ?? false;\n }\n\n get appEnvConfig(): AppEnvConfig {\n return {\n envAppUrl: this.appUrl,\n envBaseUrl: this.baseUrl,\n envClientId: this.clientId,\n };\n }\n}\n\nexport { EnvVariables } from './constants';\nexport default new Config();\n"],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PasswordMap used for JWT encryption, you can create multiple passwords
|
|
3
|
+
* to be used for encrypting session cookie as round-robin strategy.
|
|
4
|
+
*/
|
|
5
|
+
export type PasswordsMap = {
|
|
6
|
+
[id: string]: string;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* PropTypes passed by FronteggProvider to the ClientSide Frontegg components.
|
|
10
|
+
*/
|
|
11
|
+
export interface AppEnvConfig {
|
|
12
|
+
/** {@link EnvVariables.FRONTEGG_APP_URL} */
|
|
13
|
+
envAppUrl: string;
|
|
14
|
+
/** {@link EnvVariables.FRONTEGG_BASE_URL} */
|
|
15
|
+
envBaseUrl: string;
|
|
16
|
+
/** {@link EnvVariables.FRONTEGG_CLIENT_ID} */
|
|
17
|
+
envClientId: string;
|
|
18
|
+
}
|
package/config/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","names":[],"sources":["../../../../packages/nextjs/src/config/types.ts"],"sourcesContent":["/**\n * PasswordMap used for JWT encryption, you can create multiple passwords\n * to be used for encrypting session cookie as round-robin strategy.\n */\nexport type PasswordsMap = { [id: string]: string };\n\n/**\n * PropTypes passed by FronteggProvider to the ClientSide Frontegg components.\n */\nexport interface AppEnvConfig {\n /** {@link EnvVariables.FRONTEGG_APP_URL} */\n envAppUrl: string;\n /** {@link EnvVariables.FRONTEGG_BASE_URL} */\n envBaseUrl: string;\n /** {@link EnvVariables.FRONTEGG_CLIENT_ID} */\n envClientId: string;\n}\n"],"mappings":""}
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import type { IncomingMessage } from 'http';
|
|
2
|
+
import { FronteggNextJSSession } from '../types';
|
|
3
|
+
export declare const getSessionOnEdge: (req: IncomingMessage | Request) => Promise<FronteggNextJSSession | undefined>;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import CookieManager from '../utils/cookies';
|
|
2
|
+
import createSession from '../utils/createSession';
|
|
3
|
+
import encryptionEdge from '../utils/encryption-edge';
|
|
4
|
+
export const getSessionOnEdge = req => {
|
|
5
|
+
const cookies = CookieManager.getSessionCookieFromRequest(req);
|
|
6
|
+
return createSession(cookies, encryptionEdge);
|
|
7
|
+
};
|
|
8
|
+
//# sourceMappingURL=getSessionOnEdge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getSessionOnEdge.js","names":["CookieManager","createSession","encryptionEdge","getSessionOnEdge","req","cookies","getSessionCookieFromRequest"],"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';\n\nexport const getSessionOnEdge = (req: IncomingMessage | Request): Promise<FronteggNextJSSession | undefined> => {\n const cookies = CookieManager.getSessionCookieFromRequest(req);\n return createSession(cookies, encryptionEdge);\n};\n"],"mappings":"AAEA,OAAOA,aAAa,MAAM,kBAAkB;AAC5C,OAAOC,aAAa,MAAM,wBAAwB;AAClD,OAAOC,cAAc,MAAM,0BAA0B;AAErD,OAAO,MAAMC,gBAAgB,GAAIC,GAA8B,IAAiD;EAC9G,MAAMC,OAAO,GAAGL,aAAa,CAACM,2BAA2B,CAACF,GAAG,CAAC;EAC9D,OAAOH,aAAa,CAACI,OAAO,EAAEH,cAAc,CAAC;AAC/C,CAAC"}
|
package/edge/index.d.ts
CHANGED
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
export * from './getSessionOnEdge';
|
|
2
|
-
export * from './shouldBypassMiddleware';
|
|
1
|
+
export * from './getSessionOnEdge';
|
|
2
|
+
export * from './shouldBypassMiddleware';
|
|
3
|
+
export * from './redirectToLogin';
|
package/edge/index.js
CHANGED
|
@@ -1,64 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
import 'cookie';
|
|
6
|
-
import 'jose';
|
|
7
|
-
|
|
8
|
-
function getTokensFromCookieOnEdge(cookie) {
|
|
9
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
10
|
-
var jwt;
|
|
11
|
-
return __generator(this, function (_a) {
|
|
12
|
-
switch (_a.label) {
|
|
13
|
-
case 0: return [4 /*yield*/, unsealData(cookie, {
|
|
14
|
-
password: FronteggConfig.passwordsAsMap,
|
|
15
|
-
})];
|
|
16
|
-
case 1:
|
|
17
|
-
jwt = _a.sent();
|
|
18
|
-
return [2 /*return*/, JSON.parse(jwt)];
|
|
19
|
-
}
|
|
20
|
-
});
|
|
21
|
-
});
|
|
22
|
-
}
|
|
23
|
-
var getSession = function (req) {
|
|
24
|
-
return createGetSession({
|
|
25
|
-
getCookie: function () { return CookieManager.getParsedCookieFromRequest(req); },
|
|
26
|
-
cookieResolver: getTokensFromCookieOnEdge,
|
|
27
|
-
});
|
|
28
|
-
};
|
|
29
|
-
|
|
30
|
-
var staticFilesRegex = new RegExp('^/(_next/static).*');
|
|
31
|
-
var imageOptimizationRegex = new RegExp('^/(_next/image).*');
|
|
32
|
-
var headerRequestsRegex = new RegExp('^/(favicon.ico).*');
|
|
33
|
-
var fronteggMiddlewareRegex = new RegExp('^/(api/frontegg).*');
|
|
34
|
-
var fronteggRoutesRegex = new RegExp('^/(account/|oauth/callback).*');
|
|
35
|
-
var shouldByPassMiddleware = function (pathname, options) {
|
|
36
|
-
/*
|
|
37
|
-
* Match all request paths except for the ones starting with:
|
|
38
|
-
* - _next/static (static files)
|
|
39
|
-
* - _next/image (image optimization files)
|
|
40
|
-
* - favicon.ico (favicon file)
|
|
41
|
-
* - api/frontegg (API frontegg middleware)
|
|
42
|
-
* - account/[login|logout|saml/callback|...] (frontegg authentication routes)
|
|
43
|
-
*/
|
|
44
|
-
var _options = __assign(__assign({ bypassStaticFiles: true, bypassImageOptimization: true, bypassHeaderRequests: true }, options), { bypassFronteggMiddleware: true, bypassFronteggRoutes: true });
|
|
45
|
-
var isStaticFiles = staticFilesRegex.test(pathname);
|
|
46
|
-
var isImageOptimization = imageOptimizationRegex.test(pathname);
|
|
47
|
-
var isHeaderRequests = headerRequestsRegex.test(pathname);
|
|
48
|
-
var isFronteggMiddleware = fronteggMiddlewareRegex.test(pathname);
|
|
49
|
-
var isFronteggRoutes = fronteggRoutesRegex.test(pathname);
|
|
50
|
-
if (isStaticFiles)
|
|
51
|
-
return _options.bypassStaticFiles;
|
|
52
|
-
if (isImageOptimization)
|
|
53
|
-
return _options.bypassImageOptimization;
|
|
54
|
-
if (isHeaderRequests)
|
|
55
|
-
return _options.bypassHeaderRequests;
|
|
56
|
-
if (isFronteggMiddleware)
|
|
57
|
-
return _options.bypassFronteggMiddleware;
|
|
58
|
-
if (isFronteggRoutes)
|
|
59
|
-
return _options.bypassFronteggRoutes;
|
|
60
|
-
return false;
|
|
61
|
-
};
|
|
62
|
-
|
|
63
|
-
export { getSession, shouldByPassMiddleware };
|
|
64
|
-
//# sourceMappingURL=index.js.map
|
|
1
|
+
export * from './getSessionOnEdge';
|
|
2
|
+
export * from './shouldBypassMiddleware';
|
|
3
|
+
export * from './redirectToLogin';
|
|
4
|
+
//# sourceMappingURL=index.js.map
|
package/edge/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../../packages/nextjs/src/edge/index.ts"],"sourcesContent":["export * from './getSessionOnEdge';\nexport * from './shouldBypassMiddleware';\nexport * from './redirectToLogin';\n"],"mappings":"AAAA,cAAc,oBAAoB;AAClC,cAAc,0BAA0B;AACxC,cAAc,mBAAmB"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { NextResponse } from 'next/server';
|
|
2
|
+
import { buildLoginRoute } from '../api/urls';
|
|
3
|
+
export const redirectToLogin = pathname => {
|
|
4
|
+
const {
|
|
5
|
+
asUrl: loginUrl
|
|
6
|
+
} = buildLoginRoute(pathname);
|
|
7
|
+
return NextResponse.redirect(loginUrl);
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=redirectToLogin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redirectToLogin.js","names":["NextResponse","buildLoginRoute","redirectToLogin","pathname","asUrl","loginUrl","redirect"],"sources":["../../../../packages/nextjs/src/edge/redirectToLogin.ts"],"sourcesContent":["import { NextResponse } from 'next/server';\nimport { buildLoginRoute } from '../api/urls';\n\nexport const redirectToLogin = (pathname: string) => {\n const { asUrl: loginUrl } = buildLoginRoute(pathname);\n return NextResponse.redirect(loginUrl);\n};\n"],"mappings":"AAAA,SAASA,YAAY,QAAQ,aAAa;AAC1C,SAASC,eAAe,QAAQ,aAAa;AAE7C,OAAO,MAAMC,eAAe,GAAIC,QAAgB,IAAK;EACnD,MAAM;IAAEC,KAAK,EAAEC;EAAS,CAAC,GAAGJ,eAAe,CAACE,QAAQ,CAAC;EACrD,OAAOH,YAAY,CAACM,QAAQ,CAACD,QAAQ,CAAC;AACxC,CAAC"}
|
|
@@ -1,7 +1,21 @@
|
|
|
1
|
-
interface ByPassOptions {
|
|
2
|
-
bypassStaticFiles?: boolean;
|
|
3
|
-
bypassImageOptimization?: boolean;
|
|
4
|
-
bypassHeaderRequests?: boolean;
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
interface ByPassOptions {
|
|
2
|
+
bypassStaticFiles?: boolean;
|
|
3
|
+
bypassImageOptimization?: boolean;
|
|
4
|
+
bypassHeaderRequests?: boolean;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Use `shouldByPassMiddleware` in the middleware.ts file
|
|
8
|
+
* to protect all application's routes.
|
|
9
|
+
* You can override whitelist by passing options parameter
|
|
10
|
+
* NOTE: this will slow down your application due to session check on each
|
|
11
|
+
* static files and image request
|
|
12
|
+
*
|
|
13
|
+
* The default whitelist:
|
|
14
|
+
* - _next/static (static files)
|
|
15
|
+
* - _next/image (image optimization files)
|
|
16
|
+
* - favicon.ico (favicon file)
|
|
17
|
+
* - api/frontegg (API frontegg middleware)
|
|
18
|
+
* - account/[login|logout|saml/callback|...] (frontegg authentication routes)
|
|
19
|
+
*/
|
|
20
|
+
export declare const shouldByPassMiddleware: (pathname: string, options?: ByPassOptions) => boolean;
|
|
21
|
+
export {};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
+
const staticFilesRegex = new RegExp('^/(_next/static).*');
|
|
3
|
+
const imageOptimizationRegex = new RegExp('^/(_next/image).*');
|
|
4
|
+
const headerRequestsRegex = new RegExp('^/(favicon.ico).*');
|
|
5
|
+
const fronteggMiddlewareRegex = new RegExp('^/(api/frontegg).*');
|
|
6
|
+
const fronteggRoutesRegex = new RegExp('^/(account/|oauth/callback).*');
|
|
7
|
+
/**
|
|
8
|
+
* Use `shouldByPassMiddleware` in the middleware.ts file
|
|
9
|
+
* to protect all application's routes.
|
|
10
|
+
* You can override whitelist by passing options parameter
|
|
11
|
+
* NOTE: this will slow down your application due to session check on each
|
|
12
|
+
* static files and image request
|
|
13
|
+
*
|
|
14
|
+
* The default whitelist:
|
|
15
|
+
* - _next/static (static files)
|
|
16
|
+
* - _next/image (image optimization files)
|
|
17
|
+
* - favicon.ico (favicon file)
|
|
18
|
+
* - api/frontegg (API frontegg middleware)
|
|
19
|
+
* - account/[login|logout|saml/callback|...] (frontegg authentication routes)
|
|
20
|
+
*/
|
|
21
|
+
export const shouldByPassMiddleware = (pathname, options) => {
|
|
22
|
+
const _options = _extends({
|
|
23
|
+
bypassStaticFiles: true,
|
|
24
|
+
bypassImageOptimization: true,
|
|
25
|
+
bypassHeaderRequests: true
|
|
26
|
+
}, options, {
|
|
27
|
+
bypassFronteggMiddleware: true,
|
|
28
|
+
bypassFronteggRoutes: true
|
|
29
|
+
});
|
|
30
|
+
const isStaticFiles = staticFilesRegex.test(pathname);
|
|
31
|
+
const isImageOptimization = imageOptimizationRegex.test(pathname);
|
|
32
|
+
const isHeaderRequests = headerRequestsRegex.test(pathname);
|
|
33
|
+
const isFronteggMiddleware = fronteggMiddlewareRegex.test(pathname);
|
|
34
|
+
const isFronteggRoutes = fronteggRoutesRegex.test(pathname);
|
|
35
|
+
if (isStaticFiles) return _options.bypassStaticFiles;
|
|
36
|
+
if (isImageOptimization) return _options.bypassImageOptimization;
|
|
37
|
+
if (isHeaderRequests) return _options.bypassHeaderRequests;
|
|
38
|
+
if (isFronteggMiddleware) return _options.bypassFronteggMiddleware;
|
|
39
|
+
if (isFronteggRoutes) return _options.bypassFronteggRoutes;
|
|
40
|
+
return false;
|
|
41
|
+
};
|
|
42
|
+
//# sourceMappingURL=shouldBypassMiddleware.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shouldBypassMiddleware.js","names":["staticFilesRegex","RegExp","imageOptimizationRegex","headerRequestsRegex","fronteggMiddlewareRegex","fronteggRoutesRegex","shouldByPassMiddleware","pathname","options","_options","bypassStaticFiles","bypassImageOptimization","bypassHeaderRequests","bypassFronteggMiddleware","bypassFronteggRoutes","isStaticFiles","test","isImageOptimization","isHeaderRequests","isFronteggMiddleware","isFronteggRoutes"],"sources":["../../../../packages/nextjs/src/edge/shouldBypassMiddleware.ts"],"sourcesContent":["const staticFilesRegex = new RegExp('^/(_next/static).*');\nconst imageOptimizationRegex = new RegExp('^/(_next/image).*');\nconst headerRequestsRegex = new RegExp('^/(favicon.ico).*');\nconst fronteggMiddlewareRegex = new RegExp('^/(api/frontegg).*');\nconst fronteggRoutesRegex = new RegExp('^/(account/|oauth/callback).*');\n\ninterface ByPassOptions {\n bypassStaticFiles?: boolean; // default: true\n bypassImageOptimization?: boolean; // default: true\n bypassHeaderRequests?: boolean; // default: true\n}\n\n/**\n * Use `shouldByPassMiddleware` in the middleware.ts file\n * to protect all application's routes.\n * You can override whitelist by passing options parameter\n * NOTE: this will slow down your application due to session check on each\n * static files and image request\n *\n * The default whitelist:\n * - _next/static (static files)\n * - _next/image (image optimization files)\n * - favicon.ico (favicon file)\n * - api/frontegg (API frontegg middleware)\n * - account/[login|logout|saml/callback|...] (frontegg authentication routes)\n */\nexport const shouldByPassMiddleware = (pathname: string, options?: ByPassOptions): boolean => {\n const _options = {\n bypassStaticFiles: true,\n bypassImageOptimization: true,\n bypassHeaderRequests: true,\n ...options,\n bypassFronteggMiddleware: true,\n bypassFronteggRoutes: true,\n };\n\n const isStaticFiles = staticFilesRegex.test(pathname);\n const isImageOptimization = imageOptimizationRegex.test(pathname);\n const isHeaderRequests = headerRequestsRegex.test(pathname);\n const isFronteggMiddleware = fronteggMiddlewareRegex.test(pathname);\n const isFronteggRoutes = fronteggRoutesRegex.test(pathname);\n\n if (isStaticFiles) return _options.bypassStaticFiles;\n if (isImageOptimization) return _options.bypassImageOptimization;\n if (isHeaderRequests) return _options.bypassHeaderRequests;\n if (isFronteggMiddleware) return _options.bypassFronteggMiddleware;\n if (isFronteggRoutes) return _options.bypassFronteggRoutes;\n\n return false;\n};\n"],"mappings":";AAAA,MAAMA,gBAAgB,GAAG,IAAIC,MAAM,CAAC,oBAAoB,CAAC;AACzD,MAAMC,sBAAsB,GAAG,IAAID,MAAM,CAAC,mBAAmB,CAAC;AAC9D,MAAME,mBAAmB,GAAG,IAAIF,MAAM,CAAC,mBAAmB,CAAC;AAC3D,MAAMG,uBAAuB,GAAG,IAAIH,MAAM,CAAC,oBAAoB,CAAC;AAChE,MAAMI,mBAAmB,GAAG,IAAIJ,MAAM,CAAC,+BAA+B,CAAC;AAQvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMK,sBAAsB,GAAG,CAACC,QAAgB,EAAEC,OAAuB,KAAc;EAC5F,MAAMC,QAAQ;IACZC,iBAAiB,EAAE,IAAI;IACvBC,uBAAuB,EAAE,IAAI;IAC7BC,oBAAoB,EAAE;EAAI,GACvBJ,OAAO;IACVK,wBAAwB,EAAE,IAAI;IAC9BC,oBAAoB,EAAE;EAAI,EAC3B;EAED,MAAMC,aAAa,GAAGf,gBAAgB,CAACgB,IAAI,CAACT,QAAQ,CAAC;EACrD,MAAMU,mBAAmB,GAAGf,sBAAsB,CAACc,IAAI,CAACT,QAAQ,CAAC;EACjE,MAAMW,gBAAgB,GAAGf,mBAAmB,CAACa,IAAI,CAACT,QAAQ,CAAC;EAC3D,MAAMY,oBAAoB,GAAGf,uBAAuB,CAACY,IAAI,CAACT,QAAQ,CAAC;EACnE,MAAMa,gBAAgB,GAAGf,mBAAmB,CAACW,IAAI,CAACT,QAAQ,CAAC;EAE3D,IAAIQ,aAAa,EAAE,OAAON,QAAQ,CAACC,iBAAiB;EACpD,IAAIO,mBAAmB,EAAE,OAAOR,QAAQ,CAACE,uBAAuB;EAChE,IAAIO,gBAAgB,EAAE,OAAOT,QAAQ,CAACG,oBAAoB;EAC1D,IAAIO,oBAAoB,EAAE,OAAOV,QAAQ,CAACI,wBAAwB;EAClE,IAAIO,gBAAgB,EAAE,OAAOX,QAAQ,CAACK,oBAAoB;EAE1D,OAAO,KAAK;AACd,CAAC"}
|
package/index.d.ts
CHANGED
|
@@ -1,11 +1,7 @@
|
|
|
1
|
-
export * from './
|
|
2
|
-
export * from './
|
|
3
|
-
export * from './
|
|
4
|
-
export * from './
|
|
5
|
-
export
|
|
6
|
-
export * from '
|
|
7
|
-
export * from '
|
|
8
|
-
export * from './common';
|
|
9
|
-
export { AdminPortal } from '@frontegg/js';
|
|
10
|
-
export * from '@frontegg/react-hooks';
|
|
11
|
-
export * from '@frontegg/types';
|
|
1
|
+
export * from './common';
|
|
2
|
+
export * from './config';
|
|
3
|
+
export * from './middleware';
|
|
4
|
+
export * from './types';
|
|
5
|
+
export { AdminPortal, AppHolder, HostedLogin } from '@frontegg/js';
|
|
6
|
+
export * from '@frontegg/react-hooks';
|
|
7
|
+
export * from '@frontegg/types';
|