@asgardeo/nextjs 0.3.10 → 0.3.11
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/middleware.js +45 -0
- package/dist/cjs/middleware.js.map +7 -0
- package/dist/cjs/server/index.js +2 -10
- package/dist/cjs/server/index.js.map +2 -2
- package/dist/esm/client/contexts/Asgardeo/AsgardeoContext.js +2 -0
- package/dist/esm/client/contexts/Asgardeo/AsgardeoContext.js.map +1 -1
- package/dist/esm/client/contexts/Asgardeo/AsgardeoProvider.js +3 -1
- package/dist/esm/client/contexts/Asgardeo/AsgardeoProvider.js.map +1 -1
- package/dist/esm/constants/sessionConstants.js +49 -0
- package/dist/esm/constants/sessionConstants.js.map +1 -0
- package/dist/esm/middleware.js +35 -0
- package/dist/esm/middleware.js.map +1 -0
- package/dist/esm/server/AsgardeoProvider.js +4 -2
- package/dist/esm/server/AsgardeoProvider.js.map +1 -1
- package/dist/esm/server/actions/clearSession.js +49 -0
- package/dist/esm/server/actions/clearSession.js.map +1 -0
- package/dist/esm/server/actions/getAccessToken.js.map +1 -1
- package/dist/esm/server/actions/getSessionId.js.map +1 -1
- package/dist/esm/server/actions/getSessionPayload.js.map +1 -1
- package/dist/esm/server/actions/handleOAuthCallbackAction.js +6 -3
- package/dist/esm/server/actions/handleOAuthCallbackAction.js.map +1 -1
- package/dist/esm/server/actions/isSignedIn.js +11 -15
- package/dist/esm/server/actions/isSignedIn.js.map +1 -1
- package/dist/esm/server/actions/refreshToken.js +86 -0
- package/dist/esm/server/actions/refreshToken.js.map +1 -0
- package/dist/esm/server/actions/signInAction.js +13 -5
- package/dist/esm/server/actions/signInAction.js.map +1 -1
- package/dist/esm/server/actions/signOutAction.js.map +1 -1
- package/dist/esm/server/actions/switchOrganization.js +8 -9
- package/dist/esm/server/actions/switchOrganization.js.map +1 -1
- package/dist/esm/server/index.js +0 -3
- package/dist/esm/server/index.js.map +1 -1
- package/dist/esm/server/middleware/asgardeoMiddleware.js +182 -85
- package/dist/esm/server/middleware/asgardeoMiddleware.js.map +1 -1
- package/dist/esm/utils/SessionManager.js +54 -7
- package/dist/esm/utils/SessionManager.js.map +1 -1
- package/dist/esm/utils/decorateConfigWithNextEnv.js +5 -1
- package/dist/esm/utils/decorateConfigWithNextEnv.js.map +1 -1
- package/dist/esm/utils/handleRefreshToken.js +82 -0
- package/dist/esm/utils/handleRefreshToken.js.map +1 -0
- package/dist/types/client/contexts/Asgardeo/AsgardeoContext.d.ts +5 -1
- package/dist/types/client/contexts/Asgardeo/AsgardeoProvider.d.ts +3 -0
- package/dist/types/constants/sessionConstants.d.ts +48 -0
- package/dist/types/middleware.d.ts +34 -0
- package/dist/types/server/AsgardeoProvider.d.ts +14 -0
- package/dist/types/server/actions/clearSession.d.ts +39 -0
- package/dist/types/server/actions/isSignedIn.d.ts +8 -3
- package/dist/types/server/actions/refreshToken.d.ts +44 -0
- package/dist/types/server/index.d.ts +0 -3
- package/dist/types/server/middleware/asgardeoMiddleware.d.ts +20 -28
- package/dist/types/utils/SessionManager.d.ts +26 -5
- package/dist/types/utils/handleRefreshToken.d.ts +46 -0
- package/package.json +9 -3
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
21
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
22
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
23
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
24
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
25
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
26
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
27
|
+
mod
|
|
28
|
+
));
|
|
29
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
30
|
+
var middleware_exports = {};
|
|
31
|
+
__export(middleware_exports, {
|
|
32
|
+
asgardeoMiddleware: () => import_asgardeoMiddleware.default,
|
|
33
|
+
createRouteMatcher: () => import_createRouteMatcher.default
|
|
34
|
+
});
|
|
35
|
+
module.exports = __toCommonJS(middleware_exports);
|
|
36
|
+
var import_asgardeoMiddleware = __toESM(require("./server/middleware/asgardeoMiddleware"), 1);
|
|
37
|
+
__reExport(middleware_exports, require("./server/middleware/asgardeoMiddleware"), module.exports);
|
|
38
|
+
var import_createRouteMatcher = __toESM(require("./server/middleware/createRouteMatcher"), 1);
|
|
39
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
40
|
+
0 && (module.exports = {
|
|
41
|
+
asgardeoMiddleware,
|
|
42
|
+
createRouteMatcher,
|
|
43
|
+
...require("./server/middleware/asgardeoMiddleware")
|
|
44
|
+
});
|
|
45
|
+
//# sourceMappingURL=middleware.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/middleware.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * Copyright (c) 2025, WSO2 LLC. (https://www.wso2.com).\n *\n * WSO2 LLC. licenses this file to you under the Apache License,\n * Version 2.0 (the \"License\"); you may not use this file except\n * in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\n/**\n * Edge Runtime entry point \u2014 safe for use in Next.js middleware.ts.\n *\n * This file must only import modules whose full transitive dependency graph\n * contains zero Node.js-only APIs (process.versions, fs, crypto, etc.).\n * Permitted dependencies: jose, fetch, next/server, and local utilities\n * that themselves satisfy the same constraint.\n *\n * Do NOT import from:\n * - AsgardeoNextClient (depends on @asgardeo/node \u2192 @asgardeo/javascript)\n * - server/AsgardeoProvider (depends on @asgardeo/node)\n * - server/actions/* (depend on @asgardeo/node)\n * - client/* (depend on @asgardeo/javascript via @asgardeo/react)\n */\n\nexport {default as asgardeoMiddleware} from './server/middleware/asgardeoMiddleware';\nexport * from './server/middleware/asgardeoMiddleware';\n\nexport {default as createRouteMatcher} from './server/middleware/createRouteMatcher';\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAiCA,gCAA4C;AAC5C,+BAAc,mDAlCd;AAoCA,gCAA4C;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
package/dist/cjs/server/index.js
CHANGED
|
@@ -30,24 +30,16 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
30
30
|
var server_exports = {};
|
|
31
31
|
__export(server_exports, {
|
|
32
32
|
AsgardeoProvider: () => import_AsgardeoProvider.default,
|
|
33
|
-
asgardeo: () => import_asgardeo.default
|
|
34
|
-
asgardeoMiddleware: () => import_asgardeoMiddleware.default,
|
|
35
|
-
createRouteMatcher: () => import_createRouteMatcher.default
|
|
33
|
+
asgardeo: () => import_asgardeo.default
|
|
36
34
|
});
|
|
37
35
|
module.exports = __toCommonJS(server_exports);
|
|
38
36
|
var import_asgardeo = __toESM(require("./asgardeo"), 1);
|
|
39
37
|
var import_AsgardeoProvider = __toESM(require("./AsgardeoProvider.js"), 1);
|
|
40
38
|
__reExport(server_exports, require("./AsgardeoProvider.js"), module.exports);
|
|
41
|
-
var import_asgardeoMiddleware = __toESM(require("./middleware/asgardeoMiddleware"), 1);
|
|
42
|
-
__reExport(server_exports, require("./middleware/asgardeoMiddleware"), module.exports);
|
|
43
|
-
var import_createRouteMatcher = __toESM(require("./middleware/createRouteMatcher"), 1);
|
|
44
39
|
// Annotate the CommonJS export names for ESM import in node:
|
|
45
40
|
0 && (module.exports = {
|
|
46
41
|
AsgardeoProvider,
|
|
47
42
|
asgardeo,
|
|
48
|
-
|
|
49
|
-
createRouteMatcher,
|
|
50
|
-
...require("./AsgardeoProvider.js"),
|
|
51
|
-
...require("./middleware/asgardeoMiddleware")
|
|
43
|
+
...require("./AsgardeoProvider.js")
|
|
52
44
|
});
|
|
53
45
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/server/index.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * Copyright (c) 2025, WSO2 LLC. (https://www.wso2.com).\n *\n * WSO2 LLC. licenses this file to you under the Apache License,\n * Version 2.0 (the \"License\"); you may not use this file except\n * in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\n// @asgardeo/nextjs/server exports.\n\nexport {default as asgardeo} from './asgardeo';\n\nexport {default as AsgardeoProvider} from './AsgardeoProvider.js';\nexport * from './AsgardeoProvider.js';\n
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;
|
|
4
|
+
"sourcesContent": ["/**\n * Copyright (c) 2025, WSO2 LLC. (https://www.wso2.com).\n *\n * WSO2 LLC. licenses this file to you under the Apache License,\n * Version 2.0 (the \"License\"); you may not use this file except\n * in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\n// @asgardeo/nextjs/server exports.\n\nexport {default as asgardeo} from './asgardeo';\n\nexport {default as AsgardeoProvider} from './AsgardeoProvider.js';\nexport * from './AsgardeoProvider.js';\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAoBA,sBAAkC;AAElC,8BAA0C;AAC1C,2BAAc,kCAvBd;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -24,10 +24,12 @@ const AsgardeoContext = createContext({
|
|
|
24
24
|
afterSignInUrl: undefined,
|
|
25
25
|
applicationId: undefined,
|
|
26
26
|
baseUrl: undefined,
|
|
27
|
+
clearSession: () => Promise.resolve(),
|
|
27
28
|
isInitialized: false,
|
|
28
29
|
isLoading: true,
|
|
29
30
|
isSignedIn: false,
|
|
30
31
|
organizationHandle: undefined,
|
|
32
|
+
refreshToken: () => Promise.resolve({ expiresAt: 0 }),
|
|
31
33
|
signIn: () => Promise.resolve({}),
|
|
32
34
|
signInUrl: undefined,
|
|
33
35
|
signOut: () => Promise.resolve({}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AsgardeoContext.js","sourceRoot":"","sources":["../../../../../src/client/contexts/Asgardeo/AsgardeoContext.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,YAAY,CAAC;AAGb,OAAO,EAAU,aAAa,EAAC,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"AsgardeoContext.js","sourceRoot":"","sources":["../../../../../src/client/contexts/Asgardeo/AsgardeoContext.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,YAAY,CAAC;AAGb,OAAO,EAAU,aAAa,EAAC,MAAM,OAAO,CAAC;AAW7C;;GAEG;AACH,MAAM,eAAe,GAAyC,aAAa,CAA8B;IACvG,cAAc,EAAE,SAAS;IACzB,aAAa,EAAE,SAAS;IACxB,OAAO,EAAE,SAAS;IAClB,YAAY,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE;IACrC,aAAa,EAAE,KAAK;IACpB,SAAS,EAAE,IAAI;IACf,UAAU,EAAE,KAAK;IACjB,kBAAkB,EAAE,SAAS;IAC7B,YAAY,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAC,SAAS,EAAE,CAAC,EAAC,CAAC;IACnD,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAS,CAAC;IACxC,SAAS,EAAE,SAAS;IACpB,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAS,CAAC;IACzC,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAS,CAAC;IACxC,SAAS,EAAE,SAAS;IACpB,IAAI,EAAE,IAAI;CACX,CAAC,CAAC;AAEH,eAAe,CAAC,WAAW,GAAG,iBAAiB,CAAC;AAEhD,eAAe,eAAe,CAAC"}
|
|
@@ -23,7 +23,7 @@ import { useRouter, useSearchParams } from 'next/navigation';
|
|
|
23
23
|
import { useEffect, useMemo, useRef, useState } from 'react';
|
|
24
24
|
import AsgardeoContext from './AsgardeoContext';
|
|
25
25
|
import logger from '../../../utils/logger';
|
|
26
|
-
const AsgardeoClientProvider = ({ baseUrl, children, signIn, signOut, signUp, handleOAuthCallback, createOrganization, preferences, isSignedIn, signInUrl, signUpUrl, user: _user, userProfile: _userProfile, currentOrganization, updateProfile, applicationId, organizationHandle, myOrganizations, revalidateMyOrganizations, getAllOrganizations, switchOrganization, brandingPreference, }) => {
|
|
26
|
+
const AsgardeoClientProvider = ({ baseUrl, children, signIn, clearSession, refreshToken, signOut, signUp, handleOAuthCallback, createOrganization, preferences, isSignedIn, signInUrl, signUpUrl, user: _user, userProfile: _userProfile, currentOrganization, updateProfile, applicationId, organizationHandle, myOrganizations, revalidateMyOrganizations, getAllOrganizations, switchOrganization, brandingPreference, }) => {
|
|
27
27
|
const reRenderCheckRef = useRef(false);
|
|
28
28
|
const router = useRouter();
|
|
29
29
|
const searchParams = useSearchParams();
|
|
@@ -152,9 +152,11 @@ const AsgardeoClientProvider = ({ baseUrl, children, signIn, signOut, signUp, ha
|
|
|
152
152
|
const contextValue = useMemo(() => ({
|
|
153
153
|
applicationId,
|
|
154
154
|
baseUrl,
|
|
155
|
+
clearSession,
|
|
155
156
|
isLoading,
|
|
156
157
|
isSignedIn,
|
|
157
158
|
organizationHandle,
|
|
159
|
+
refreshToken,
|
|
158
160
|
signIn: handleSignIn,
|
|
159
161
|
signInUrl,
|
|
160
162
|
signOut: handleSignOut,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AsgardeoProvider.js","sourceRoot":"","sources":["../../../../../src/client/contexts/Asgardeo/AsgardeoProvider.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,YAAY,CAAC;;AAEb,OAAO,EAKL,4BAA4B,EAQ5B,oBAAoB,GACrB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,aAAa,EAEb,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,GACf,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAC,SAAS,EAAE,eAAe,EAAC,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAmC,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAC,MAAM,OAAO,CAAC;AAC7F,OAAO,eAAuC,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"AsgardeoProvider.js","sourceRoot":"","sources":["../../../../../src/client/contexts/Asgardeo/AsgardeoProvider.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025, WSO2 LLC. (https://www.wso2.com).
|
|
3
|
+
*
|
|
4
|
+
* WSO2 LLC. licenses this file to you under the Apache License,
|
|
5
|
+
* Version 2.0 (the "License"); you may not use this file except
|
|
6
|
+
* in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing,
|
|
12
|
+
* software distributed under the License is distributed on an
|
|
13
|
+
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
14
|
+
* KIND, either express or implied. See the License for the
|
|
15
|
+
* specific language governing permissions and limitations
|
|
16
|
+
* under the License.
|
|
17
|
+
*/
|
|
18
|
+
/**
|
|
19
|
+
* Number of seconds before access token expiry at which the SDK proactively
|
|
20
|
+
* refreshes the token. A 25-second buffer prevents races where the token is
|
|
21
|
+
* valid when a request starts but expires mid-flight.
|
|
22
|
+
*/
|
|
23
|
+
export const REFRESH_BUFFER_SECONDS = 25;
|
|
24
|
+
/**
|
|
25
|
+
* Default session cookie lifetime in seconds (24 hours).
|
|
26
|
+
*
|
|
27
|
+
* Used when no explicit session cookie expiry is configured. The session cookie
|
|
28
|
+
* lifetime can be overridden in two ways (evaluated in this order):
|
|
29
|
+
*
|
|
30
|
+
* 1. `sessionCookieExpiryTime` in `AsgardeoNodeConfig` — set programmatically
|
|
31
|
+
* when initialising the SDK.
|
|
32
|
+
* 2. `ASGARDEO_SESSION_COOKIE_EXPIRY_TIME` environment variable — set in `.env`
|
|
33
|
+
* (e.g. `ASGARDEO_SESSION_COOKIE_EXPIRY_TIME=86400`).
|
|
34
|
+
* 3. This constant — applied when neither of the above is present.
|
|
35
|
+
*
|
|
36
|
+
* Two independent expiry bounds apply to the session and they are generally
|
|
37
|
+
* NOT the same value:
|
|
38
|
+
*
|
|
39
|
+
* - JWT `exp` claim — set by `SessionManager.createSessionToken(...)` from
|
|
40
|
+
* the `accessTokenTtlSeconds` argument (i.e. the access token's `expires_in`
|
|
41
|
+
* returned by the auth server, typically ~1 hour). This controls when
|
|
42
|
+
* `verifySessionToken` rejects the token and is the trigger for a refresh.
|
|
43
|
+
* - Browser cookie `maxAge` — set by the caller (sign-in / refresh / org-switch
|
|
44
|
+
* actions) from `SessionManager.resolveSessionCookieExpiry(...)`, which returns
|
|
45
|
+
* this constant by default (24 hours). This controls how long the browser
|
|
46
|
+
* holds the cookie before discarding it.
|
|
47
|
+
*/
|
|
48
|
+
export const DEFAULT_SESSION_COOKIE_EXPIRY_TIME = 86400;
|
|
49
|
+
//# sourceMappingURL=sessionConstants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessionConstants.js","sourceRoot":"","sources":["../../../src/constants/sessionConstants.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAW,EAAE,CAAC;AAEjD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAW,KAAK,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025, WSO2 LLC. (https://www.wso2.com).
|
|
3
|
+
*
|
|
4
|
+
* WSO2 LLC. licenses this file to you under the Apache License,
|
|
5
|
+
* Version 2.0 (the "License"); you may not use this file except
|
|
6
|
+
* in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing,
|
|
12
|
+
* software distributed under the License is distributed on an
|
|
13
|
+
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
14
|
+
* KIND, either express or implied. See the License for the
|
|
15
|
+
* specific language governing permissions and limitations
|
|
16
|
+
* under the License.
|
|
17
|
+
*/
|
|
18
|
+
/**
|
|
19
|
+
* Edge Runtime entry point — safe for use in Next.js middleware.ts.
|
|
20
|
+
*
|
|
21
|
+
* This file must only import modules whose full transitive dependency graph
|
|
22
|
+
* contains zero Node.js-only APIs (process.versions, fs, crypto, etc.).
|
|
23
|
+
* Permitted dependencies: jose, fetch, next/server, and local utilities
|
|
24
|
+
* that themselves satisfy the same constraint.
|
|
25
|
+
*
|
|
26
|
+
* Do NOT import from:
|
|
27
|
+
* - AsgardeoNextClient (depends on @asgardeo/node → @asgardeo/javascript)
|
|
28
|
+
* - server/AsgardeoProvider (depends on @asgardeo/node)
|
|
29
|
+
* - server/actions/* (depend on @asgardeo/node)
|
|
30
|
+
* - client/* (depend on @asgardeo/javascript via @asgardeo/react)
|
|
31
|
+
*/
|
|
32
|
+
export { default as asgardeoMiddleware } from './server/middleware/asgardeoMiddleware';
|
|
33
|
+
export * from './server/middleware/asgardeoMiddleware';
|
|
34
|
+
export { default as createRouteMatcher } from './server/middleware/createRouteMatcher';
|
|
35
|
+
//# sourceMappingURL=middleware.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../src/middleware.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAC,OAAO,IAAI,kBAAkB,EAAC,MAAM,wCAAwC,CAAC;AACrF,cAAc,wCAAwC,CAAC;AAEvD,OAAO,EAAC,OAAO,IAAI,kBAAkB,EAAC,MAAM,wCAAwC,CAAC"}
|
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
'use server';
|
|
19
19
|
import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
|
|
20
20
|
import { AsgardeoRuntimeError } from '@asgardeo/node';
|
|
21
|
+
import clearSession from './actions/clearSession';
|
|
21
22
|
import createOrganization from './actions/createOrganization';
|
|
22
23
|
import getAllOrganizations from './actions/getAllOrganizations';
|
|
23
24
|
import getBrandingPreference from './actions/getBrandingPreference';
|
|
@@ -29,6 +30,7 @@ import getUserAction from './actions/getUserAction';
|
|
|
29
30
|
import getUserProfileAction from './actions/getUserProfileAction';
|
|
30
31
|
import handleOAuthCallbackAction from './actions/handleOAuthCallbackAction';
|
|
31
32
|
import isSignedIn from './actions/isSignedIn';
|
|
33
|
+
import refreshToken from './actions/refreshToken';
|
|
32
34
|
import signInAction from './actions/signInAction';
|
|
33
35
|
import signOutAction from './actions/signOutAction';
|
|
34
36
|
import signUpAction from './actions/signUpAction';
|
|
@@ -71,7 +73,7 @@ const AsgardeoServerProvider = async ({ children, afterSignInUrl, afterSignOutUr
|
|
|
71
73
|
// Try to get session information from JWT first, then fall back to legacy
|
|
72
74
|
const sessionPayload = await getSessionPayload();
|
|
73
75
|
const sessionId = sessionPayload?.sessionId || (await getSessionId()) || '';
|
|
74
|
-
const signedIn =
|
|
76
|
+
const signedIn = await isSignedIn(sessionId);
|
|
75
77
|
let user = {};
|
|
76
78
|
let userProfile = {
|
|
77
79
|
flattenedProfile: {},
|
|
@@ -149,7 +151,7 @@ const AsgardeoServerProvider = async ({ children, afterSignInUrl, afterSignOutUr
|
|
|
149
151
|
console.warn('[AsgardeoServerProvider] Failed to fetch branding preference:', error);
|
|
150
152
|
}
|
|
151
153
|
}
|
|
152
|
-
return (_jsx(AsgardeoClientProvider, { organizationHandle: config?.organizationHandle, applicationId: config?.applicationId, baseUrl: config?.baseUrl, signIn: signInAction, signOut: signOutAction, signUp: signUpAction, handleOAuthCallback: handleOAuthCallbackAction, signInUrl: config?.signInUrl, signUpUrl: config?.signUpUrl, preferences: config?.preferences, clientId: config?.clientId, user: user, currentOrganization: currentOrganization, userProfile: userProfile, updateProfile: updateUserProfileAction, isSignedIn: signedIn, myOrganizations: myOrganizations, getAllOrganizations: getAllOrganizations, switchOrganization: switchOrganization, brandingPreference: brandingPreference, createOrganization: createOrganization, children: children }));
|
|
154
|
+
return (_jsx(AsgardeoClientProvider, { organizationHandle: config?.organizationHandle, applicationId: config?.applicationId, baseUrl: config?.baseUrl, signIn: signInAction, clearSession: clearSession, refreshToken: refreshToken, signOut: signOutAction, signUp: signUpAction, handleOAuthCallback: handleOAuthCallbackAction, signInUrl: config?.signInUrl, signUpUrl: config?.signUpUrl, preferences: config?.preferences, clientId: config?.clientId, user: user, currentOrganization: currentOrganization, userProfile: userProfile, updateProfile: updateUserProfileAction, isSignedIn: signedIn, myOrganizations: myOrganizations, getAllOrganizations: getAllOrganizations, switchOrganization: switchOrganization, brandingPreference: brandingPreference, createOrganization: createOrganization, children: children }));
|
|
153
155
|
};
|
|
154
156
|
export default AsgardeoServerProvider;
|
|
155
157
|
//# sourceMappingURL=AsgardeoProvider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AsgardeoProvider.js","sourceRoot":"","sources":["../../../src/server/AsgardeoProvider.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,YAAY,CAAC;;AAEb,OAAO,EAAqB,oBAAoB,EAA2C,MAAM,gBAAgB,CAAC;AAGlH,OAAO,kBAAkB,MAAM,8BAA8B,CAAC;AAC9D,OAAO,mBAAmB,MAAM,+BAA+B,CAAC;AAChE,OAAO,qBAAqB,MAAM,iCAAiC,CAAC;AACpE,OAAO,4BAA4B,MAAM,wCAAwC,CAAC;AAClF,OAAO,kBAAkB,MAAM,8BAA8B,CAAC;AAC9D,OAAO,YAAY,MAAM,wBAAwB,CAAC;AAClD,OAAO,iBAAiB,MAAM,6BAA6B,CAAC;AAC5D,OAAO,aAAa,MAAM,yBAAyB,CAAC;AACpD,OAAO,oBAAoB,MAAM,gCAAgC,CAAC;AAClE,OAAO,yBAAyB,MAAM,qCAAqC,CAAC;AAC5E,OAAO,UAAU,MAAM,sBAAsB,CAAC;AAC9C,OAAO,YAAY,MAAM,wBAAwB,CAAC;AAClD,OAAO,aAAa,MAAM,yBAAyB,CAAC;AACpD,OAAO,YAAY,MAAM,wBAAwB,CAAC;AAClD,OAAO,kBAAkB,MAAM,8BAA8B,CAAC;AAC9D,OAAO,uBAAuB,MAAM,mCAAmC,CAAC;AACxE,OAAO,kBAAkB,MAAM,uBAAuB,CAAC;AACvD,OAAO,sBAAsB,MAAM,iDAAiD,CAAC;AAErF,OAAO,MAAM,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"AsgardeoProvider.js","sourceRoot":"","sources":["../../../src/server/AsgardeoProvider.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,YAAY,CAAC;;AAEb,OAAO,EAAqB,oBAAoB,EAA2C,MAAM,gBAAgB,CAAC;AAGlH,OAAO,YAAY,MAAM,wBAAwB,CAAC;AAClD,OAAO,kBAAkB,MAAM,8BAA8B,CAAC;AAC9D,OAAO,mBAAmB,MAAM,+BAA+B,CAAC;AAChE,OAAO,qBAAqB,MAAM,iCAAiC,CAAC;AACpE,OAAO,4BAA4B,MAAM,wCAAwC,CAAC;AAClF,OAAO,kBAAkB,MAAM,8BAA8B,CAAC;AAC9D,OAAO,YAAY,MAAM,wBAAwB,CAAC;AAClD,OAAO,iBAAiB,MAAM,6BAA6B,CAAC;AAC5D,OAAO,aAAa,MAAM,yBAAyB,CAAC;AACpD,OAAO,oBAAoB,MAAM,gCAAgC,CAAC;AAClE,OAAO,yBAAyB,MAAM,qCAAqC,CAAC;AAC5E,OAAO,UAAU,MAAM,sBAAsB,CAAC;AAC9C,OAAO,YAAY,MAAM,wBAAwB,CAAC;AAClD,OAAO,YAAY,MAAM,wBAAwB,CAAC;AAClD,OAAO,aAAa,MAAM,yBAAyB,CAAC;AACpD,OAAO,YAAY,MAAM,wBAAwB,CAAC;AAClD,OAAO,kBAAkB,MAAM,8BAA8B,CAAC;AAC9D,OAAO,uBAAuB,MAAM,mCAAmC,CAAC;AACxE,OAAO,kBAAkB,MAAM,uBAAuB,CAAC;AACvD,OAAO,sBAAsB,MAAM,iDAAiD,CAAC;AAErF,OAAO,MAAM,MAAM,iBAAiB,CAAC;AAwBrC;;;;;;;;;;;;;;;GAeG;AACH,MAAM,sBAAsB,GAAuD,KAAK,EAAE,EACxF,QAAQ,EACR,cAAc,EACd,eAAe,EACf,GAAG,OAAO,EACqC,EAAyB,EAAE;IAC1E,MAAM,cAAc,GAAuB,kBAAkB,CAAC,WAAW,EAAE,CAAC;IAC5E,IAAI,MAAM,GAAgC,EAAE,CAAC;IAE7C,IAAI,CAAC;QACH,MAAM,cAAc,CAAC,UAAU,CAAC,OAA6B,CAAC,CAAC;QAE/D,MAAM,CAAC,KAAK,CAAC,oEAAoE,CAAC,CAAC;QAEnF,MAAM,GAAG,MAAM,cAAc,CAAC,gBAAgB,EAAE,CAAC;IACnD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,gEAAgE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAElG,MAAM,IAAI,oBAAoB,CAC5B,yCAAyC,KAAK,EAAE,QAAQ,EAAE,EAAE,EAC5D,6BAA6B,EAC7B,MAAM,EACN,4FAA4F,CAC7F,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC;QAClC,OAAO,mBAAK,CAAC;IACf,CAAC;IAED,0EAA0E;IAC1E,MAAM,cAAc,GAAoC,MAAM,iBAAiB,EAAE,CAAC;IAClF,MAAM,SAAS,GAAW,cAAc,EAAE,SAAS,IAAI,CAAC,MAAM,YAAY,EAAE,CAAC,IAAI,EAAE,CAAC;IACpF,MAAM,QAAQ,GAAY,MAAM,UAAU,CAAC,SAAS,CAAC,CAAC;IAEtD,IAAI,IAAI,GAAS,EAAE,CAAC;IACpB,IAAI,WAAW,GAAgB;QAC7B,gBAAgB,EAAE,EAAE;QACpB,OAAO,EAAE,EAAE;QACX,OAAO,EAAE,EAAE;KACZ,CAAC;IACF,IAAI,mBAAmB,GAAiB;QACtC,EAAE,EAAE,EAAE;QACN,IAAI,EAAE,EAAE;QACR,SAAS,EAAE,EAAE;KACd,CAAC;IACF,IAAI,eAAe,GAAmB,EAAE,CAAC;IACzC,IAAI,kBAAkB,GAA8B,IAAI,CAAC;IAEzD,IAAI,QAAQ,EAAE,CAAC;QACb,IAAI,cAAc,GAAuB,MAAM,EAAE,OAAO,CAAC;QAEzD,IAAI,cAAc,EAAE,cAAc,EAAE,CAAC;YACnC,cAAc,GAAG,GAAG,MAAM,EAAE,OAAO,IAAI,CAAC;YACxC,MAAM,GAAG,EAAC,GAAG,MAAM,EAAE,OAAO,EAAE,cAAc,EAAC,CAAC;QAChD,CAAC;aAAM,IAAI,SAAS,EAAE,CAAC;YACrB,IAAI,CAAC;gBACH,MAAM,OAAO,GAAY,MAAM,cAAc,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;gBAC3E,IAAI,OAAO,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;oBAC1B,cAAc,GAAG,GAAG,MAAM,EAAE,OAAO,IAAI,CAAC;oBACxC,MAAM,GAAG,EAAC,GAAG,MAAM,EAAE,OAAO,EAAE,cAAc,EAAC,CAAC;gBAChD,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,qCAAqC;YACvC,CAAC;QACH,CAAC;QAED,4DAA4D;QAC5D,MAAM,sBAAsB,GAAY,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,gBAAgB,KAAK,KAAK,CAAC;QAC9F,4DAA4D;QAC5D,MAAM,wBAAwB,GAAY,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,kBAAkB,KAAK,KAAK,CAAC;QAElG,IAAI,sBAAsB,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACH,MAAM,YAAY,GAId,MAAM,aAAa,CAAC,SAAS,CAAC,CAAC;gBACnC,MAAM,mBAAmB,GAIrB,MAAM,oBAAoB,CAAC,SAAS,CAAC,CAAC;gBAE1C,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC;gBACrC,WAAW,GAAG,mBAAmB,CAAC,IAAI,EAAE,WAAW,IAAI,WAAW,CAAC;YACrE,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,IAAI,CAAC,mEAAmE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;YACtG,CAAC;QACH,CAAC;QAED,IAAI,wBAAwB,EAAE,CAAC;YAC7B,IAAI,CAAC;gBACH,MAAM,2BAA2B,GAI7B,MAAM,4BAA4B,CAAC,SAAS,CAAC,CAAC;gBAElD,IAAI,SAAS,EAAE,CAAC;oBACd,eAAe,GAAG,MAAM,kBAAkB,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;gBAC5D,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,IAAI,CAAC,+EAA+E,CAAC,CAAC;gBAC/F,CAAC;gBAED,mBAAmB,GAAG,2BAA2B,EAAE,IAAI,EAAE,YAA4B,CAAC;YACxF,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,IAAI,CAAC,6DAA6D,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;YAChG,CAAC;QACH,CAAC;IACH,CAAC;IAED,6DAA6D;IAC7D,IAAI,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,mBAAmB,KAAK,KAAK,EAAE,CAAC;QAC9D,IAAI,CAAC;YACH,kBAAkB,GAAG,MAAM,qBAAqB,CAC9C;gBACE,OAAO,EAAE,MAAM,EAAE,OAAiB;gBAClC,MAAM,EAAE,OAAO;gBACf,IAAI,EAAE,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,kBAAkB;gBACvD,IAAI,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK;aAC3C,EACD,SAAS,CACV,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,sCAAsC;YACtC,OAAO,CAAC,IAAI,CAAC,+DAA+D,EAAE,KAAK,CAAC,CAAC;QACvF,CAAC;IACH,CAAC;IAED,OAAO,CACL,KAAC,sBAAsB,IACrB,kBAAkB,EAAE,MAAM,EAAE,kBAAkB,EAC9C,aAAa,EAAE,MAAM,EAAE,aAAa,EACpC,OAAO,EAAE,MAAM,EAAE,OAAO,EACxB,MAAM,EAAE,YAAY,EACpB,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE,YAAY,EACpB,mBAAmB,EAAE,yBAAyB,EAC9C,SAAS,EAAE,MAAM,EAAE,SAAS,EAC5B,SAAS,EAAE,MAAM,EAAE,SAAS,EAC5B,WAAW,EAAE,MAAM,EAAE,WAAW,EAChC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAC1B,IAAI,EAAE,IAAI,EACV,mBAAmB,EAAE,mBAAmB,EACxC,WAAW,EAAE,WAAW,EACxB,aAAa,EAAE,uBAAuB,EACtC,UAAU,EAAE,QAAQ,EACpB,eAAe,EAAE,eAAe,EAChC,mBAAmB,EAAE,mBAAmB,EACxC,kBAAkB,EAAE,kBAAkB,EACtC,kBAAkB,EAAE,kBAAkB,EACtC,kBAAkB,EAAE,kBAAkB,YAErC,QAAQ,GACc,CAC1B,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025, WSO2 LLC. (https://www.wso2.com).
|
|
3
|
+
*
|
|
4
|
+
* WSO2 LLC. licenses this file to you under the Apache License,
|
|
5
|
+
* Version 2.0 (the "License"); you may not use this file except
|
|
6
|
+
* in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing,
|
|
12
|
+
* software distributed under the License is distributed on an
|
|
13
|
+
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
14
|
+
* KIND, either express or implied. See the License for the
|
|
15
|
+
* specific language governing permissions and limitations
|
|
16
|
+
* under the License.
|
|
17
|
+
*/
|
|
18
|
+
'use server';
|
|
19
|
+
import { cookies } from 'next/headers';
|
|
20
|
+
import logger from '../../utils/logger';
|
|
21
|
+
import SessionManager from '../../utils/SessionManager';
|
|
22
|
+
/**
|
|
23
|
+
* Deletes all Asgardeo session cookies from the browser without contacting the
|
|
24
|
+
* identity server.
|
|
25
|
+
*
|
|
26
|
+
* Use this for error-recovery scenarios where the local session must be wiped
|
|
27
|
+
* immediately: refresh token failures, corrupt sessions, or forced local sign-out
|
|
28
|
+
* when the identity server is unreachable.
|
|
29
|
+
*
|
|
30
|
+
* For a complete sign-out that also revokes the server-side session and obtains the
|
|
31
|
+
* after-sign-out redirect URL, use `signOutAction` instead.
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* ```typescript
|
|
35
|
+
* import { clearSession } from '@asgardeo/nextjs/server';
|
|
36
|
+
*
|
|
37
|
+
* // Inside a Server Action or Route Handler:
|
|
38
|
+
* await clearSession();
|
|
39
|
+
* redirect('/sign-in');
|
|
40
|
+
* ```
|
|
41
|
+
*/
|
|
42
|
+
const clearSession = async () => {
|
|
43
|
+
const cookieStore = await cookies();
|
|
44
|
+
cookieStore.delete(SessionManager.getSessionCookieName());
|
|
45
|
+
cookieStore.delete(SessionManager.getTempSessionCookieName());
|
|
46
|
+
logger.debug('[clearSession] Session cookies cleared.');
|
|
47
|
+
};
|
|
48
|
+
export default clearSession;
|
|
49
|
+
//# sourceMappingURL=clearSession.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clearSession.js","sourceRoot":"","sources":["../../../../src/server/actions/clearSession.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,YAAY,CAAC;AAEb,OAAO,EAAC,OAAO,EAAC,MAAM,cAAc,CAAC;AACrC,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,cAAc,MAAM,4BAA4B,CAAC;AAIxD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,YAAY,GAAG,KAAK,IAAmB,EAAE;IAC7C,MAAM,WAAW,GAAmB,MAAM,OAAO,EAAE,CAAC;IACpD,WAAW,CAAC,MAAM,CAAC,cAAc,CAAC,oBAAoB,EAAE,CAAC,CAAC;IAC1D,WAAW,CAAC,MAAM,CAAC,cAAc,CAAC,wBAAwB,EAAE,CAAC,CAAC;IAC9D,MAAM,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;AAC1D,CAAC,CAAC;AAEF,eAAe,YAAY,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getAccessToken.js","sourceRoot":"","sources":["../../../../src/server/actions/getAccessToken.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"getAccessToken.js","sourceRoot":"","sources":["../../../../src/server/actions/getAccessToken.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,YAAY,CAAC;AAEb,OAAO,EAAC,OAAO,EAAC,MAAM,cAAc,CAAC;AACrC,OAAO,cAAqC,MAAM,4BAA4B,CAAC;AAI/E;;;;GAIG;AACH,MAAM,cAAc,GAAG,KAAK,IAAiC,EAAE;IAC7D,MAAM,WAAW,GAAmB,MAAM,OAAO,EAAE,CAAC;IAEpD,MAAM,YAAY,GAAuB,WAAW,CAAC,GAAG,CAAC,cAAc,CAAC,oBAAoB,EAAE,CAAC,EAAE,KAAK,CAAC;IAEvG,IAAI,YAAY,EAAE,CAAC;QACjB,IAAI,CAAC;YACH,MAAM,cAAc,GAAwB,MAAM,cAAc,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;YAElG,OAAO,cAAc,CAAC,aAAa,CAAW,CAAC;QACjD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF,eAAe,cAAc,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getSessionId.js","sourceRoot":"","sources":["../../../../src/server/actions/getSessionId.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"getSessionId.js","sourceRoot":"","sources":["../../../../src/server/actions/getSessionId.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,YAAY,CAAC;AAEb,OAAO,EAAC,OAAO,EAAC,MAAM,cAAc,CAAC;AACrC,OAAO,cAAqC,MAAM,4BAA4B,CAAC;AAI/E;;;;;GAKG;AACH,MAAM,YAAY,GAAG,KAAK,IAAiC,EAAE;IAC3D,MAAM,WAAW,GAAmB,MAAM,OAAO,EAAE,CAAC;IAEpD,MAAM,YAAY,GAAuB,WAAW,CAAC,GAAG,CAAC,cAAc,CAAC,oBAAoB,EAAE,CAAC,EAAE,KAAK,CAAC;IAEvG,IAAI,YAAY,EAAE,CAAC;QACjB,IAAI,CAAC;YACH,MAAM,cAAc,GAAwB,MAAM,cAAc,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;YAElG,OAAO,cAAc,CAAC,SAAS,CAAC;QAClC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF,eAAe,YAAY,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getSessionPayload.js","sourceRoot":"","sources":["../../../../src/server/actions/getSessionPayload.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"getSessionPayload.js","sourceRoot":"","sources":["../../../../src/server/actions/getSessionPayload.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,YAAY,CAAC;AAEb,OAAO,EAAC,OAAO,EAAC,MAAM,cAAc,CAAC;AACrC,OAAO,cAAqC,MAAM,4BAA4B,CAAC;AAI/E;;;;;GAKG;AACH,MAAM,iBAAiB,GAAG,KAAK,IAA8C,EAAE;IAC7E,MAAM,WAAW,GAAmB,MAAM,OAAO,EAAE,CAAC;IAEpD,MAAM,YAAY,GAAuB,WAAW,CAAC,GAAG,CAAC,cAAc,CAAC,oBAAoB,EAAE,CAAC,EAAE,KAAK,CAAC;IACvG,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,CAAC;QACH,OAAO,MAAM,cAAc,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;IAC/D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
|
|
@@ -70,15 +70,19 @@ const handleOAuthCallbackAction = async (code, state, sessionState) => {
|
|
|
70
70
|
session_state: sessionState,
|
|
71
71
|
state,
|
|
72
72
|
}, {}, sessionId);
|
|
73
|
+
const config = await asgardeoClient.getConfiguration();
|
|
73
74
|
if (signInResult) {
|
|
74
75
|
try {
|
|
75
76
|
const idToken = await asgardeoClient.getDecodedIdToken(sessionId, (signInResult['id_token'] || signInResult['idToken']));
|
|
76
77
|
const accessToken = (signInResult['accessToken'] || signInResult['access_token']);
|
|
78
|
+
const refreshToken = signInResult['refreshToken'] ?? '';
|
|
77
79
|
const userIdFromToken = (idToken.sub || signInResult['sub'] || sessionId);
|
|
78
80
|
const scopes = signInResult['scope'];
|
|
79
81
|
const organizationId = (idToken['user_org'] || idToken['organization_id']);
|
|
80
|
-
const
|
|
81
|
-
|
|
82
|
+
const expiresIn = signInResult['expiresIn'];
|
|
83
|
+
const sessionCookieExpiryTime = SessionManager.resolveSessionCookieExpiry(config.sessionCookieExpiryTime);
|
|
84
|
+
const sessionToken = await SessionManager.createSessionToken(accessToken, userIdFromToken, sessionId, scopes, expiresIn, refreshToken, organizationId);
|
|
85
|
+
cookieStore.set(SessionManager.getSessionCookieName(), sessionToken, SessionManager.getSessionCookieOptions(sessionCookieExpiryTime));
|
|
82
86
|
cookieStore.delete(SessionManager.getTempSessionCookieName());
|
|
83
87
|
}
|
|
84
88
|
catch (error) {
|
|
@@ -86,7 +90,6 @@ const handleOAuthCallbackAction = async (code, state, sessionState) => {
|
|
|
86
90
|
${typeof error === 'string' ? error : JSON.stringify(error)}`);
|
|
87
91
|
}
|
|
88
92
|
}
|
|
89
|
-
const config = await asgardeoClient.getConfiguration();
|
|
90
93
|
const afterSignInUrl = config.afterSignInUrl || '/';
|
|
91
94
|
return {
|
|
92
95
|
redirectUrl: afterSignInUrl,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handleOAuthCallbackAction.js","sourceRoot":"","sources":["../../../../src/server/actions/handleOAuthCallbackAction.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"handleOAuthCallbackAction.js","sourceRoot":"","sources":["../../../../src/server/actions/handleOAuthCallbackAction.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,27 +21,23 @@ import getSessionPayload from './getSessionPayload';
|
|
|
21
21
|
import AsgardeoNextClient from '../../AsgardeoNextClient';
|
|
22
22
|
/**
|
|
23
23
|
* Check if the user is currently signed in.
|
|
24
|
-
* First tries JWT session validation, then falls back to legacy session check.
|
|
25
24
|
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
25
|
+
* For JWT-based sessions: the session JWT exp claim is now tied to the access
|
|
26
|
+
* token expiry. A successful jwtVerify (inside getSessionPayload) already proves
|
|
27
|
+
* exp > now, so no separate timestamp comparison is needed here.
|
|
28
|
+
*
|
|
29
|
+
* Falls back to the legacy SDK in-memory check when no JWT session cookie exists.
|
|
30
|
+
*
|
|
31
|
+
* @param sessionId - Optional session ID (used only for the legacy fallback path)
|
|
32
|
+
* @returns True if the user is signed in with a valid, non-expired token
|
|
28
33
|
*/
|
|
29
34
|
const isSignedIn = async (sessionId) => {
|
|
30
35
|
try {
|
|
31
36
|
const sessionPayload = await getSessionPayload();
|
|
32
37
|
if (sessionPayload) {
|
|
33
|
-
|
|
34
|
-
if (resolvedSessionId) {
|
|
35
|
-
const client = AsgardeoNextClient.getInstance();
|
|
36
|
-
try {
|
|
37
|
-
const accessToken = await client.getAccessToken(resolvedSessionId);
|
|
38
|
-
return !!accessToken;
|
|
39
|
-
}
|
|
40
|
-
catch (error) {
|
|
41
|
-
return false;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
38
|
+
return true;
|
|
44
39
|
}
|
|
40
|
+
// No JWT session — fall back to the legacy SDK in-memory store check.
|
|
45
41
|
const resolvedSessionId = sessionId || (await getSessionId());
|
|
46
42
|
if (!resolvedSessionId) {
|
|
47
43
|
return false;
|
|
@@ -51,7 +47,7 @@ const isSignedIn = async (sessionId) => {
|
|
|
51
47
|
const accessToken = await client.getAccessToken(resolvedSessionId);
|
|
52
48
|
return !!accessToken;
|
|
53
49
|
}
|
|
54
|
-
catch
|
|
50
|
+
catch {
|
|
55
51
|
return false;
|
|
56
52
|
}
|
|
57
53
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isSignedIn.js","sourceRoot":"","sources":["../../../../src/server/actions/isSignedIn.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,YAAY,CAAC;AAEb,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,iBAAiB,MAAM,qBAAqB,CAAC;AACpD,OAAO,kBAAkB,MAAM,0BAA0B,CAAC;AAG1D
|
|
1
|
+
{"version":3,"file":"isSignedIn.js","sourceRoot":"","sources":["../../../../src/server/actions/isSignedIn.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,YAAY,CAAC;AAEb,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,iBAAiB,MAAM,qBAAqB,CAAC;AACpD,OAAO,kBAAkB,MAAM,0BAA0B,CAAC;AAG1D;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,GAAG,KAAK,EAAE,SAAkB,EAAoB,EAAE;IAChE,IAAI,CAAC;QACH,MAAM,cAAc,GAAoC,MAAM,iBAAiB,EAAE,CAAC;QAElF,IAAI,cAAc,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,sEAAsE;QACtE,MAAM,iBAAiB,GAAuB,SAAS,IAAI,CAAC,MAAM,YAAY,EAAE,CAAC,CAAC;QAElF,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,MAAM,GAAuB,kBAAkB,CAAC,WAAW,EAAE,CAAC;QAEpE,IAAI,CAAC;YACH,MAAM,WAAW,GAAW,MAAM,MAAM,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;YAC3E,OAAO,CAAC,CAAC,WAAW,CAAC;QACvB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC,CAAC;AAEF,eAAe,UAAU,CAAC"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025, WSO2 LLC. (https://www.wso2.com).
|
|
3
|
+
*
|
|
4
|
+
* WSO2 LLC. licenses this file to you under the Apache License,
|
|
5
|
+
* Version 2.0 (the "License"); you may not use this file except
|
|
6
|
+
* in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing,
|
|
12
|
+
* software distributed under the License is distributed on an
|
|
13
|
+
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
14
|
+
* KIND, either express or implied. See the License for the
|
|
15
|
+
* specific language governing permissions and limitations
|
|
16
|
+
* under the License.
|
|
17
|
+
*/
|
|
18
|
+
'use server';
|
|
19
|
+
import { AsgardeoAPIError, logger } from '@asgardeo/node';
|
|
20
|
+
import { cookies } from 'next/headers';
|
|
21
|
+
import AsgardeoNextClient from '../../AsgardeoNextClient';
|
|
22
|
+
import handleRefreshToken from '../../utils/handleRefreshToken';
|
|
23
|
+
import SessionManager from '../../utils/SessionManager';
|
|
24
|
+
/**
|
|
25
|
+
* Server action to refresh the access token using the stored refresh token.
|
|
26
|
+
* Exchanges the refresh token for a new token set and updates the session cookie.
|
|
27
|
+
*
|
|
28
|
+
* Delegates the HTTP exchange to handleRefreshToken so the same logic is shared
|
|
29
|
+
* with the middleware token refresh path.
|
|
30
|
+
*
|
|
31
|
+
* Called from the client side (e.g. AsgardeoClientProvider refreshOnMount) where
|
|
32
|
+
* Next.js allows cookie mutation. When invoked during SSR rendering the cookie
|
|
33
|
+
* write is silently skipped and a warning is logged.
|
|
34
|
+
*/
|
|
35
|
+
const refreshToken = async () => {
|
|
36
|
+
try {
|
|
37
|
+
const cookieStore = await cookies();
|
|
38
|
+
const sessionToken = cookieStore.get(SessionManager.getSessionCookieName())?.value;
|
|
39
|
+
if (!sessionToken) {
|
|
40
|
+
throw new AsgardeoAPIError('No active session found. User must be signed in to refresh the token.', 'refreshToken-ServerActionError-002', 'nextjs', 401);
|
|
41
|
+
}
|
|
42
|
+
const sessionPayload = await SessionManager.verifySessionTokenForRefresh(sessionToken);
|
|
43
|
+
const client = AsgardeoNextClient.getInstance();
|
|
44
|
+
const config = await client.getConfiguration();
|
|
45
|
+
const result = await handleRefreshToken(sessionPayload, {
|
|
46
|
+
baseUrl: config.baseUrl ?? '',
|
|
47
|
+
clientId: config.clientId ?? '',
|
|
48
|
+
clientSecret: config.clientSecret ?? '',
|
|
49
|
+
sessionCookieExpiryTime: config.sessionCookieExpiryTime,
|
|
50
|
+
});
|
|
51
|
+
try {
|
|
52
|
+
cookieStore.set(SessionManager.getSessionCookieName(), result.newSessionToken, SessionManager.getSessionCookieOptions(result.sessionCookieExpiryTime));
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
// cookies().set() is only permitted inside a Server Action invoked from the client
|
|
56
|
+
// or a Route Handler. When this action is called during SSR rendering the write
|
|
57
|
+
// is blocked by Next.js. The middleware refresh path handles that case instead.
|
|
58
|
+
logger.warn('[refreshToken] Could not write session cookie — called from SSR rendering context.');
|
|
59
|
+
}
|
|
60
|
+
const rawExpiresIn = result.tokenResponse.expiresIn;
|
|
61
|
+
const expiresInSeconds = parseInt(rawExpiresIn ?? '', 10);
|
|
62
|
+
if (Number.isNaN(expiresInSeconds)) {
|
|
63
|
+
throw new Error(`[refreshToken] Invalid expiresIn value received: ${rawExpiresIn}`);
|
|
64
|
+
}
|
|
65
|
+
const expiresAt = Math.floor(Date.now() / 1000) + expiresInSeconds;
|
|
66
|
+
logger.debug('[refreshToken] Token refresh succeeded.');
|
|
67
|
+
return { expiresAt };
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
// Clear the dead session cookie before throwing so the browser is not left
|
|
71
|
+
// holding a stale credential. This is best-effort — if called from an SSR
|
|
72
|
+
// rendering context Next.js blocks cookie mutation; the middleware cleanup
|
|
73
|
+
// path covers that case on the next request.
|
|
74
|
+
try {
|
|
75
|
+
const cookieStore = await cookies();
|
|
76
|
+
cookieStore.delete(SessionManager.getSessionCookieName());
|
|
77
|
+
logger.debug('[refreshToken] Cleared session cookie after refresh failure.');
|
|
78
|
+
}
|
|
79
|
+
catch {
|
|
80
|
+
// Intentionally swallowed — middleware handles cleanup when mutation is blocked.
|
|
81
|
+
}
|
|
82
|
+
throw new AsgardeoAPIError(`Failed to refresh the session: ${error instanceof Error ? error.message : JSON.stringify(error)}`, 'refreshToken-ServerActionError-001', 'nextjs', error instanceof AsgardeoAPIError ? error.statusCode : undefined);
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
export default refreshToken;
|
|
86
|
+
//# sourceMappingURL=refreshToken.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refreshToken.js","sourceRoot":"","sources":["../../../../src/server/actions/refreshToken.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,YAAY,CAAC;AAEb,OAAO,EAAC,gBAAgB,EAAE,MAAM,EAAC,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAC,OAAO,EAAC,MAAM,cAAc,CAAC;AACrC,OAAO,kBAAkB,MAAM,0BAA0B,CAAC;AAE1D,OAAO,kBAA8C,MAAM,gCAAgC,CAAC;AAC5F,OAAO,cAAqC,MAAM,4BAA4B,CAAC;AAmB/E;;;;;;;;;;GAUG;AACH,MAAM,YAAY,GAAG,KAAK,IAA4B,EAAE;IACtD,IAAI,CAAC;QACH,MAAM,WAAW,GAAmB,MAAM,OAAO,EAAE,CAAC;QACpD,MAAM,YAAY,GAAuB,WAAW,CAAC,GAAG,CAAC,cAAc,CAAC,oBAAoB,EAAE,CAAC,EAAE,KAAK,CAAC;QAEvG,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,IAAI,gBAAgB,CACxB,uEAAuE,EACvE,oCAAoC,EACpC,QAAQ,EACR,GAAG,CACJ,CAAC;QACJ,CAAC;QAED,MAAM,cAAc,GAAwB,MAAM,cAAc,CAAC,4BAA4B,CAAC,YAAY,CAAC,CAAC;QAC5G,MAAM,MAAM,GAAuB,kBAAkB,CAAC,WAAW,EAAE,CAAC;QACpE,MAAM,MAAM,GAAuB,MAAM,MAAM,CAAC,gBAAgB,EAAE,CAAC;QAEnE,MAAM,MAAM,GAA6B,MAAM,kBAAkB,CAAC,cAAc,EAAE;YAChF,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,EAAE;YAC7B,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,EAAE;YAC/B,YAAY,EAAE,MAAM,CAAC,YAAY,IAAI,EAAE;YACvC,uBAAuB,EAAE,MAAM,CAAC,uBAAuB;SACxD,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,WAAW,CAAC,GAAG,CACb,cAAc,CAAC,oBAAoB,EAAE,EACrC,MAAM,CAAC,eAAe,EACtB,cAAc,CAAC,uBAAuB,CAAC,MAAM,CAAC,uBAAuB,CAAC,CACvE,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,mFAAmF;YACnF,gFAAgF;YAChF,gFAAgF;YAChF,MAAM,CAAC,IAAI,CAAC,oFAAoF,CAAC,CAAC;QACpG,CAAC;QAED,MAAM,YAAY,GAAuB,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC;QACxE,MAAM,gBAAgB,GAAW,QAAQ,CAAC,YAAY,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QAClE,IAAI,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,oDAAoD,YAAY,EAAE,CAAC,CAAC;QACtF,CAAC;QACD,MAAM,SAAS,GAAW,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,gBAAgB,CAAC;QAE3E,MAAM,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;QACxD,OAAO,EAAC,SAAS,EAAC,CAAC;IACrB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,2EAA2E;QAC3E,0EAA0E;QAC1E,2EAA2E;QAC3E,6CAA6C;QAC7C,IAAI,CAAC;YACH,MAAM,WAAW,GAAmB,MAAM,OAAO,EAAE,CAAC;YACpD,WAAW,CAAC,MAAM,CAAC,cAAc,CAAC,oBAAoB,EAAE,CAAC,CAAC;YAC1D,MAAM,CAAC,KAAK,CAAC,8DAA8D,CAAC,CAAC;QAC/E,CAAC;QAAC,MAAM,CAAC;YACP,iFAAiF;QACnF,CAAC;QAED,MAAM,IAAI,gBAAgB,CACxB,kCAAkC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,EAClG,oCAAoC,EACpC,QAAQ,EACR,KAAK,YAAY,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CACjE,CAAC;IACJ,CAAC;AACH,CAAC,CAAC;AAEF,eAAe,YAAY,CAAC"}
|