@smg-automotive/auth 9.2.0-fix-incomplete-token.3 → 9.2.1
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/dist/{Auth-lfX7CuuS.d.ts → Auth-DZEuHuwV.d.ts} +1 -1
- package/dist/cjs/server/helpers/getSessionInfo.js +10 -0
- package/dist/cjs/server/helpers/getSessionInfo.js.map +1 -1
- package/dist/cjs/server/hooks/onCallbackFactory.js +27 -4
- package/dist/cjs/server/hooks/onCallbackFactory.js.map +1 -1
- package/dist/cjs/server/redisSessionInfoStore.js +80 -0
- package/dist/cjs/server/redisSessionInfoStore.js.map +1 -0
- package/dist/esm/server/helpers/getSessionInfo.js +10 -0
- package/dist/esm/server/helpers/getSessionInfo.js.map +1 -1
- package/dist/esm/server/hooks/onCallbackFactory.js +27 -4
- package/dist/esm/server/hooks/onCallbackFactory.js.map +1 -1
- package/dist/esm/server/redisSessionInfoStore.js +77 -0
- package/dist/esm/server/redisSessionInfoStore.js.map +1 -0
- package/dist/fixtures.d.ts +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/server.d.ts +2 -2
- package/dist/{sessionUser-sPuqul_E.d.ts → sessionUser-YOujJhvx.d.ts} +2 -2
- package/package.json +14 -14
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { FC, PropsWithChildren } from 'react';
|
|
2
|
-
import { A as Auth0Config, E as EnrichedSessionUser } from './sessionUser-
|
|
2
|
+
import { A as Auth0Config, E as EnrichedSessionUser } from './sessionUser-YOujJhvx.js';
|
|
3
3
|
|
|
4
4
|
type AuthProviderProps = {
|
|
5
5
|
auth0Config: Auth0Config;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
+
var redisSessionInfoStore = require('../redisSessionInfoStore.js');
|
|
3
4
|
var debug = require('../../lib/debug.js');
|
|
4
5
|
var getUser = require('./getUser.js');
|
|
5
6
|
|
|
@@ -11,7 +12,16 @@ const getSessionInfo = async ({ host, protocol, }) => {
|
|
|
11
12
|
log('No session found');
|
|
12
13
|
return null;
|
|
13
14
|
}
|
|
15
|
+
const cachedSessionInfo = await redisSessionInfoStore.getSessionInfo(sessionData);
|
|
16
|
+
if (cachedSessionInfo) {
|
|
17
|
+
log('Cached session info retrieved', cachedSessionInfo);
|
|
18
|
+
return cachedSessionInfo;
|
|
19
|
+
}
|
|
14
20
|
const { amr = null, loggedInDate } = sessionData;
|
|
21
|
+
if (!loggedInDate) {
|
|
22
|
+
log('No session info found');
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
15
25
|
log('Session info retrieved', { amr, loggedInDate });
|
|
16
26
|
return { amr, loggedInDate };
|
|
17
27
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getSessionInfo.js","sources":["../../../../../src/server/helpers/getSessionInfo.ts"],"sourcesContent":[null],"names":["debug","getSessionData"],"mappings":"
|
|
1
|
+
{"version":3,"file":"getSessionInfo.js","sources":["../../../../../src/server/helpers/getSessionInfo.ts"],"sourcesContent":[null],"names":["debug","getSessionData","getCachedSessionInfo"],"mappings":";;;;;;AAOA,MAAM,GAAG,GAAGA,WAAK,CAAC,mCAAmC,CAAC;AAE/C,MAAM,cAAc,GAAG,OAAO,EACnC,IAAI,EACJ,QAAQ,GACgB,KAAiC;IACzD,GAAG,CAAC,sBAAsB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AAC/C,IAAA,MAAM,WAAW,IAAI,MAAMC,sBAAc,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAGhD;IAEb,IAAI,CAAC,WAAW,EAAE;QAChB,GAAG,CAAC,kBAAkB,CAAC;AACvB,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,MAAM,iBAAiB,GAAG,MAAMC,oCAAoB,CAAC,WAAW,CAAC;IACjE,IAAI,iBAAiB,EAAE;AACrB,QAAA,GAAG,CAAC,+BAA+B,EAAE,iBAAiB,CAAC;AACvD,QAAA,OAAO,iBAAiB;IAC1B;IAEA,MAAM,EAAE,GAAG,GAAG,IAAI,EAAE,YAAY,EAAE,GAAG,WAAW;IAChD,IAAI,CAAC,YAAY,EAAE;QACjB,GAAG,CAAC,uBAAuB,CAAC;AAC5B,QAAA,OAAO,IAAI;IACb;IAEA,GAAG,CAAC,wBAAwB,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,CAAC;AAEpD,IAAA,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE;AAC9B;;;;"}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
var server = require('next/server');
|
|
4
4
|
var headers = require('next/headers');
|
|
5
5
|
var jose = require('jose');
|
|
6
|
+
var redisSessionInfoStore = require('../redisSessionInfoStore.js');
|
|
6
7
|
var sellerCookies = require('../helpers/sellerCookies.js');
|
|
7
8
|
var authRedirects = require('../helpers/authRedirects.js');
|
|
8
9
|
|
|
@@ -12,12 +13,34 @@ const createPostLoginRefreshResponse = (context, auth0Config, appBaseUrl) => {
|
|
|
12
13
|
refreshUrl.searchParams.set('returnTo', context.returnTo || '/');
|
|
13
14
|
return server.NextResponse.redirect(refreshUrl);
|
|
14
15
|
};
|
|
15
|
-
const
|
|
16
|
+
const getLoginSessionInfo = (session) => {
|
|
16
17
|
const decodedIdToken = session.tokenSet.idToken
|
|
17
18
|
? jose.decodeJwt(session.tokenSet.idToken)
|
|
18
19
|
: null;
|
|
19
|
-
|
|
20
|
-
|
|
20
|
+
return {
|
|
21
|
+
loggedInDate: Date.now(),
|
|
22
|
+
amr: Array.isArray(decodedIdToken?.amr) ? decodedIdToken.amr : null,
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
const hasTwoFactorAmr = (sessionInfo) => Array.isArray(sessionInfo?.amr) &&
|
|
26
|
+
(sessionInfo.amr.includes('mfa') || sessionInfo.amr.includes('phr'));
|
|
27
|
+
const setLoginSessionData = async (session, auth0Config) => {
|
|
28
|
+
const loginSessionInfo = getLoginSessionInfo(session);
|
|
29
|
+
const cachedSessionInfo = await redisSessionInfoStore.getSessionInfo(session);
|
|
30
|
+
let sessionInfo = loginSessionInfo;
|
|
31
|
+
if (!hasTwoFactorAmr(loginSessionInfo) && cachedSessionInfo) {
|
|
32
|
+
sessionInfo = hasTwoFactorAmr(cachedSessionInfo)
|
|
33
|
+
? cachedSessionInfo
|
|
34
|
+
: loginSessionInfo;
|
|
35
|
+
}
|
|
36
|
+
const didPersistSessionInfo = await redisSessionInfoStore.setSessionInfo({
|
|
37
|
+
session,
|
|
38
|
+
sessionInfo,
|
|
39
|
+
ttlSeconds: auth0Config.sessionDuration,
|
|
40
|
+
});
|
|
41
|
+
if (!didPersistSessionInfo) {
|
|
42
|
+
Object.assign(session, sessionInfo);
|
|
43
|
+
}
|
|
21
44
|
};
|
|
22
45
|
const errorCodeRegex = /\b([A-Z][A-Z0-9_]*[A-Z0-9])\b/g;
|
|
23
46
|
const handleAuth0Error = ({ error, auth0Config, appBaseUrl, returnTo, onError, }) => {
|
|
@@ -62,7 +85,7 @@ const onCallbackFactory = ({ auth0Config, appBaseUrl, onError, }) => async (erro
|
|
|
62
85
|
}
|
|
63
86
|
const cookieStore = await headers.cookies();
|
|
64
87
|
const decodedToken = jose.decodeJwt(session.tokenSet.accessToken);
|
|
65
|
-
setLoginSessionData(session);
|
|
88
|
+
await setLoginSessionData(session, auth0Config);
|
|
66
89
|
if (!decodedToken.complete) {
|
|
67
90
|
// eslint-disable-next-line no-console
|
|
68
91
|
console.info('[Auth-package] incomplete token detected after callback, redirecting to post-login refresh');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"onCallbackFactory.js","sources":["../../../../../src/server/hooks/onCallbackFactory.ts"],"sourcesContent":[null],"names":["NextResponse","decodeJwt","incompleteTokenErrorCode","createIncompleteTokenLogoutRedirect","createGlobalAuthErrorRedirect","cookies","setSellerIdCookiesOnResponse"],"mappings":"
|
|
1
|
+
{"version":3,"file":"onCallbackFactory.js","sources":["../../../../../src/server/hooks/onCallbackFactory.ts"],"sourcesContent":[null],"names":["NextResponse","decodeJwt","getCachedSessionInfo","setSessionInfo","incompleteTokenErrorCode","createIncompleteTokenLogoutRedirect","createGlobalAuthErrorRedirect","cookies","setSellerIdCookiesOnResponse"],"mappings":"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"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var redis = require('redis');
|
|
4
|
+
|
|
5
|
+
const keyPrefix = 'auth-session-info:';
|
|
6
|
+
let client = null;
|
|
7
|
+
let connectPromise = null;
|
|
8
|
+
const resetClient = () => {
|
|
9
|
+
client = null;
|
|
10
|
+
connectPromise = null;
|
|
11
|
+
};
|
|
12
|
+
const getClient = async () => {
|
|
13
|
+
const redisUrl = process.env.AUTH0_CUSTOM_REDIS_URL;
|
|
14
|
+
if (!redisUrl)
|
|
15
|
+
return null;
|
|
16
|
+
if (client?.isOpen)
|
|
17
|
+
return client;
|
|
18
|
+
if (connectPromise)
|
|
19
|
+
return connectPromise;
|
|
20
|
+
try {
|
|
21
|
+
const newClient = redis.createClient({ url: redisUrl });
|
|
22
|
+
client = newClient;
|
|
23
|
+
connectPromise = newClient.connect().then(() => {
|
|
24
|
+
connectPromise = null;
|
|
25
|
+
return newClient;
|
|
26
|
+
}, () => {
|
|
27
|
+
resetClient();
|
|
28
|
+
return null;
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
resetClient();
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
return connectPromise;
|
|
36
|
+
};
|
|
37
|
+
const getKey = (session) => {
|
|
38
|
+
const userId = session.user?.sub;
|
|
39
|
+
const sessionId = session.internal?.sid;
|
|
40
|
+
if (!userId || !sessionId)
|
|
41
|
+
return null;
|
|
42
|
+
return `${keyPrefix}${userId}:${sessionId}`;
|
|
43
|
+
};
|
|
44
|
+
const setSessionInfo = async ({ session, sessionInfo, ttlSeconds, }) => {
|
|
45
|
+
const redisClient = await getClient();
|
|
46
|
+
const key = getKey(session);
|
|
47
|
+
if (!redisClient || !key)
|
|
48
|
+
return false;
|
|
49
|
+
try {
|
|
50
|
+
await redisClient.set(key, JSON.stringify(sessionInfo), {
|
|
51
|
+
EX: ttlSeconds,
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
resetClient();
|
|
56
|
+
return false;
|
|
57
|
+
}
|
|
58
|
+
return true;
|
|
59
|
+
};
|
|
60
|
+
const getSessionInfo = async (session) => {
|
|
61
|
+
const redisClient = await getClient();
|
|
62
|
+
const key = getKey(session);
|
|
63
|
+
if (!redisClient || !key)
|
|
64
|
+
return null;
|
|
65
|
+
let raw;
|
|
66
|
+
try {
|
|
67
|
+
raw = await redisClient.get(key);
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
resetClient();
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
73
|
+
if (!raw)
|
|
74
|
+
return null;
|
|
75
|
+
return JSON.parse(raw);
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
exports.getSessionInfo = getSessionInfo;
|
|
79
|
+
exports.setSessionInfo = setSessionInfo;
|
|
80
|
+
//# sourceMappingURL=redisSessionInfoStore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redisSessionInfoStore.js","sources":["../../../../src/server/redisSessionInfoStore.ts"],"sourcesContent":[null],"names":["createClient"],"mappings":";;;;AAKA,MAAM,SAAS,GAAG,oBAAoB;AAEtC,IAAI,MAAM,GAA2B,IAAI;AACzC,IAAI,cAAc,GAA2C,IAAI;AAEjE,MAAM,WAAW,GAAG,MAAK;IACvB,MAAM,GAAG,IAAI;IACb,cAAc,GAAG,IAAI;AACvB,CAAC;AAED,MAAM,SAAS,GAAG,YAA4C;AAC5D,IAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB;AACnD,IAAA,IAAI,CAAC,QAAQ;AAAE,QAAA,OAAO,IAAI;IAE1B,IAAI,MAAM,EAAE,MAAM;AAAE,QAAA,OAAO,MAAM;AACjC,IAAA,IAAI,cAAc;AAAE,QAAA,OAAO,cAAc;AAEzC,IAAA,IAAI;QACF,MAAM,SAAS,GAAGA,kBAAY,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAoB;QACpE,MAAM,GAAG,SAAS;QAElB,cAAc,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,IAAI,CACvC,MAAK;YACH,cAAc,GAAG,IAAI;AACrB,YAAA,OAAO,SAAS;QAClB,CAAC,EACD,MAAK;AACH,YAAA,WAAW,EAAE;AACb,YAAA,OAAO,IAAI;AACb,QAAA,CAAC,CACF;IACH;AAAE,IAAA,MAAM;AACN,QAAA,WAAW,EAAE;AACb,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,OAAO,cAAc;AACvB,CAAC;AAED,MAAM,MAAM,GAAG,CAAC,OAAoB,KAAmB;AACrD,IAAA,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,GAAG;AAChC,IAAA,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,EAAE,GAAG;AAEvC,IAAA,IAAI,CAAC,MAAM,IAAI,CAAC,SAAS;AAAE,QAAA,OAAO,IAAI;AAEtC,IAAA,OAAO,GAAG,SAAS,CAAA,EAAG,MAAM,CAAA,CAAA,EAAI,SAAS,EAAE;AAC7C,CAAC;AAEM,MAAM,cAAc,GAAG,OAAO,EACnC,OAAO,EACP,WAAW,EACX,UAAU,GAKX,KAAsB;AACrB,IAAA,MAAM,WAAW,GAAG,MAAM,SAAS,EAAE;AACrC,IAAA,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC;AAE3B,IAAA,IAAI,CAAC,WAAW,IAAI,CAAC,GAAG;AAAE,QAAA,OAAO,KAAK;AAEtC,IAAA,IAAI;AACF,QAAA,MAAM,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE;AACtD,YAAA,EAAE,EAAE,UAAU;AACf,SAAA,CAAC;IACJ;AAAE,IAAA,MAAM;AACN,QAAA,WAAW,EAAE;AACb,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,OAAO,IAAI;AACb;MAEa,cAAc,GAAG,OAC5B,OAAoB,KACW;AAC/B,IAAA,MAAM,WAAW,GAAG,MAAM,SAAS,EAAE;AACrC,IAAA,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC;AAE3B,IAAA,IAAI,CAAC,WAAW,IAAI,CAAC,GAAG;AAAE,QAAA,OAAO,IAAI;AAErC,IAAA,IAAI,GAAkB;AACtB,IAAA,IAAI;QACF,GAAG,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC;IAClC;AAAE,IAAA,MAAM;AACN,QAAA,WAAW,EAAE;AACb,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,IAAI,CAAC,GAAG;AAAE,QAAA,OAAO,IAAI;AAErB,IAAA,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAgB;AACvC;;;;;"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { getSessionInfo as getSessionInfo$1 } from '../redisSessionInfoStore.js';
|
|
1
2
|
import { debug } from '../../lib/debug.js';
|
|
2
3
|
import { getSessionData } from './getUser.js';
|
|
3
4
|
|
|
@@ -9,7 +10,16 @@ const getSessionInfo = async ({ host, protocol, }) => {
|
|
|
9
10
|
log('No session found');
|
|
10
11
|
return null;
|
|
11
12
|
}
|
|
13
|
+
const cachedSessionInfo = await getSessionInfo$1(sessionData);
|
|
14
|
+
if (cachedSessionInfo) {
|
|
15
|
+
log('Cached session info retrieved', cachedSessionInfo);
|
|
16
|
+
return cachedSessionInfo;
|
|
17
|
+
}
|
|
12
18
|
const { amr = null, loggedInDate } = sessionData;
|
|
19
|
+
if (!loggedInDate) {
|
|
20
|
+
log('No session info found');
|
|
21
|
+
return null;
|
|
22
|
+
}
|
|
13
23
|
log('Session info retrieved', { amr, loggedInDate });
|
|
14
24
|
return { amr, loggedInDate };
|
|
15
25
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getSessionInfo.js","sources":["../../../../../src/server/helpers/getSessionInfo.ts"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"getSessionInfo.js","sources":["../../../../../src/server/helpers/getSessionInfo.ts"],"sourcesContent":[null],"names":["getCachedSessionInfo"],"mappings":";;;;AAOA,MAAM,GAAG,GAAG,KAAK,CAAC,mCAAmC,CAAC;AAE/C,MAAM,cAAc,GAAG,OAAO,EACnC,IAAI,EACJ,QAAQ,GACgB,KAAiC;IACzD,GAAG,CAAC,sBAAsB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AAC/C,IAAA,MAAM,WAAW,IAAI,MAAM,cAAc,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAGhD;IAEb,IAAI,CAAC,WAAW,EAAE;QAChB,GAAG,CAAC,kBAAkB,CAAC;AACvB,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,MAAM,iBAAiB,GAAG,MAAMA,gBAAoB,CAAC,WAAW,CAAC;IACjE,IAAI,iBAAiB,EAAE;AACrB,QAAA,GAAG,CAAC,+BAA+B,EAAE,iBAAiB,CAAC;AACvD,QAAA,OAAO,iBAAiB;IAC1B;IAEA,MAAM,EAAE,GAAG,GAAG,IAAI,EAAE,YAAY,EAAE,GAAG,WAAW;IAChD,IAAI,CAAC,YAAY,EAAE;QACjB,GAAG,CAAC,uBAAuB,CAAC;AAC5B,QAAA,OAAO,IAAI;IACb;IAEA,GAAG,CAAC,wBAAwB,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,CAAC;AAEpD,IAAA,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE;AAC9B;;;;"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { NextResponse } from 'next/server';
|
|
2
2
|
import { cookies } from 'next/headers';
|
|
3
3
|
import { decodeJwt } from 'jose';
|
|
4
|
+
import { getSessionInfo, setSessionInfo } from '../redisSessionInfoStore.js';
|
|
4
5
|
import { setSellerIdCookiesOnResponse } from '../helpers/sellerCookies.js';
|
|
5
6
|
import { incompleteTokenErrorCode, createIncompleteTokenLogoutRedirect, createGlobalAuthErrorRedirect } from '../helpers/authRedirects.js';
|
|
6
7
|
|
|
@@ -10,12 +11,34 @@ const createPostLoginRefreshResponse = (context, auth0Config, appBaseUrl) => {
|
|
|
10
11
|
refreshUrl.searchParams.set('returnTo', context.returnTo || '/');
|
|
11
12
|
return NextResponse.redirect(refreshUrl);
|
|
12
13
|
};
|
|
13
|
-
const
|
|
14
|
+
const getLoginSessionInfo = (session) => {
|
|
14
15
|
const decodedIdToken = session.tokenSet.idToken
|
|
15
16
|
? decodeJwt(session.tokenSet.idToken)
|
|
16
17
|
: null;
|
|
17
|
-
|
|
18
|
-
|
|
18
|
+
return {
|
|
19
|
+
loggedInDate: Date.now(),
|
|
20
|
+
amr: Array.isArray(decodedIdToken?.amr) ? decodedIdToken.amr : null,
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
const hasTwoFactorAmr = (sessionInfo) => Array.isArray(sessionInfo?.amr) &&
|
|
24
|
+
(sessionInfo.amr.includes('mfa') || sessionInfo.amr.includes('phr'));
|
|
25
|
+
const setLoginSessionData = async (session, auth0Config) => {
|
|
26
|
+
const loginSessionInfo = getLoginSessionInfo(session);
|
|
27
|
+
const cachedSessionInfo = await getSessionInfo(session);
|
|
28
|
+
let sessionInfo = loginSessionInfo;
|
|
29
|
+
if (!hasTwoFactorAmr(loginSessionInfo) && cachedSessionInfo) {
|
|
30
|
+
sessionInfo = hasTwoFactorAmr(cachedSessionInfo)
|
|
31
|
+
? cachedSessionInfo
|
|
32
|
+
: loginSessionInfo;
|
|
33
|
+
}
|
|
34
|
+
const didPersistSessionInfo = await setSessionInfo({
|
|
35
|
+
session,
|
|
36
|
+
sessionInfo,
|
|
37
|
+
ttlSeconds: auth0Config.sessionDuration,
|
|
38
|
+
});
|
|
39
|
+
if (!didPersistSessionInfo) {
|
|
40
|
+
Object.assign(session, sessionInfo);
|
|
41
|
+
}
|
|
19
42
|
};
|
|
20
43
|
const errorCodeRegex = /\b([A-Z][A-Z0-9_]*[A-Z0-9])\b/g;
|
|
21
44
|
const handleAuth0Error = ({ error, auth0Config, appBaseUrl, returnTo, onError, }) => {
|
|
@@ -60,7 +83,7 @@ const onCallbackFactory = ({ auth0Config, appBaseUrl, onError, }) => async (erro
|
|
|
60
83
|
}
|
|
61
84
|
const cookieStore = await cookies();
|
|
62
85
|
const decodedToken = decodeJwt(session.tokenSet.accessToken);
|
|
63
|
-
setLoginSessionData(session);
|
|
86
|
+
await setLoginSessionData(session, auth0Config);
|
|
64
87
|
if (!decodedToken.complete) {
|
|
65
88
|
// eslint-disable-next-line no-console
|
|
66
89
|
console.info('[Auth-package] incomplete token detected after callback, redirecting to post-login refresh');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"onCallbackFactory.js","sources":["../../../../../src/server/hooks/onCallbackFactory.ts"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"onCallbackFactory.js","sources":["../../../../../src/server/hooks/onCallbackFactory.ts"],"sourcesContent":[null],"names":["getCachedSessionInfo"],"mappings":"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"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { createClient } from 'redis';
|
|
2
|
+
|
|
3
|
+
const keyPrefix = 'auth-session-info:';
|
|
4
|
+
let client = null;
|
|
5
|
+
let connectPromise = null;
|
|
6
|
+
const resetClient = () => {
|
|
7
|
+
client = null;
|
|
8
|
+
connectPromise = null;
|
|
9
|
+
};
|
|
10
|
+
const getClient = async () => {
|
|
11
|
+
const redisUrl = process.env.AUTH0_CUSTOM_REDIS_URL;
|
|
12
|
+
if (!redisUrl)
|
|
13
|
+
return null;
|
|
14
|
+
if (client?.isOpen)
|
|
15
|
+
return client;
|
|
16
|
+
if (connectPromise)
|
|
17
|
+
return connectPromise;
|
|
18
|
+
try {
|
|
19
|
+
const newClient = createClient({ url: redisUrl });
|
|
20
|
+
client = newClient;
|
|
21
|
+
connectPromise = newClient.connect().then(() => {
|
|
22
|
+
connectPromise = null;
|
|
23
|
+
return newClient;
|
|
24
|
+
}, () => {
|
|
25
|
+
resetClient();
|
|
26
|
+
return null;
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
resetClient();
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
return connectPromise;
|
|
34
|
+
};
|
|
35
|
+
const getKey = (session) => {
|
|
36
|
+
const userId = session.user?.sub;
|
|
37
|
+
const sessionId = session.internal?.sid;
|
|
38
|
+
if (!userId || !sessionId)
|
|
39
|
+
return null;
|
|
40
|
+
return `${keyPrefix}${userId}:${sessionId}`;
|
|
41
|
+
};
|
|
42
|
+
const setSessionInfo = async ({ session, sessionInfo, ttlSeconds, }) => {
|
|
43
|
+
const redisClient = await getClient();
|
|
44
|
+
const key = getKey(session);
|
|
45
|
+
if (!redisClient || !key)
|
|
46
|
+
return false;
|
|
47
|
+
try {
|
|
48
|
+
await redisClient.set(key, JSON.stringify(sessionInfo), {
|
|
49
|
+
EX: ttlSeconds,
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
catch {
|
|
53
|
+
resetClient();
|
|
54
|
+
return false;
|
|
55
|
+
}
|
|
56
|
+
return true;
|
|
57
|
+
};
|
|
58
|
+
const getSessionInfo = async (session) => {
|
|
59
|
+
const redisClient = await getClient();
|
|
60
|
+
const key = getKey(session);
|
|
61
|
+
if (!redisClient || !key)
|
|
62
|
+
return null;
|
|
63
|
+
let raw;
|
|
64
|
+
try {
|
|
65
|
+
raw = await redisClient.get(key);
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
resetClient();
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
if (!raw)
|
|
72
|
+
return null;
|
|
73
|
+
return JSON.parse(raw);
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
export { getSessionInfo, setSessionInfo };
|
|
77
|
+
//# sourceMappingURL=redisSessionInfoStore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redisSessionInfoStore.js","sources":["../../../../src/server/redisSessionInfoStore.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAKA,MAAM,SAAS,GAAG,oBAAoB;AAEtC,IAAI,MAAM,GAA2B,IAAI;AACzC,IAAI,cAAc,GAA2C,IAAI;AAEjE,MAAM,WAAW,GAAG,MAAK;IACvB,MAAM,GAAG,IAAI;IACb,cAAc,GAAG,IAAI;AACvB,CAAC;AAED,MAAM,SAAS,GAAG,YAA4C;AAC5D,IAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB;AACnD,IAAA,IAAI,CAAC,QAAQ;AAAE,QAAA,OAAO,IAAI;IAE1B,IAAI,MAAM,EAAE,MAAM;AAAE,QAAA,OAAO,MAAM;AACjC,IAAA,IAAI,cAAc;AAAE,QAAA,OAAO,cAAc;AAEzC,IAAA,IAAI;QACF,MAAM,SAAS,GAAG,YAAY,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAoB;QACpE,MAAM,GAAG,SAAS;QAElB,cAAc,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,IAAI,CACvC,MAAK;YACH,cAAc,GAAG,IAAI;AACrB,YAAA,OAAO,SAAS;QAClB,CAAC,EACD,MAAK;AACH,YAAA,WAAW,EAAE;AACb,YAAA,OAAO,IAAI;AACb,QAAA,CAAC,CACF;IACH;AAAE,IAAA,MAAM;AACN,QAAA,WAAW,EAAE;AACb,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,OAAO,cAAc;AACvB,CAAC;AAED,MAAM,MAAM,GAAG,CAAC,OAAoB,KAAmB;AACrD,IAAA,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,GAAG;AAChC,IAAA,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,EAAE,GAAG;AAEvC,IAAA,IAAI,CAAC,MAAM,IAAI,CAAC,SAAS;AAAE,QAAA,OAAO,IAAI;AAEtC,IAAA,OAAO,GAAG,SAAS,CAAA,EAAG,MAAM,CAAA,CAAA,EAAI,SAAS,EAAE;AAC7C,CAAC;AAEM,MAAM,cAAc,GAAG,OAAO,EACnC,OAAO,EACP,WAAW,EACX,UAAU,GAKX,KAAsB;AACrB,IAAA,MAAM,WAAW,GAAG,MAAM,SAAS,EAAE;AACrC,IAAA,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC;AAE3B,IAAA,IAAI,CAAC,WAAW,IAAI,CAAC,GAAG;AAAE,QAAA,OAAO,KAAK;AAEtC,IAAA,IAAI;AACF,QAAA,MAAM,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE;AACtD,YAAA,EAAE,EAAE,UAAU;AACf,SAAA,CAAC;IACJ;AAAE,IAAA,MAAM;AACN,QAAA,WAAW,EAAE;AACb,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,OAAO,IAAI;AACb;MAEa,cAAc,GAAG,OAC5B,OAAoB,KACW;AAC/B,IAAA,MAAM,WAAW,GAAG,MAAM,SAAS,EAAE;AACrC,IAAA,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC;AAE3B,IAAA,IAAI,CAAC,WAAW,IAAI,CAAC,GAAG;AAAE,QAAA,OAAO,IAAI;AAErC,IAAA,IAAI,GAAkB;AACtB,IAAA,IAAI;QACF,GAAG,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC;IAClC;AAAE,IAAA,MAAM;AACN,QAAA,WAAW,EAAE;AACb,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,IAAI,CAAC,GAAG;AAAE,QAAA,OAAO,IAAI;AAErB,IAAA,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAgB;AACvC;;;;"}
|
package/dist/fixtures.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { A as Auth0Config, E as EnrichedSessionUser,
|
|
1
|
+
import { A as Auth0Config, E as EnrichedSessionUser, d as Entitlements } from './sessionUser-YOujJhvx.js';
|
|
2
2
|
import '@smg-automotive/i18n-pkg';
|
|
3
3
|
import '@auth0/nextjs-auth0/types';
|
|
4
4
|
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { A as AuthProvider, a as AuthProviderProps } from './Auth-
|
|
2
|
-
import { N as NonEmptyArray,
|
|
3
|
-
export {
|
|
1
|
+
export { A as AuthProvider, a as AuthProviderProps } from './Auth-DZEuHuwV.js';
|
|
2
|
+
import { N as NonEmptyArray, e as MfaEnrollmentType, M as MfaEnrollmentTicket, A as Auth0Config, E as EnrichedSessionUser } from './sessionUser-YOujJhvx.js';
|
|
3
|
+
export { a as Auth0User, b as Auth0UserType, c as AuthSessionData, I as IncompleteSessionUser, S as SessionInfo, f as SessionUser } from './sessionUser-YOujJhvx.js';
|
|
4
4
|
import { Language } from '@smg-automotive/i18n-pkg';
|
|
5
5
|
import 'react';
|
|
6
6
|
import '@auth0/nextjs-auth0/types';
|
package/dist/server.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { NextRequest, NextResponse } from 'next/server';
|
|
2
2
|
import { Language } from '@smg-automotive/i18n-pkg';
|
|
3
|
-
import { a as AuthProviderProps } from './Auth-
|
|
4
|
-
import { f as SessionUser, S as SessionInfo } from './sessionUser-
|
|
3
|
+
import { a as AuthProviderProps } from './Auth-DZEuHuwV.js';
|
|
4
|
+
import { f as SessionUser, S as SessionInfo } from './sessionUser-YOujJhvx.js';
|
|
5
5
|
import 'react';
|
|
6
6
|
import '@auth0/nextjs-auth0/types';
|
|
7
7
|
|
|
@@ -130,5 +130,5 @@ type SessionInfo = {
|
|
|
130
130
|
};
|
|
131
131
|
type AuthSessionData = SessionData & SessionInfo;
|
|
132
132
|
|
|
133
|
-
export { Auth0UserType as
|
|
134
|
-
export type { Auth0Config as A, EnrichedSessionUser as E, IncompleteSessionUser as I,
|
|
133
|
+
export { Auth0UserType as b };
|
|
134
|
+
export type { Auth0Config as A, EnrichedSessionUser as E, IncompleteSessionUser as I, MfaEnrollmentTicket as M, NonEmptyArray as N, SessionInfo as S, Auth0User as a, AuthSessionData as c, Entitlements as d, MfaEnrollmentType as e, SessionUser as f };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@smg-automotive/auth",
|
|
3
|
-
"version": "9.2.
|
|
3
|
+
"version": "9.2.1",
|
|
4
4
|
"description": "SMG Automotive auth package",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": {
|
|
@@ -74,39 +74,39 @@
|
|
|
74
74
|
"@rollup/plugin-commonjs": "29.0.2",
|
|
75
75
|
"@rollup/plugin-node-resolve": "16.0.3",
|
|
76
76
|
"@rollup/plugin-typescript": "12.3.0",
|
|
77
|
-
"@smg-automotive/eslint-config": "6.0.
|
|
77
|
+
"@smg-automotive/eslint-config": "6.0.9",
|
|
78
78
|
"@testing-library/dom": "10.4.1",
|
|
79
79
|
"@testing-library/jest-dom": "6.9.1",
|
|
80
80
|
"@testing-library/react": "16.3.2",
|
|
81
81
|
"@testing-library/user-event": "14.6.1",
|
|
82
82
|
"@types/debug": "4.1.13",
|
|
83
|
-
"@types/react": "19.2.
|
|
83
|
+
"@types/react": "19.2.15",
|
|
84
84
|
"dotenv": "17.4.2",
|
|
85
|
-
"eslint": "10.
|
|
86
|
-
"jest": "30.
|
|
87
|
-
"jest-environment-jsdom": "30.
|
|
85
|
+
"eslint": "10.4.0",
|
|
86
|
+
"jest": "30.4.2",
|
|
87
|
+
"jest-environment-jsdom": "30.4.1",
|
|
88
88
|
"jest-fetch-mock": "3.0.3",
|
|
89
|
-
"next": "16.2.
|
|
90
|
-
"react": "19.2.
|
|
91
|
-
"react-dom": "19.2.
|
|
89
|
+
"next": "16.2.6",
|
|
90
|
+
"react": "19.2.6",
|
|
91
|
+
"react-dom": "19.2.6",
|
|
92
92
|
"rimraf": "6.1.3",
|
|
93
|
-
"rollup": "4.60.
|
|
93
|
+
"rollup": "4.60.4",
|
|
94
94
|
"rollup-plugin-dts": "6.4.1",
|
|
95
95
|
"rollup-plugin-peer-deps-external": "2.2.4",
|
|
96
96
|
"rollup-plugin-preserve-directives": "0.4.0",
|
|
97
97
|
"semantic-release": "25.0.3",
|
|
98
98
|
"swr": "2.4.1",
|
|
99
|
-
"ts-jest": "29.4.
|
|
99
|
+
"ts-jest": "29.4.10",
|
|
100
100
|
"ts-node": "10.9.2",
|
|
101
|
-
"typescript": "6.0.
|
|
101
|
+
"typescript": "6.0.3",
|
|
102
102
|
"whatwg-fetch": "3.6.20"
|
|
103
103
|
},
|
|
104
104
|
"dependencies": {
|
|
105
|
-
"@auth0/nextjs-auth0": "4.
|
|
105
|
+
"@auth0/nextjs-auth0": "4.22.0",
|
|
106
106
|
"@smg-automotive/api-client-pkg": "4.6.0",
|
|
107
107
|
"@smg-automotive/i18n-pkg": "3.2.0",
|
|
108
108
|
"debug": "4.4.3",
|
|
109
|
-
"jose": "6.2.
|
|
109
|
+
"jose": "6.2.3",
|
|
110
110
|
"redis": "5.12.1"
|
|
111
111
|
},
|
|
112
112
|
"peerDependencies": {
|