@smg-automotive/auth 6.8.0-auth0-update-root.4 → 6.8.0-auth0-update-logout-customisations.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.
|
@@ -25,16 +25,51 @@ const isAuthRoute = (pathname, auth0Config) => {
|
|
|
25
25
|
tokenEndpoint,
|
|
26
26
|
].includes(pathname);
|
|
27
27
|
};
|
|
28
|
+
const getLegacyCookieDomain = (hostname) => {
|
|
29
|
+
const parts = hostname.split('.');
|
|
30
|
+
if (parts.length < 2)
|
|
31
|
+
return `.${hostname}`;
|
|
32
|
+
const base = parts.slice(-2).join('.');
|
|
33
|
+
return `.${base}`;
|
|
34
|
+
};
|
|
28
35
|
const authMiddleware = async ({ request, isProtectedRoute, language, host, protocol, isProxied, onError, }) => {
|
|
29
36
|
const { origin, pathname, search } = request.nextUrl;
|
|
30
37
|
const auth0Instance = getAuth0Instance.getAuth0Instance({ host, protocol, isProxied });
|
|
31
38
|
const auth0Config = auth0.getAuth0Config({ isProxied });
|
|
32
|
-
const isAuthErrorRoute = pathname.endsWith(auth0Config.globalAuthErrorPath);
|
|
33
|
-
const isProtected = !isAuthErrorRoute && isProtectedRoute(pathname);
|
|
34
39
|
const authResponse = await auth0Instance.middleware(request);
|
|
40
|
+
if (pathname === auth0Config.logoutEndpoint) {
|
|
41
|
+
const { authCookieNames, legacyAccessTokenName, legacyRefreshTokenName } = auth0Config;
|
|
42
|
+
authCookieNames.forEach((cookieName) => {
|
|
43
|
+
authResponse.cookies.delete({
|
|
44
|
+
name: cookieName,
|
|
45
|
+
maxAge: 0,
|
|
46
|
+
path: '/',
|
|
47
|
+
});
|
|
48
|
+
authResponse.cookies.delete({
|
|
49
|
+
name: `${cookieName}__0`,
|
|
50
|
+
maxAge: 0,
|
|
51
|
+
path: '/',
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
const legacyCookieDomain = getLegacyCookieDomain(host);
|
|
55
|
+
authResponse.cookies.delete({
|
|
56
|
+
name: legacyAccessTokenName,
|
|
57
|
+
maxAge: 0,
|
|
58
|
+
path: '/',
|
|
59
|
+
domain: legacyCookieDomain,
|
|
60
|
+
});
|
|
61
|
+
authResponse.cookies.delete({
|
|
62
|
+
name: legacyRefreshTokenName,
|
|
63
|
+
maxAge: 0,
|
|
64
|
+
path: '/',
|
|
65
|
+
domain: legacyCookieDomain,
|
|
66
|
+
});
|
|
67
|
+
}
|
|
35
68
|
if (isAuthRoute(pathname, auth0Config)) {
|
|
36
69
|
return authResponse;
|
|
37
70
|
}
|
|
71
|
+
const isAuthErrorRoute = pathname.endsWith(auth0Config.globalAuthErrorPath);
|
|
72
|
+
const isProtected = !isAuthErrorRoute && isProtectedRoute(pathname);
|
|
38
73
|
const session = await auth0Instance.getSession(request);
|
|
39
74
|
if (!isProtected && !session?.user) {
|
|
40
75
|
return authResponse;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.js","sources":["../../../../src/server/middleware.ts"],"sourcesContent":[null],"names":["getLoginLink","NextResponse","getAuth0Instance","getAuth0Config"],"mappings":";;;;;;;AAWA,MAAM,eAAe,GAAG,CAAC,EACvB,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,MAAM,GAMP,KAAI;IACH,MAAM,QAAQ,GAAGA,sBAAY,CAAC;QAC5B,WAAW;QACX,QAAQ;QACR,QAAQ;AACT,KAAA,CAAC;IAEF,OAAOC,mBAAY,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE;AACtD,QAAA,MAAM,EAAE,GAAG;AACZ,KAAA,CAAC;AACJ,CAAC;AAED,MAAM,WAAW,GAAG,CAAC,QAAgB,EAAE,WAAwB,KAAI;AACjE,IAAA,MAAM,EACJ,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,mBAAmB,EACnB,aAAa,GACd,GAAG,WAAW;IAEf,OAAO;QACL,aAAa;QACb,cAAc;QACd,gBAAgB;QAChB,mBAAmB;QACnB,aAAa;AACd,KAAA,CAAC,QAAQ,CAAC,QAAQ,CAAC;AACtB,CAAC;MAEY,cAAc,GAAG,OAAO,EACnC,OAAO,EACP,gBAAgB,EAChB,QAAQ,EACR,IAAI,EACJ,QAAQ,EACR,SAAS,EACT,OAAO,GASR,KAA2B;IAC1B,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO;AACpD,IAAA,MAAM,aAAa,GAAGC,iCAAgB,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;IAErE,MAAM,WAAW,GAAGC,oBAAc,CAAC,EAAE,SAAS,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"middleware.js","sources":["../../../../src/server/middleware.ts"],"sourcesContent":[null],"names":["getLoginLink","NextResponse","getAuth0Instance","getAuth0Config"],"mappings":"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"}
|
|
@@ -23,16 +23,51 @@ const isAuthRoute = (pathname, auth0Config) => {
|
|
|
23
23
|
tokenEndpoint,
|
|
24
24
|
].includes(pathname);
|
|
25
25
|
};
|
|
26
|
+
const getLegacyCookieDomain = (hostname) => {
|
|
27
|
+
const parts = hostname.split('.');
|
|
28
|
+
if (parts.length < 2)
|
|
29
|
+
return `.${hostname}`;
|
|
30
|
+
const base = parts.slice(-2).join('.');
|
|
31
|
+
return `.${base}`;
|
|
32
|
+
};
|
|
26
33
|
const authMiddleware = async ({ request, isProtectedRoute, language, host, protocol, isProxied, onError, }) => {
|
|
27
34
|
const { origin, pathname, search } = request.nextUrl;
|
|
28
35
|
const auth0Instance = getAuth0Instance({ host, protocol, isProxied });
|
|
29
36
|
const auth0Config = getAuth0Config({ isProxied });
|
|
30
|
-
const isAuthErrorRoute = pathname.endsWith(auth0Config.globalAuthErrorPath);
|
|
31
|
-
const isProtected = !isAuthErrorRoute && isProtectedRoute(pathname);
|
|
32
37
|
const authResponse = await auth0Instance.middleware(request);
|
|
38
|
+
if (pathname === auth0Config.logoutEndpoint) {
|
|
39
|
+
const { authCookieNames, legacyAccessTokenName, legacyRefreshTokenName } = auth0Config;
|
|
40
|
+
authCookieNames.forEach((cookieName) => {
|
|
41
|
+
authResponse.cookies.delete({
|
|
42
|
+
name: cookieName,
|
|
43
|
+
maxAge: 0,
|
|
44
|
+
path: '/',
|
|
45
|
+
});
|
|
46
|
+
authResponse.cookies.delete({
|
|
47
|
+
name: `${cookieName}__0`,
|
|
48
|
+
maxAge: 0,
|
|
49
|
+
path: '/',
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
const legacyCookieDomain = getLegacyCookieDomain(host);
|
|
53
|
+
authResponse.cookies.delete({
|
|
54
|
+
name: legacyAccessTokenName,
|
|
55
|
+
maxAge: 0,
|
|
56
|
+
path: '/',
|
|
57
|
+
domain: legacyCookieDomain,
|
|
58
|
+
});
|
|
59
|
+
authResponse.cookies.delete({
|
|
60
|
+
name: legacyRefreshTokenName,
|
|
61
|
+
maxAge: 0,
|
|
62
|
+
path: '/',
|
|
63
|
+
domain: legacyCookieDomain,
|
|
64
|
+
});
|
|
65
|
+
}
|
|
33
66
|
if (isAuthRoute(pathname, auth0Config)) {
|
|
34
67
|
return authResponse;
|
|
35
68
|
}
|
|
69
|
+
const isAuthErrorRoute = pathname.endsWith(auth0Config.globalAuthErrorPath);
|
|
70
|
+
const isProtected = !isAuthErrorRoute && isProtectedRoute(pathname);
|
|
36
71
|
const session = await auth0Instance.getSession(request);
|
|
37
72
|
if (!isProtected && !session?.user) {
|
|
38
73
|
return authResponse;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.js","sources":["../../../../src/server/middleware.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;AAWA,MAAM,eAAe,GAAG,CAAC,EACvB,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,MAAM,GAMP,KAAI;IACH,MAAM,QAAQ,GAAG,YAAY,CAAC;QAC5B,WAAW;QACX,QAAQ;QACR,QAAQ;AACT,KAAA,CAAC;IAEF,OAAO,YAAY,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE;AACtD,QAAA,MAAM,EAAE,GAAG;AACZ,KAAA,CAAC;AACJ,CAAC;AAED,MAAM,WAAW,GAAG,CAAC,QAAgB,EAAE,WAAwB,KAAI;AACjE,IAAA,MAAM,EACJ,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,mBAAmB,EACnB,aAAa,GACd,GAAG,WAAW;IAEf,OAAO;QACL,aAAa;QACb,cAAc;QACd,gBAAgB;QAChB,mBAAmB;QACnB,aAAa;AACd,KAAA,CAAC,QAAQ,CAAC,QAAQ,CAAC;AACtB,CAAC;MAEY,cAAc,GAAG,OAAO,EACnC,OAAO,EACP,gBAAgB,EAChB,QAAQ,EACR,IAAI,EACJ,QAAQ,EACR,SAAS,EACT,OAAO,GASR,KAA2B;IAC1B,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO;AACpD,IAAA,MAAM,aAAa,GAAG,gBAAgB,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;IAErE,MAAM,WAAW,GAAG,cAAc,CAAC,EAAE,SAAS,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"middleware.js","sources":["../../../../src/server/middleware.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|