@smg-automotive/auth 6.8.0-auth0-update-session-user-enrichment.1 → 6.8.0-auth0-update-set-seller-cookies.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/cjs/server/getAuth0Instance.js +2 -0
- package/dist/cjs/server/getAuth0Instance.js.map +1 -1
- package/dist/cjs/server/hooks/onCallback.d.ts +8 -0
- package/dist/cjs/server/hooks/onCallback.js +41 -0
- package/dist/cjs/server/hooks/onCallback.js.map +1 -0
- package/dist/esm/server/getAuth0Instance.js +2 -0
- package/dist/esm/server/getAuth0Instance.js.map +1 -1
- package/dist/esm/server/hooks/onCallback.d.ts +8 -0
- package/dist/esm/server/hooks/onCallback.js +39 -0
- package/dist/esm/server/hooks/onCallback.js.map +1 -0
- package/package.json +1 -1
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
var server = require('@auth0/nextjs-auth0/server');
|
|
4
4
|
var auth0 = require('../config/auth0.js');
|
|
5
|
+
var onCallback = require('./hooks/onCallback.js');
|
|
5
6
|
var beforeSessionSaved = require('./hooks/beforeSessionSaved.js');
|
|
6
7
|
|
|
7
8
|
const instances = {};
|
|
@@ -33,6 +34,7 @@ const getAuth0Instance = ({ protocol, host, isProxied, }) => {
|
|
|
33
34
|
audience: auth0Config.audience,
|
|
34
35
|
},
|
|
35
36
|
beforeSessionSaved: beforeSessionSaved.beforeSessionSavedFactory(auth0Config),
|
|
37
|
+
onCallback: onCallback.onCallbackFactory({ auth0Config, appBaseUrl }),
|
|
36
38
|
});
|
|
37
39
|
instances[key] = newInstance;
|
|
38
40
|
return newInstance;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getAuth0Instance.js","sources":["../../../../src/server/getAuth0Instance.ts"],"sourcesContent":[null],"names":["getAuth0Config","Auth0Client","beforeSessionSavedFactory"],"mappings":"
|
|
1
|
+
{"version":3,"file":"getAuth0Instance.js","sources":["../../../../src/server/getAuth0Instance.ts"],"sourcesContent":[null],"names":["getAuth0Config","Auth0Client","beforeSessionSavedFactory","onCallbackFactory"],"mappings":";;;;;;;AAQA,MAAM,SAAS,GAAmB,EAAE;AAQpC,MAAM,gBAAgB,GAAG,CAAC,EACxB,IAAI,EACJ,SAAS,EACT,QAAQ,GACgB,KAAI;AAC5B,IAAA,OAAO,GAAG,QAAQ,CAAA,CAAA,EAAI,IAAI,CAAA,WAAA,EAAc,SAAS,EAAE;AACrD,CAAC;AAEM,MAAM,gBAAgB,GAAG,CAAC,EAC/B,QAAQ,EACR,IAAI,EACJ,SAAS,GACe,KAAiB;AACzC,IAAA,MAAM,GAAG,GAAG,gBAAgB,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;AAC3D,IAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC;IAC/B,IAAI,QAAQ,EAAE;AACZ,QAAA,OAAO,QAAQ;IACjB;IAEA,MAAM,WAAW,GAAGA,oBAAc,CAAC,EAAE,SAAS,EAAE,CAAC;AACjD,IAAA,MAAM,UAAU,GAAG,CAAA,EAAG,QAAQ,CAAA,GAAA,EAAM,IAAI,EAAE;AAC1C,IAAA,MAAM,WAAW,GAAG,IAAIC,kBAAW,CAAC;QAClC,UAAU;AACV,QAAA,MAAM,EAAE;YACN,KAAK,EAAE,WAAW,CAAC,aAAa;YAChC,MAAM,EAAE,WAAW,CAAC,cAAc;YAClC,QAAQ,EAAE,WAAW,CAAC,gBAAgB;AACvC,SAAA;AACD,QAAA,OAAO,EAAE;AACP,YAAA,MAAM,EAAE;gBACN,IAAI,EAAE,WAAW,CAAC,iBAAiB;AACpC,aAAA;AACF,SAAA;AACD,QAAA,uBAAuB,EAAE;YACvB,KAAK,EAAE,WAAW,CAAC,MAAM;YACzB,QAAQ,EAAE,WAAW,CAAC,QAAQ;AAC/B,SAAA;AACD,QAAA,kBAAkB,EAAEC,4CAAyB,CAAC,WAAW,CAAC;QAC1D,UAAU,EAAEC,4BAAiB,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;AAC3D,KAAA,CAAC;AACF,IAAA,SAAS,CAAC,GAAG,CAAC,GAAG,WAAW;AAC5B,IAAA,OAAO,WAAW;AACpB;;;;"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { NextResponse } from 'next/server';
|
|
2
|
+
import type { OnCallbackContext, SessionData } from '@auth0/nextjs-auth0/types';
|
|
3
|
+
import type { SdkError } from '@auth0/nextjs-auth0/errors';
|
|
4
|
+
import { Auth0Config } from 'src/types';
|
|
5
|
+
export declare const onCallbackFactory: ({ auth0Config, appBaseUrl, }: {
|
|
6
|
+
auth0Config: Auth0Config;
|
|
7
|
+
appBaseUrl: string;
|
|
8
|
+
}) => (_error: SdkError | null, context: OnCallbackContext, session: SessionData | null) => Promise<NextResponse>;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var server = require('next/server');
|
|
4
|
+
var headers = require('next/headers');
|
|
5
|
+
var jose = require('jose');
|
|
6
|
+
|
|
7
|
+
const onCallbackFactory = ({ auth0Config, appBaseUrl, }) => async (_error, context, session) => {
|
|
8
|
+
if (!session?.tokenSet?.accessToken) {
|
|
9
|
+
return server.NextResponse.redirect(new URL(context.returnTo || '/', appBaseUrl));
|
|
10
|
+
}
|
|
11
|
+
const cookieStore = await headers.cookies();
|
|
12
|
+
let selectedSellerId = cookieStore.get(auth0Config.selectedSellerIdCookie.name)?.value ?? null;
|
|
13
|
+
const decodedToken = session.tokenSet.accessToken
|
|
14
|
+
? jose.decodeJwt(session.tokenSet.accessToken)
|
|
15
|
+
: null;
|
|
16
|
+
const availableSellerIds = decodedToken?.sellerIds ?? null;
|
|
17
|
+
if (availableSellerIds &&
|
|
18
|
+
selectedSellerId &&
|
|
19
|
+
Array.isArray(availableSellerIds) &&
|
|
20
|
+
availableSellerIds.length > 0 &&
|
|
21
|
+
!availableSellerIds.includes(selectedSellerId)) {
|
|
22
|
+
// for the edge case where the selected seller id is not in the list of available seller ids
|
|
23
|
+
// force update the cookie to the first available seller id
|
|
24
|
+
// they may happen when a user uses multiple accounts with different seller ids
|
|
25
|
+
selectedSellerId = availableSellerIds[0].toString();
|
|
26
|
+
}
|
|
27
|
+
const response = server.NextResponse.redirect(new URL(context.returnTo || '/', appBaseUrl));
|
|
28
|
+
if (selectedSellerId) {
|
|
29
|
+
response.cookies.set(auth0Config.selectedSellerIdCookie.name, selectedSellerId, auth0Config.selectedSellerIdCookie);
|
|
30
|
+
}
|
|
31
|
+
const impersonatedSellerId = decodedToken?.isImpersonated
|
|
32
|
+
? decodedToken.sellerIds[0]
|
|
33
|
+
: null;
|
|
34
|
+
if (impersonatedSellerId) {
|
|
35
|
+
response.cookies.set(auth0Config.impersonatedSellerIdCookie.name, impersonatedSellerId, auth0Config.impersonatedSellerIdCookie);
|
|
36
|
+
}
|
|
37
|
+
return response;
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
exports.onCallbackFactory = onCallbackFactory;
|
|
41
|
+
//# sourceMappingURL=onCallback.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"onCallback.js","sources":["../../../../../src/server/hooks/onCallback.ts"],"sourcesContent":[null],"names":["NextResponse","cookies","decodeJwt"],"mappings":";;;;;;MASa,iBAAiB,GAC5B,CAAC,EACC,WAAW,EACX,UAAU,GAIX,KACD,OACE,MAAuB,EACvB,OAA0B,EAC1B,OAA2B,KACF;AACzB,IAAA,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE;AACnC,QAAA,OAAOA,mBAAY,CAAC,QAAQ,CAC1B,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAI,GAAG,EAAE,UAAU,CAAC,CAC7C;IACH;AAEA,IAAA,MAAM,WAAW,GAAG,MAAMC,eAAO,EAAE;AACnC,IAAA,IAAI,gBAAgB,GAClB,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,KAAK,IAAI,IAAI;AAEzE,IAAA,MAAM,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC;UAClCC,cAAS,CAAkB,OAAO,CAAC,QAAQ,CAAC,WAAW;UACvD,IAAI;AACR,IAAA,MAAM,kBAAkB,GAAG,YAAY,EAAE,SAAS,IAAI,IAAI;AAE1D,IAAA,IACE,kBAAkB;QAClB,gBAAgB;AAChB,QAAA,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC;QACjC,kBAAkB,CAAC,MAAM,GAAG,CAAC;AAC7B,QAAA,CAAC,kBAAkB,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAC9C;;;;QAIA,gBAAgB,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACrD;AAEA,IAAA,MAAM,QAAQ,GAAGF,mBAAY,CAAC,QAAQ,CACpC,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAI,GAAG,EAAE,UAAU,CAAC,CAC7C;IAED,IAAI,gBAAgB,EAAE;AACpB,QAAA,QAAQ,CAAC,OAAO,CAAC,GAAG,CAClB,WAAW,CAAC,sBAAsB,CAAC,IAAI,EACvC,gBAAgB,EAChB,WAAW,CAAC,sBAAsB,CACnC;IACH;AAEA,IAAA,MAAM,oBAAoB,GAAG,YAAY,EAAE;AACzC,UAAE,YAAY,CAAC,SAAS,CAAC,CAAC;UACxB,IAAI;IAER,IAAI,oBAAoB,EAAE;AACxB,QAAA,QAAQ,CAAC,OAAO,CAAC,GAAG,CAClB,WAAW,CAAC,0BAA0B,CAAC,IAAI,EAC3C,oBAAoB,EACpB,WAAW,CAAC,0BAA0B,CACvC;IACH;AAEA,IAAA,OAAO,QAAQ;AACjB;;;;"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Auth0Client } from '@auth0/nextjs-auth0/server';
|
|
2
2
|
import { getAuth0Config } from '../config/auth0.js';
|
|
3
|
+
import { onCallbackFactory } from './hooks/onCallback.js';
|
|
3
4
|
import { beforeSessionSavedFactory } from './hooks/beforeSessionSaved.js';
|
|
4
5
|
|
|
5
6
|
const instances = {};
|
|
@@ -31,6 +32,7 @@ const getAuth0Instance = ({ protocol, host, isProxied, }) => {
|
|
|
31
32
|
audience: auth0Config.audience,
|
|
32
33
|
},
|
|
33
34
|
beforeSessionSaved: beforeSessionSavedFactory(auth0Config),
|
|
35
|
+
onCallback: onCallbackFactory({ auth0Config, appBaseUrl }),
|
|
34
36
|
});
|
|
35
37
|
instances[key] = newInstance;
|
|
36
38
|
return newInstance;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getAuth0Instance.js","sources":["../../../../src/server/getAuth0Instance.ts"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"getAuth0Instance.js","sources":["../../../../src/server/getAuth0Instance.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;AAQA,MAAM,SAAS,GAAmB,EAAE;AAQpC,MAAM,gBAAgB,GAAG,CAAC,EACxB,IAAI,EACJ,SAAS,EACT,QAAQ,GACgB,KAAI;AAC5B,IAAA,OAAO,GAAG,QAAQ,CAAA,CAAA,EAAI,IAAI,CAAA,WAAA,EAAc,SAAS,EAAE;AACrD,CAAC;AAEM,MAAM,gBAAgB,GAAG,CAAC,EAC/B,QAAQ,EACR,IAAI,EACJ,SAAS,GACe,KAAiB;AACzC,IAAA,MAAM,GAAG,GAAG,gBAAgB,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;AAC3D,IAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC;IAC/B,IAAI,QAAQ,EAAE;AACZ,QAAA,OAAO,QAAQ;IACjB;IAEA,MAAM,WAAW,GAAG,cAAc,CAAC,EAAE,SAAS,EAAE,CAAC;AACjD,IAAA,MAAM,UAAU,GAAG,CAAA,EAAG,QAAQ,CAAA,GAAA,EAAM,IAAI,EAAE;AAC1C,IAAA,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC;QAClC,UAAU;AACV,QAAA,MAAM,EAAE;YACN,KAAK,EAAE,WAAW,CAAC,aAAa;YAChC,MAAM,EAAE,WAAW,CAAC,cAAc;YAClC,QAAQ,EAAE,WAAW,CAAC,gBAAgB;AACvC,SAAA;AACD,QAAA,OAAO,EAAE;AACP,YAAA,MAAM,EAAE;gBACN,IAAI,EAAE,WAAW,CAAC,iBAAiB;AACpC,aAAA;AACF,SAAA;AACD,QAAA,uBAAuB,EAAE;YACvB,KAAK,EAAE,WAAW,CAAC,MAAM;YACzB,QAAQ,EAAE,WAAW,CAAC,QAAQ;AAC/B,SAAA;AACD,QAAA,kBAAkB,EAAE,yBAAyB,CAAC,WAAW,CAAC;QAC1D,UAAU,EAAE,iBAAiB,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;AAC3D,KAAA,CAAC;AACF,IAAA,SAAS,CAAC,GAAG,CAAC,GAAG,WAAW;AAC5B,IAAA,OAAO,WAAW;AACpB;;;;"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { NextResponse } from 'next/server';
|
|
2
|
+
import type { OnCallbackContext, SessionData } from '@auth0/nextjs-auth0/types';
|
|
3
|
+
import type { SdkError } from '@auth0/nextjs-auth0/errors';
|
|
4
|
+
import { Auth0Config } from 'src/types';
|
|
5
|
+
export declare const onCallbackFactory: ({ auth0Config, appBaseUrl, }: {
|
|
6
|
+
auth0Config: Auth0Config;
|
|
7
|
+
appBaseUrl: string;
|
|
8
|
+
}) => (_error: SdkError | null, context: OnCallbackContext, session: SessionData | null) => Promise<NextResponse>;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { NextResponse } from 'next/server';
|
|
2
|
+
import { cookies } from 'next/headers';
|
|
3
|
+
import { decodeJwt } from 'jose';
|
|
4
|
+
|
|
5
|
+
const onCallbackFactory = ({ auth0Config, appBaseUrl, }) => async (_error, context, session) => {
|
|
6
|
+
if (!session?.tokenSet?.accessToken) {
|
|
7
|
+
return NextResponse.redirect(new URL(context.returnTo || '/', appBaseUrl));
|
|
8
|
+
}
|
|
9
|
+
const cookieStore = await cookies();
|
|
10
|
+
let selectedSellerId = cookieStore.get(auth0Config.selectedSellerIdCookie.name)?.value ?? null;
|
|
11
|
+
const decodedToken = session.tokenSet.accessToken
|
|
12
|
+
? decodeJwt(session.tokenSet.accessToken)
|
|
13
|
+
: null;
|
|
14
|
+
const availableSellerIds = decodedToken?.sellerIds ?? null;
|
|
15
|
+
if (availableSellerIds &&
|
|
16
|
+
selectedSellerId &&
|
|
17
|
+
Array.isArray(availableSellerIds) &&
|
|
18
|
+
availableSellerIds.length > 0 &&
|
|
19
|
+
!availableSellerIds.includes(selectedSellerId)) {
|
|
20
|
+
// for the edge case where the selected seller id is not in the list of available seller ids
|
|
21
|
+
// force update the cookie to the first available seller id
|
|
22
|
+
// they may happen when a user uses multiple accounts with different seller ids
|
|
23
|
+
selectedSellerId = availableSellerIds[0].toString();
|
|
24
|
+
}
|
|
25
|
+
const response = NextResponse.redirect(new URL(context.returnTo || '/', appBaseUrl));
|
|
26
|
+
if (selectedSellerId) {
|
|
27
|
+
response.cookies.set(auth0Config.selectedSellerIdCookie.name, selectedSellerId, auth0Config.selectedSellerIdCookie);
|
|
28
|
+
}
|
|
29
|
+
const impersonatedSellerId = decodedToken?.isImpersonated
|
|
30
|
+
? decodedToken.sellerIds[0]
|
|
31
|
+
: null;
|
|
32
|
+
if (impersonatedSellerId) {
|
|
33
|
+
response.cookies.set(auth0Config.impersonatedSellerIdCookie.name, impersonatedSellerId, auth0Config.impersonatedSellerIdCookie);
|
|
34
|
+
}
|
|
35
|
+
return response;
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
export { onCallbackFactory };
|
|
39
|
+
//# sourceMappingURL=onCallback.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"onCallback.js","sources":["../../../../../src/server/hooks/onCallback.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;MASa,iBAAiB,GAC5B,CAAC,EACC,WAAW,EACX,UAAU,GAIX,KACD,OACE,MAAuB,EACvB,OAA0B,EAC1B,OAA2B,KACF;AACzB,IAAA,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE;AACnC,QAAA,OAAO,YAAY,CAAC,QAAQ,CAC1B,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAI,GAAG,EAAE,UAAU,CAAC,CAC7C;IACH;AAEA,IAAA,MAAM,WAAW,GAAG,MAAM,OAAO,EAAE;AACnC,IAAA,IAAI,gBAAgB,GAClB,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,KAAK,IAAI,IAAI;AAEzE,IAAA,MAAM,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC;UAClC,SAAS,CAAkB,OAAO,CAAC,QAAQ,CAAC,WAAW;UACvD,IAAI;AACR,IAAA,MAAM,kBAAkB,GAAG,YAAY,EAAE,SAAS,IAAI,IAAI;AAE1D,IAAA,IACE,kBAAkB;QAClB,gBAAgB;AAChB,QAAA,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC;QACjC,kBAAkB,CAAC,MAAM,GAAG,CAAC;AAC7B,QAAA,CAAC,kBAAkB,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAC9C;;;;QAIA,gBAAgB,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACrD;AAEA,IAAA,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,CACpC,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAI,GAAG,EAAE,UAAU,CAAC,CAC7C;IAED,IAAI,gBAAgB,EAAE;AACpB,QAAA,QAAQ,CAAC,OAAO,CAAC,GAAG,CAClB,WAAW,CAAC,sBAAsB,CAAC,IAAI,EACvC,gBAAgB,EAChB,WAAW,CAAC,sBAAsB,CACnC;IACH;AAEA,IAAA,MAAM,oBAAoB,GAAG,YAAY,EAAE;AACzC,UAAE,YAAY,CAAC,SAAS,CAAC,CAAC;UACxB,IAAI;IAER,IAAI,oBAAoB,EAAE;AACxB,QAAA,QAAQ,CAAC,OAAO,CAAC,GAAG,CAClB,WAAW,CAAC,0BAA0B,CAAC,IAAI,EAC3C,oBAAoB,EACpB,WAAW,CAAC,0BAA0B,CACvC;IACH;AAEA,IAAA,OAAO,QAAQ;AACjB;;;;"}
|