@asgardeo/nextjs 0.1.9 → 0.1.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.
Files changed (43) hide show
  1. package/dist/AsgardeoNextClient.js +8 -1
  2. package/dist/AsgardeoNextClient.js.map +1 -1
  3. package/dist/cjs/index.js +19 -1
  4. package/dist/cjs/index.js.map +2 -2
  5. package/dist/index.d.ts +7 -0
  6. package/dist/index.js +7 -0
  7. package/dist/index.js.map +1 -1
  8. package/dist/middleware/asgardeoMiddleware.d.ts +50 -13
  9. package/dist/middleware/asgardeoMiddleware.js +116 -63
  10. package/dist/middleware/asgardeoMiddleware.js.map +1 -1
  11. package/dist/middleware/createRouteMatcher.d.ts +39 -0
  12. package/dist/middleware/createRouteMatcher.js +52 -0
  13. package/dist/middleware/createRouteMatcher.js.map +1 -0
  14. package/dist/server/AsgardeoProvider.js +38 -13
  15. package/dist/server/AsgardeoProvider.js.map +1 -1
  16. package/dist/server/actions/getMyOrganizations.js +22 -1
  17. package/dist/server/actions/getMyOrganizations.js.map +1 -1
  18. package/dist/server/actions/getSessionId.d.ts +6 -0
  19. package/dist/server/actions/getSessionId.js +18 -2
  20. package/dist/server/actions/getSessionId.js.map +1 -1
  21. package/dist/server/actions/getSessionPayload.d.ts +26 -0
  22. package/dist/server/actions/getSessionPayload.js +41 -0
  23. package/dist/server/actions/getSessionPayload.js.map +1 -0
  24. package/dist/server/actions/handleOAuthCallbackAction.js +32 -12
  25. package/dist/server/actions/handleOAuthCallbackAction.js.map +1 -1
  26. package/dist/server/actions/isSignedIn.d.ts +8 -1
  27. package/dist/server/actions/isSignedIn.js +40 -3
  28. package/dist/server/actions/isSignedIn.js.map +1 -1
  29. package/dist/server/actions/signInAction.js +51 -18
  30. package/dist/server/actions/signInAction.js.map +1 -1
  31. package/dist/server/actions/signOutAction.d.ts +6 -0
  32. package/dist/server/actions/signOutAction.js +18 -3
  33. package/dist/server/actions/signOutAction.js.map +1 -1
  34. package/dist/utils/SessionManager.d.ts +95 -0
  35. package/dist/utils/SessionManager.js +143 -0
  36. package/dist/utils/SessionManager.js.map +1 -0
  37. package/dist/utils/createRouteMatcher.d.ts +38 -0
  38. package/dist/utils/createRouteMatcher.js +51 -0
  39. package/dist/utils/createRouteMatcher.js.map +1 -0
  40. package/dist/utils/sessionUtils.d.ts +59 -0
  41. package/dist/utils/sessionUtils.js +112 -0
  42. package/dist/utils/sessionUtils.js.map +1 -0
  43. package/package.json +5 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createRouteMatcher.js","sourceRoot":"","sources":["../../src/middleware/createRouteMatcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,kBAAkB,GAAG,CAAC,QAAkB,EAAE,EAAE;IAChD,MAAM,aAAa,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;QAC3C,sCAAsC;QACtC,MAAM,YAAY,GAAG,OAAO;aACzB,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAE,cAAc;aACrC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAG,kBAAkB;aACzC,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,gCAAgC;QAEjE,OAAO,IAAI,MAAM,CAAC,IAAI,YAAY,GAAG,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,GAAgB,EAAW,EAAE;QACnC,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC;QACtC,OAAO,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC3D,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
@@ -24,6 +24,7 @@ import getBrandingPreference from './actions/getBrandingPreference';
24
24
  import getCurrentOrganizationAction from './actions/getCurrentOrganizationAction';
25
25
  import getMyOrganizations from './actions/getMyOrganizations';
26
26
  import getSessionId from './actions/getSessionId';
27
+ import getSessionPayload from './actions/getSessionPayload';
27
28
  import getUserAction from './actions/getUserAction';
28
29
  import getUserProfileAction from './actions/getUserProfileAction';
29
30
  import handleOAuthCallbackAction from './actions/handleOAuthCallbackAction';
@@ -64,8 +65,10 @@ const AsgardeoServerProvider = async ({ children, afterSignInUrl, afterSignOutUr
64
65
  if (!asgardeoClient.isInitialized) {
65
66
  return _jsx(_Fragment, {});
66
67
  }
67
- const sessionId = (await getSessionId());
68
- const _isSignedIn = await isSignedIn(sessionId);
68
+ // Try to get session information from JWT first, then fall back to legacy
69
+ const sessionPayload = await getSessionPayload();
70
+ const sessionId = sessionPayload?.sessionId || (await getSessionId()) || '';
71
+ const _isSignedIn = sessionPayload ? true : await isSignedIn(sessionId);
69
72
  let user = {};
70
73
  let userProfile = {
71
74
  schemas: [],
@@ -80,21 +83,43 @@ const AsgardeoServerProvider = async ({ children, afterSignInUrl, afterSignOutUr
80
83
  let myOrganizations = [];
81
84
  let brandingPreference = null;
82
85
  if (_isSignedIn) {
83
- // Check if there's a `user_org` claim in the ID token to determine if this is an organization login
84
- const idToken = await asgardeoClient.getDecodedIdToken(sessionId);
85
86
  let updatedBaseUrl = config?.baseUrl;
86
- if (idToken?.['user_org']) {
87
- // Treat this login as an organization login and modify the base URL
87
+ if (sessionPayload?.organizationId) {
88
88
  updatedBaseUrl = `${config?.baseUrl}/o`;
89
89
  config = { ...config, baseUrl: updatedBaseUrl };
90
90
  }
91
- const userResponse = await getUserAction(sessionId);
92
- const userProfileResponse = await getUserProfileAction(sessionId);
93
- const currentOrganizationResponse = await getCurrentOrganizationAction(sessionId);
94
- myOrganizations = await getMyOrganizations({}, sessionId);
95
- user = userResponse.data?.user || {};
96
- userProfile = userProfileResponse.data?.userProfile;
97
- currentOrganization = currentOrganizationResponse?.data?.organization;
91
+ else if (sessionId) {
92
+ try {
93
+ const idToken = await asgardeoClient.getDecodedIdToken(sessionId);
94
+ if (idToken?.['user_org']) {
95
+ updatedBaseUrl = `${config?.baseUrl}/o`;
96
+ config = { ...config, baseUrl: updatedBaseUrl };
97
+ }
98
+ }
99
+ catch {
100
+ // Continue without organization info
101
+ }
102
+ }
103
+ try {
104
+ const userResponse = await getUserAction(sessionId);
105
+ const userProfileResponse = await getUserProfileAction(sessionId);
106
+ const currentOrganizationResponse = await getCurrentOrganizationAction(sessionId);
107
+ if (sessionId) {
108
+ myOrganizations = await getMyOrganizations({}, sessionId);
109
+ }
110
+ else {
111
+ console.warn('[AsgardeoServerProvider] No session ID available, skipping organization fetch');
112
+ }
113
+ user = userResponse.data?.user || {};
114
+ userProfile = userProfileResponse.data?.userProfile;
115
+ currentOrganization = currentOrganizationResponse?.data?.organization;
116
+ }
117
+ catch (error) {
118
+ user = {};
119
+ userProfile = { schemas: [], profile: {}, flattenedProfile: {} };
120
+ currentOrganization = { id: '', name: '', orgHandle: '' };
121
+ myOrganizations = [];
122
+ }
98
123
  }
99
124
  // Fetch branding preference if branding is enabled in config
100
125
  if (config?.preferences?.theme?.inheritFromBranding !== false) {
@@ -1 +1 @@
1
- {"version":3,"file":"AsgardeoProvider.js","sourceRoot":"","sources":["../../src/server/AsgardeoProvider.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AsgardeoProvider.js","sourceRoot":"","sources":["../../src/server/AsgardeoProvider.tsx"],"names":[],"mappings":"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"}
@@ -24,7 +24,28 @@ import AsgardeoNextClient from '../../AsgardeoNextClient';
24
24
  const getMyOrganizations = async (options, sessionId) => {
25
25
  try {
26
26
  const client = AsgardeoNextClient.getInstance();
27
- return await client.getMyOrganizations(options, sessionId);
27
+ // Get session ID if not provided
28
+ let resolvedSessionId = sessionId;
29
+ if (!resolvedSessionId) {
30
+ // Import getSessionId locally to avoid circular dependencies
31
+ const { default: getSessionId } = await import('./getSessionId');
32
+ resolvedSessionId = await getSessionId();
33
+ }
34
+ if (!resolvedSessionId) {
35
+ throw new AsgardeoAPIError('No session ID available for fetching organizations', 'getMyOrganizations-SessionError-001', 'nextjs', 401);
36
+ }
37
+ // Check if user is signed in by trying to get access token
38
+ try {
39
+ const accessToken = await client.getAccessToken(resolvedSessionId);
40
+ if (!accessToken) {
41
+ throw new AsgardeoAPIError('No access token available - user is not signed in', 'getMyOrganizations-NoAccessToken-001', 'nextjs', 401);
42
+ }
43
+ }
44
+ catch (error) {
45
+ console.error('[getMyOrganizations] Failed to get access token:', error);
46
+ throw new AsgardeoAPIError('User is not signed in - access token retrieval failed', 'getMyOrganizations-NotSignedIn-001', 'nextjs', 401);
47
+ }
48
+ return await client.getMyOrganizations(options, resolvedSessionId);
28
49
  }
29
50
  catch (error) {
30
51
  throw new AsgardeoAPIError(`Failed to get the organizations for the user: ${error instanceof Error ? error.message : String(error)}`, 'getMyOrganizations-ServerActionError-001', 'nextjs', error instanceof AsgardeoAPIError ? error.statusCode : undefined);
@@ -1 +1 @@
1
- {"version":3,"file":"getMyOrganizations.js","sourceRoot":"","sources":["../../../src/server/actions/getMyOrganizations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,YAAY,CAAC;AAEb,OAAO,EAAC,gBAAgB,EAAe,MAAM,gBAAgB,CAAC;AAC9D,OAAO,kBAAkB,MAAM,0BAA0B,CAAC;AAE1D;;GAEG;AACH,MAAM,kBAAkB,GAAG,KAAK,EAAE,OAAa,EAAE,SAA8B,EAA2B,EAAE;IAC1G,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,kBAAkB,CAAC,WAAW,EAAE,CAAC;QAChD,OAAO,MAAM,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAC7D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,gBAAgB,CACxB,iDAAiD,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EACzG,0CAA0C,EAC1C,QAAQ,EACR,KAAK,YAAY,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CACjE,CAAC;IACJ,CAAC;AACH,CAAC,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
1
+ {"version":3,"file":"getMyOrganizations.js","sourceRoot":"","sources":["../../../src/server/actions/getMyOrganizations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,YAAY,CAAC;AAEb,OAAO,EAAC,gBAAgB,EAAe,MAAM,gBAAgB,CAAC;AAC9D,OAAO,kBAAkB,MAAM,0BAA0B,CAAC;AAE1D;;GAEG;AACH,MAAM,kBAAkB,GAAG,KAAK,EAAE,OAAa,EAAE,SAA8B,EAA2B,EAAE;IAC1G,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,kBAAkB,CAAC,WAAW,EAAE,CAAC;QAEhD,iCAAiC;QACjC,IAAI,iBAAiB,GAAG,SAAS,CAAC;QAClC,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvB,6DAA6D;YAC7D,MAAM,EAAC,OAAO,EAAE,YAAY,EAAC,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;YAC/D,iBAAiB,GAAG,MAAM,YAAY,EAAE,CAAC;QAC3C,CAAC;QAED,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvB,MAAM,IAAI,gBAAgB,CACxB,oDAAoD,EACpD,qCAAqC,EACrC,QAAQ,EACR,GAAG,CACJ,CAAC;QACJ,CAAC;QAED,2DAA2D;QAC3D,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;YAEnE,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,MAAM,IAAI,gBAAgB,CACxB,mDAAmD,EACnD,sCAAsC,EACtC,QAAQ,EACR,GAAG,CACJ,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,kDAAkD,EAAE,KAAK,CAAC,CAAC;YACzE,MAAM,IAAI,gBAAgB,CACxB,uDAAuD,EACvD,oCAAoC,EACpC,QAAQ,EACR,GAAG,CACJ,CAAC;QACJ,CAAC;QAED,OAAO,MAAM,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;IACrE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,gBAAgB,CACxB,iDAAiD,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EACzG,0CAA0C,EAC1C,QAAQ,EACR,KAAK,YAAY,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CACjE,CAAC;IACJ,CAAC;AACH,CAAC,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
@@ -15,5 +15,11 @@
15
15
  * specific language governing permissions and limitations
16
16
  * under the License.
17
17
  */
18
+ /**
19
+ * Get the session ID from cookies.
20
+ * Tries JWT session first, then falls back to legacy session ID.
21
+ *
22
+ * @returns The session ID if it exists, undefined otherwise
23
+ */
18
24
  declare const getSessionId: () => Promise<string | undefined>;
19
25
  export default getSessionId;
@@ -16,11 +16,27 @@
16
16
  * under the License.
17
17
  */
18
18
  'use server';
19
- import { CookieConfig } from '@asgardeo/node';
20
19
  import { cookies } from 'next/headers';
20
+ import SessionManager from '../../utils/SessionManager';
21
+ /**
22
+ * Get the session ID from cookies.
23
+ * Tries JWT session first, then falls back to legacy session ID.
24
+ *
25
+ * @returns The session ID if it exists, undefined otherwise
26
+ */
21
27
  const getSessionId = async () => {
22
28
  const cookieStore = await cookies();
23
- return cookieStore.get(CookieConfig.SESSION_COOKIE_NAME)?.value;
29
+ const sessionToken = cookieStore.get(SessionManager.getSessionCookieName())?.value;
30
+ if (sessionToken) {
31
+ try {
32
+ const sessionPayload = await SessionManager.verifySessionToken(sessionToken);
33
+ return sessionPayload.sessionId;
34
+ }
35
+ catch (error) {
36
+ return undefined;
37
+ }
38
+ }
39
+ return undefined;
24
40
  };
25
41
  export default getSessionId;
26
42
  //# sourceMappingURL=getSessionId.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getSessionId.js","sourceRoot":"","sources":["../../../src/server/actions/getSessionId.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,YAAY,CAAC;AAEb,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAE5C,OAAO,EAAC,OAAO,EAAC,MAAM,cAAc,CAAC;AAErC,MAAM,YAAY,GAAG,KAAK,IAAiC,EAAE;IAC3D,MAAM,WAAW,GAA2B,MAAM,OAAO,EAAE,CAAC;IAE5D,OAAO,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,mBAAmB,CAAC,EAAE,KAAK,CAAC;AAClE,CAAC,CAAC;AAEF,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"getSessionId.js","sourceRoot":"","sources":["../../../src/server/actions/getSessionId.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,YAAY,CAAC;AAIb,OAAO,EAAC,OAAO,EAAC,MAAM,cAAc,CAAC;AACrC,OAAO,cAAc,MAAM,4BAA4B,CAAC;AAExD;;;;;GAKG;AACH,MAAM,YAAY,GAAG,KAAK,IAAiC,EAAE;IAC3D,MAAM,WAAW,GAA2B,MAAM,OAAO,EAAE,CAAC;IAE5D,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,CAAC,cAAc,CAAC,oBAAoB,EAAE,CAAC,EAAE,KAAK,CAAC;IAEnF,IAAI,YAAY,EAAE,CAAC;QACjB,IAAI,CAAC;YACH,MAAM,cAAc,GAAG,MAAM,cAAc,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;YAE7E,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"}
@@ -0,0 +1,26 @@
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
+ import { SessionTokenPayload } from '../../utils/SessionManager';
19
+ /**
20
+ * Get the session payload from JWT session cookie.
21
+ * This includes user ID, session ID, scopes, and organization ID.
22
+ *
23
+ * @returns The session payload if valid JWT session exists, undefined otherwise
24
+ */
25
+ declare const getSessionPayload: () => Promise<SessionTokenPayload | undefined>;
26
+ export default getSessionPayload;
@@ -0,0 +1,41 @@
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 SessionManager from '../../utils/SessionManager';
21
+ /**
22
+ * Get the session payload from JWT session cookie.
23
+ * This includes user ID, session ID, scopes, and organization ID.
24
+ *
25
+ * @returns The session payload if valid JWT session exists, undefined otherwise
26
+ */
27
+ const getSessionPayload = async () => {
28
+ const cookieStore = await cookies();
29
+ const sessionToken = cookieStore.get(SessionManager.getSessionCookieName())?.value;
30
+ if (!sessionToken) {
31
+ return undefined;
32
+ }
33
+ try {
34
+ return await SessionManager.verifySessionToken(sessionToken);
35
+ }
36
+ catch {
37
+ return undefined;
38
+ }
39
+ };
40
+ export default getSessionPayload;
41
+ //# sourceMappingURL=getSessionPayload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getSessionPayload.js","sourceRoot":"","sources":["../../../src/server/actions/getSessionPayload.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,YAAY,CAAC;AAGb,OAAO,EAAC,OAAO,EAAC,MAAM,cAAc,CAAC;AACrC,OAAO,cAAqC,MAAM,4BAA4B,CAAC;AAE/E;;;;;GAKG;AACH,MAAM,iBAAiB,GAAG,KAAK,IAA8C,EAAE;IAC7E,MAAM,WAAW,GAA2B,MAAM,OAAO,EAAE,CAAC;IAE5D,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,CAAC,cAAc,CAAC,oBAAoB,EAAE,CAAC,EAAE,KAAK,CAAC;IACnF,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"}
@@ -17,8 +17,8 @@
17
17
  */
18
18
  'use server';
19
19
  import { cookies } from 'next/headers';
20
- import { CookieConfig } from '@asgardeo/node';
21
20
  import AsgardeoNextClient from '../../AsgardeoNextClient';
21
+ import SessionManager from '../../utils/SessionManager';
22
22
  /**
23
23
  * Server action to handle OAuth callback with authorization code.
24
24
  * This action processes the authorization code received from the OAuth provider
@@ -34,45 +34,65 @@ const handleOAuthCallbackAction = async (code, state, sessionState) => {
34
34
  if (!code || !state) {
35
35
  return {
36
36
  success: false,
37
- error: 'Missing required OAuth parameters: code and state are required'
37
+ error: 'Missing required OAuth parameters: code and state are required',
38
38
  };
39
39
  }
40
- // Get the Asgardeo client instance
41
40
  const asgardeoClient = AsgardeoNextClient.getInstance();
42
41
  if (!asgardeoClient.isInitialized) {
43
42
  return {
44
43
  success: false,
45
- error: 'Asgardeo client is not initialized'
44
+ error: 'Asgardeo client is not initialized',
46
45
  };
47
46
  }
48
- // Get the session ID from cookies
49
47
  const cookieStore = await cookies();
50
- const sessionId = cookieStore.get(CookieConfig.SESSION_COOKIE_NAME)?.value;
48
+ let sessionId;
49
+ const tempSessionToken = cookieStore.get(SessionManager.getTempSessionCookieName())?.value;
50
+ if (tempSessionToken) {
51
+ try {
52
+ const tempSession = await SessionManager.verifyTempSession(tempSessionToken);
53
+ sessionId = tempSession.sessionId;
54
+ }
55
+ catch {
56
+ // TODO: Invalid temp session, throw error.
57
+ }
58
+ }
51
59
  if (!sessionId) {
52
60
  return {
53
61
  success: false,
54
- error: 'No session found. Please start the authentication flow again.'
62
+ error: 'No session found. Please start the authentication flow again.',
55
63
  };
56
64
  }
57
65
  // Exchange the authorization code for tokens
58
- await asgardeoClient.signIn({
66
+ const signInResult = await asgardeoClient.signIn({
59
67
  code,
60
68
  session_state: sessionState,
61
69
  state,
62
70
  }, {}, sessionId);
63
- // Get the after sign-in URL from configuration
71
+ if (signInResult) {
72
+ try {
73
+ const idToken = await asgardeoClient.getDecodedIdToken(sessionId);
74
+ const userIdFromToken = idToken.sub || signInResult['sub'] || sessionId;
75
+ const scopes = idToken['scope'] ? idToken['scope'].split(' ') : [];
76
+ const organizationId = idToken['user_org'] || idToken['organization_id'];
77
+ const sessionToken = await SessionManager.createSessionToken(userIdFromToken, sessionId, scopes, organizationId);
78
+ cookieStore.set(SessionManager.getSessionCookieName(), sessionToken, SessionManager.getSessionCookieOptions());
79
+ cookieStore.delete(SessionManager.getTempSessionCookieName());
80
+ }
81
+ catch (error) {
82
+ console.warn('[handleOAuthCallbackAction] Failed to create JWT session, continuing with legacy session:', error);
83
+ }
84
+ }
64
85
  const config = await asgardeoClient.getConfiguration();
65
86
  const afterSignInUrl = config.afterSignInUrl || '/';
66
87
  return {
67
88
  success: true,
68
- redirectUrl: afterSignInUrl
89
+ redirectUrl: afterSignInUrl,
69
90
  };
70
91
  }
71
92
  catch (error) {
72
- console.error('[handleOAuthCallbackAction] OAuth callback error:', error);
73
93
  return {
74
94
  success: false,
75
- error: error instanceof Error ? error.message : 'Authentication failed'
95
+ error: error instanceof Error ? error.message : 'Authentication failed',
76
96
  };
77
97
  }
78
98
  };
@@ -1 +1 @@
1
- {"version":3,"file":"handleOAuthCallbackAction.js","sourceRoot":"","sources":["../../../src/server/actions/handleOAuthCallbackAction.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,YAAY,CAAC;AAEb,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,kBAAkB,MAAM,0BAA0B,CAAC;AAE1D;;;;;;;;;GASG;AACH,MAAM,yBAAyB,GAAG,KAAK,EACrC,IAAY,EACZ,KAAa,EACb,YAAqB,EAKpB,EAAE;IACH,IAAI,CAAC;QACH,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACpB,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,gEAAgE;aACxE,CAAC;QACJ,CAAC;QAED,mCAAmC;QACnC,MAAM,cAAc,GAAG,kBAAkB,CAAC,WAAW,EAAE,CAAC;QAExD,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC;YAClC,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,oCAAoC;aAC5C,CAAC;QACJ,CAAC;QAED,kCAAkC;QAClC,MAAM,WAAW,GAAG,MAAM,OAAO,EAAE,CAAC;QACpC,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,mBAAmB,CAAC,EAAE,KAAK,CAAC;QAE3E,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,+DAA+D;aACvE,CAAC;QACJ,CAAC;QAED,6CAA6C;QAC7C,MAAM,cAAc,CAAC,MAAM,CACzB;YACE,IAAI;YACJ,aAAa,EAAE,YAAY;YAC3B,KAAK;SACC,EACR,EAAE,EACF,SAAS,CACV,CAAC;QAEF,+CAA+C;QAC/C,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,gBAAgB,EAAE,CAAC;QACvD,MAAM,cAAc,GAAG,MAAM,CAAC,cAAc,IAAI,GAAG,CAAC;QAEpD,OAAO;YACL,OAAO,EAAE,IAAI;YACb,WAAW,EAAE,cAAc;SAC5B,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,mDAAmD,EAAE,KAAK,CAAC,CAAC;QAE1E,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,uBAAuB;SACxE,CAAC;IACJ,CAAC;AACH,CAAC,CAAC;AAEF,eAAe,yBAAyB,CAAC"}
1
+ {"version":3,"file":"handleOAuthCallbackAction.js","sourceRoot":"","sources":["../../../src/server/actions/handleOAuthCallbackAction.ts"],"names":[],"mappings":"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"}
@@ -15,5 +15,12 @@
15
15
  * specific language governing permissions and limitations
16
16
  * under the License.
17
17
  */
18
- declare const isSignedIn: (sessionId: string) => Promise<boolean>;
18
+ /**
19
+ * Check if the user is currently signed in.
20
+ * First tries JWT session validation, then falls back to legacy session check.
21
+ *
22
+ * @param sessionId - Optional session ID to check (if not provided, gets from cookies)
23
+ * @returns True if user is signed in, false otherwise
24
+ */
25
+ declare const isSignedIn: (sessionId?: string) => Promise<boolean>;
19
26
  export default isSignedIn;
@@ -17,10 +17,47 @@
17
17
  */
18
18
  'use server';
19
19
  import AsgardeoNextClient from '../../AsgardeoNextClient';
20
+ import getSessionId from './getSessionId';
21
+ import getSessionPayload from './getSessionPayload';
22
+ /**
23
+ * Check if the user is currently signed in.
24
+ * First tries JWT session validation, then falls back to legacy session check.
25
+ *
26
+ * @param sessionId - Optional session ID to check (if not provided, gets from cookies)
27
+ * @returns True if user is signed in, false otherwise
28
+ */
20
29
  const isSignedIn = async (sessionId) => {
21
- const client = AsgardeoNextClient.getInstance();
22
- const accessToken = await client.getAccessToken(sessionId);
23
- return !!accessToken;
30
+ try {
31
+ const sessionPayload = await getSessionPayload();
32
+ if (sessionPayload) {
33
+ const resolvedSessionId = sessionPayload.sessionId;
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
+ }
44
+ }
45
+ const resolvedSessionId = sessionId || (await getSessionId());
46
+ if (!resolvedSessionId) {
47
+ return false;
48
+ }
49
+ const client = AsgardeoNextClient.getInstance();
50
+ try {
51
+ const accessToken = await client.getAccessToken(resolvedSessionId);
52
+ return !!accessToken;
53
+ }
54
+ catch (error) {
55
+ return false;
56
+ }
57
+ }
58
+ catch {
59
+ return false;
60
+ }
24
61
  };
25
62
  export default isSignedIn;
26
63
  //# sourceMappingURL=isSignedIn.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"isSignedIn.js","sourceRoot":"","sources":["../../../src/server/actions/isSignedIn.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,YAAY,CAAC;AAEb,OAAO,kBAAkB,MAAM,0BAA0B,CAAC;AAG1D,MAAM,UAAU,GAAG,KAAK,EAAE,SAAiB,EAAoB,EAAE;IAC/D,MAAM,MAAM,GAAG,kBAAkB,CAAC,WAAW,EAAE,CAAC;IAChD,MAAM,WAAW,GAAuB,MAAM,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IAE/E,OAAO,CAAC,CAAC,WAAW,CAAC;AACvB,CAAC,CAAC;AAEF,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"isSignedIn.js","sourceRoot":"","sources":["../../../src/server/actions/isSignedIn.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,YAAY,CAAC;AAEb,OAAO,kBAAkB,MAAM,0BAA0B,CAAC;AAC1D,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,iBAAiB,MAAM,qBAAqB,CAAC;AAEpD;;;;;;GAMG;AACH,MAAM,UAAU,GAAG,KAAK,EAAE,SAAkB,EAAoB,EAAE;IAChE,IAAI,CAAC;QACH,MAAM,cAAc,GAAG,MAAM,iBAAiB,EAAE,CAAC;QAEjD,IAAI,cAAc,EAAE,CAAC;YACnB,MAAM,iBAAiB,GAAG,cAAc,CAAC,SAAS,CAAC;YAEnD,IAAI,iBAAiB,EAAE,CAAC;gBACtB,MAAM,MAAM,GAAG,kBAAkB,CAAC,WAAW,EAAE,CAAC;gBAChD,IAAI,CAAC;oBACH,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;oBACnE,OAAO,CAAC,CAAC,WAAW,CAAC;gBACvB,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,KAAK,CAAC;gBACf,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,iBAAiB,GAAG,SAAS,IAAI,CAAC,MAAM,YAAY,EAAE,CAAC,CAAC;QAE9D,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,MAAM,GAAG,kBAAkB,CAAC,WAAW,EAAE,CAAC;QAEhD,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;YAEnE,OAAO,CAAC,CAAC,WAAW,CAAC;QACvB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -19,6 +19,7 @@
19
19
  import { cookies } from 'next/headers';
20
20
  import { CookieConfig, generateSessionId, EmbeddedSignInFlowStatus, } from '@asgardeo/node';
21
21
  import AsgardeoNextClient from '../../AsgardeoNextClient';
22
+ import SessionManager from '../../utils/SessionManager';
22
23
  /**
23
24
  * Server action for signing in a user.
24
25
  * Handles the embedded sign-in flow and manages session cookies.
@@ -31,10 +32,36 @@ const signInAction = async (payload, request) => {
31
32
  try {
32
33
  const client = AsgardeoNextClient.getInstance();
33
34
  const cookieStore = await cookies();
34
- let userId = cookieStore.get(CookieConfig.SESSION_COOKIE_NAME)?.value;
35
- if (!userId) {
36
- userId = generateSessionId();
37
- cookieStore.set(CookieConfig.SESSION_COOKIE_NAME, userId, {
35
+ let sessionId;
36
+ let userId;
37
+ const existingSessionToken = cookieStore.get(SessionManager.getSessionCookieName())?.value;
38
+ if (existingSessionToken) {
39
+ try {
40
+ const sessionPayload = await SessionManager.verifySessionToken(existingSessionToken);
41
+ sessionId = sessionPayload.sessionId;
42
+ userId = sessionPayload.sub;
43
+ }
44
+ catch {
45
+ // Invalid session token, will create new temp session
46
+ }
47
+ }
48
+ if (!sessionId) {
49
+ const tempSessionToken = cookieStore.get(SessionManager.getTempSessionCookieName())?.value;
50
+ if (tempSessionToken) {
51
+ try {
52
+ const tempSession = await SessionManager.verifyTempSession(tempSessionToken);
53
+ sessionId = tempSession.sessionId;
54
+ }
55
+ catch {
56
+ // Invalid temp session, will create new one
57
+ }
58
+ }
59
+ }
60
+ if (!sessionId) {
61
+ sessionId = generateSessionId();
62
+ const tempSessionToken = await SessionManager.createTempSession(sessionId);
63
+ cookieStore.set(SessionManager.getTempSessionCookieName(), tempSessionToken, SessionManager.getTempSessionCookieOptions());
64
+ cookieStore.set(CookieConfig.SESSION_COOKIE_NAME, sessionId, {
38
65
  httpOnly: CookieConfig.DEFAULT_HTTP_ONLY,
39
66
  maxAge: CookieConfig.DEFAULT_MAX_AGE,
40
67
  sameSite: CookieConfig.DEFAULT_SAME_SITE,
@@ -42,25 +69,31 @@ const signInAction = async (payload, request) => {
42
69
  });
43
70
  }
44
71
  // If no payload provided, redirect to sign-in URL for redirect-based sign-in.
45
- // If there's a payload, handle the embedded sign-in flow.
46
72
  if (!payload) {
47
- const defaultSignInUrl = await client.getAuthorizeRequestUrl({}, userId);
73
+ const defaultSignInUrl = await client.getAuthorizeRequestUrl({}, sessionId);
48
74
  return { success: true, data: { signInUrl: String(defaultSignInUrl) } };
49
75
  }
50
- else {
51
- const response = await client.signIn(payload, request, userId);
52
- if (response.flowStatus === EmbeddedSignInFlowStatus.SuccessCompleted) {
53
- // Complete the sign-in process
54
- await client.signIn({
55
- code: response?.authData?.code,
56
- session_state: response?.authData?.session_state,
57
- state: response?.authData?.state,
58
- }, {}, userId);
59
- const afterSignInUrl = await (await client.getStorageManager()).getConfigDataParameter('afterSignInUrl');
60
- return { success: true, data: { afterSignInUrl: String(afterSignInUrl) } };
76
+ // Handle embedded sign-in flow
77
+ const response = await client.signIn(payload, request, sessionId);
78
+ if (response.flowStatus === EmbeddedSignInFlowStatus.SuccessCompleted) {
79
+ const signInResult = await client.signIn({
80
+ code: response?.authData?.code,
81
+ session_state: response?.authData?.session_state,
82
+ state: response?.authData?.state,
83
+ }, {}, sessionId);
84
+ if (signInResult) {
85
+ const idToken = await client.getDecodedIdToken(sessionId);
86
+ const userIdFromToken = idToken['sub'] || signInResult['sub'] || sessionId;
87
+ const scopes = idToken['scope'] ? idToken['scope'].split(' ') : [];
88
+ const organizationId = idToken['user_org'] || idToken['organization_id'];
89
+ const sessionToken = await SessionManager.createSessionToken(userIdFromToken, sessionId, scopes, organizationId);
90
+ cookieStore.set(SessionManager.getSessionCookieName(), sessionToken, SessionManager.getSessionCookieOptions());
91
+ cookieStore.delete(SessionManager.getTempSessionCookieName());
61
92
  }
62
- return { success: true, data: response };
93
+ const afterSignInUrl = await (await client.getStorageManager()).getConfigDataParameter('afterSignInUrl');
94
+ return { success: true, data: { afterSignInUrl: String(afterSignInUrl) } };
63
95
  }
96
+ return { success: true, data: response };
64
97
  }
65
98
  catch (error) {
66
99
  console.error('[signInAction] Error during sign-in:', error);
@@ -1 +1 @@
1
- {"version":3,"file":"signInAction.js","sourceRoot":"","sources":["../../../src/server/actions/signInAction.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,YAAY,CAAC;AAEb,OAAO,EAAC,OAAO,EAAC,MAAM,cAAc,CAAC;AACrC,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,wBAAwB,GAIzB,MAAM,gBAAgB,CAAC;AACxB,OAAO,kBAAkB,MAAM,0BAA0B,CAAC;AAE1D;;;;;;;GAOG;AACH,MAAM,YAAY,GAAG,KAAK,EACxB,OAAgD,EAChD,OAA0C,EAUzC,EAAE;IACH,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,kBAAkB,CAAC,WAAW,EAAE,CAAC;QAChD,MAAM,WAAW,GAAG,MAAM,OAAO,EAAE,CAAC;QAEpC,IAAI,MAAM,GAAuB,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,mBAAmB,CAAC,EAAE,KAAK,CAAC;QAE1F,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,GAAG,iBAAiB,EAAE,CAAC;YAC7B,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,mBAAmB,EAAE,MAAM,EAAE;gBACxD,QAAQ,EAAE,YAAY,CAAC,iBAAiB;gBACxC,MAAM,EAAE,YAAY,CAAC,eAAe;gBACpC,QAAQ,EAAE,YAAY,CAAC,iBAAiB;gBACxC,MAAM,EAAE,YAAY,CAAC,cAAc;aACpC,CAAC,CAAC;QACL,CAAC;QAED,8EAA8E;QAC9E,0DAA0D;QAC1D,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,gBAAgB,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;YAEzE,OAAO,EAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAC,SAAS,EAAE,MAAM,CAAC,gBAAgB,CAAC,EAAC,EAAC,CAAC;QACtE,CAAC;aAAM,CAAC;YACN,MAAM,QAAQ,GAAQ,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,OAAQ,EAAE,MAAM,CAAC,CAAC;YAErE,IAAI,QAAQ,CAAC,UAAU,KAAK,wBAAwB,CAAC,gBAAgB,EAAE,CAAC;gBACtE,+BAA+B;gBAC/B,MAAM,MAAM,CAAC,MAAM,CACjB;oBACE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI;oBAC9B,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa;oBAChD,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK;iBAC1B,EACR,EAAE,EACF,MAAM,CACP,CAAC;gBAEF,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,CAAC;gBAEzG,OAAO,EAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAC,cAAc,EAAE,MAAM,CAAC,cAAc,CAAC,EAAC,EAAC,CAAC;YACzE,CAAC;YAED,OAAO,EAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAA8C,EAAC,CAAC;QAC/E,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAE,KAAK,CAAC,CAAC;QAC7D,OAAO,EAAC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAC,CAAC;IAChD,CAAC;AACH,CAAC,CAAC;AAEF,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"signInAction.js","sourceRoot":"","sources":["../../../src/server/actions/signInAction.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,YAAY,CAAC;AAEb,OAAO,EAAC,OAAO,EAAC,MAAM,cAAc,CAAC;AACrC,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,wBAAwB,GAIzB,MAAM,gBAAgB,CAAC;AACxB,OAAO,kBAAkB,MAAM,0BAA0B,CAAC;AAC1D,OAAO,cAAc,MAAM,4BAA4B,CAAC;AAExD;;;;;;;GAOG;AACH,MAAM,YAAY,GAAG,KAAK,EACxB,OAAgD,EAChD,OAA0C,EAUzC,EAAE;IACH,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,kBAAkB,CAAC,WAAW,EAAE,CAAC;QAChD,MAAM,WAAW,GAAG,MAAM,OAAO,EAAE,CAAC;QAEpC,IAAI,SAA6B,CAAC;QAClC,IAAI,MAA0B,CAAC;QAE/B,MAAM,oBAAoB,GAAG,WAAW,CAAC,GAAG,CAAC,cAAc,CAAC,oBAAoB,EAAE,CAAC,EAAE,KAAK,CAAC;QAE3F,IAAI,oBAAoB,EAAE,CAAC;YACzB,IAAI,CAAC;gBACH,MAAM,cAAc,GAAG,MAAM,cAAc,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,CAAC;gBACrF,SAAS,GAAG,cAAc,CAAC,SAAS,CAAC;gBACrC,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC;YAC9B,CAAC;YAAC,MAAM,CAAC;gBACP,sDAAsD;YACxD,CAAC;QACH,CAAC;QAED,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,gBAAgB,GAAG,WAAW,CAAC,GAAG,CAAC,cAAc,CAAC,wBAAwB,EAAE,CAAC,EAAE,KAAK,CAAC;YAE3F,IAAI,gBAAgB,EAAE,CAAC;gBACrB,IAAI,CAAC;oBACH,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;oBAC7E,SAAS,GAAG,WAAW,CAAC,SAAS,CAAC;gBACpC,CAAC;gBAAC,MAAM,CAAC;oBACP,4CAA4C;gBAC9C,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,SAAS,GAAG,iBAAiB,EAAE,CAAC;YAEhC,MAAM,gBAAgB,GAAG,MAAM,cAAc,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;YAE3E,WAAW,CAAC,GAAG,CACb,cAAc,CAAC,wBAAwB,EAAE,EACzC,gBAAgB,EAChB,cAAc,CAAC,2BAA2B,EAAE,CAC7C,CAAC;YAEF,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,mBAAmB,EAAE,SAAS,EAAE;gBAC3D,QAAQ,EAAE,YAAY,CAAC,iBAAiB;gBACxC,MAAM,EAAE,YAAY,CAAC,eAAe;gBACpC,QAAQ,EAAE,YAAY,CAAC,iBAAiB;gBACxC,MAAM,EAAE,YAAY,CAAC,cAAc;aACpC,CAAC,CAAC;QACL,CAAC;QAED,8EAA8E;QAC9E,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,gBAAgB,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;YAC5E,OAAO,EAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAC,SAAS,EAAE,MAAM,CAAC,gBAAgB,CAAC,EAAC,EAAC,CAAC;QACtE,CAAC;QAED,+BAA+B;QAC/B,MAAM,QAAQ,GAAQ,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,OAAQ,EAAE,SAAS,CAAC,CAAC;QAExE,IAAI,QAAQ,CAAC,UAAU,KAAK,wBAAwB,CAAC,gBAAgB,EAAE,CAAC;YACtE,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,MAAM,CACtC;gBACE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI;gBAC9B,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa;gBAChD,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK;aAC1B,EACR,EAAE,EACF,SAAS,CACV,CAAC;YAEF,IAAI,YAAY,EAAE,CAAC;gBACjB,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;gBAC1D,MAAM,eAAe,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC;gBAC3E,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnE,MAAM,cAAc,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAAC;gBAEzE,MAAM,YAAY,GAAG,MAAM,cAAc,CAAC,kBAAkB,CAC1D,eAAe,EACf,SAAS,EACT,MAAM,EACN,cAAc,CACf,CAAC;gBAEF,WAAW,CAAC,GAAG,CAAC,cAAc,CAAC,oBAAoB,EAAE,EAAE,YAAY,EAAE,cAAc,CAAC,uBAAuB,EAAE,CAAC,CAAC;gBAE/G,WAAW,CAAC,MAAM,CAAC,cAAc,CAAC,wBAAwB,EAAE,CAAC,CAAC;YAChE,CAAC;YAED,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,CAAC;YACzG,OAAO,EAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAC,cAAc,EAAE,MAAM,CAAC,cAAc,CAAC,EAAC,EAAC,CAAC;QACzE,CAAC;QAED,OAAO,EAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAA8C,EAAC,CAAC;IAC/E,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAE,KAAK,CAAC,CAAC;QAC7D,OAAO,EAAC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAC,CAAC;IAChD,CAAC;AACH,CAAC,CAAC;AAEF,eAAe,YAAY,CAAC"}
@@ -15,6 +15,12 @@
15
15
  * specific language governing permissions and limitations
16
16
  * under the License.
17
17
  */
18
+ /**
19
+ * Server action for signing out a user.
20
+ * Clears both JWT and legacy session cookies.
21
+ *
22
+ * @returns Promise that resolves with success status and optional after sign-out URL
23
+ */
18
24
  declare const signOutAction: () => Promise<{
19
25
  success: boolean;
20
26
  data?: {
@@ -16,13 +16,28 @@
16
16
  * under the License.
17
17
  */
18
18
  'use server';
19
+ import { cookies } from 'next/headers';
19
20
  import AsgardeoNextClient from '../../AsgardeoNextClient';
20
- import deleteSessionId from './deleteSessionId';
21
+ import SessionManager from '../../utils/SessionManager';
22
+ import getSessionId from './getSessionId';
23
+ /**
24
+ * Server action for signing out a user.
25
+ * Clears both JWT and legacy session cookies.
26
+ *
27
+ * @returns Promise that resolves with success status and optional after sign-out URL
28
+ */
21
29
  const signOutAction = async () => {
22
30
  try {
23
31
  const client = AsgardeoNextClient.getInstance();
24
- const afterSignOutUrl = await client.signOut();
25
- await deleteSessionId();
32
+ const sessionId = await getSessionId();
33
+ let afterSignOutUrl = '/';
34
+ if (sessionId) {
35
+ afterSignOutUrl = await client.signOut({}, sessionId);
36
+ }
37
+ const cookieStore = await cookies();
38
+ cookieStore.delete(SessionManager.getSessionCookieName());
39
+ cookieStore.delete(SessionManager.getTempSessionCookieName());
40
+ await import('./deleteSessionId').then(module => module.default());
26
41
  return { success: true, data: { afterSignOutUrl } };
27
42
  }
28
43
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"signOutAction.js","sourceRoot":"","sources":["../../../src/server/actions/signOutAction.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,YAAY,CAAC;AAGb,OAAO,kBAAkB,MAAM,0BAA0B,CAAC;AAC1D,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAEhD,MAAM,aAAa,GAAG,KAAK,IAAqF,EAAE;IAChH,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,kBAAkB,CAAC,WAAW,EAAE,CAAC;QAChD,MAAM,eAAe,GAAW,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QAEvD,MAAM,eAAe,EAAE,CAAC;QAExB,OAAO,EAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAC,eAAe,EAAC,EAAC,CAAC;IAClD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,EAAC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAC,CAAC;IACjC,CAAC;AACH,CAAC,CAAC;AAEF,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"signOutAction.js","sourceRoot":"","sources":["../../../src/server/actions/signOutAction.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,YAAY,CAAC;AAEb,OAAO,EAAC,OAAO,EAAC,MAAM,cAAc,CAAC;AACrC,OAAO,kBAAkB,MAAM,0BAA0B,CAAC;AAC1D,OAAO,cAAc,MAAM,4BAA4B,CAAC;AACxD,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAE1C;;;;;GAKG;AACH,MAAM,aAAa,GAAG,KAAK,IAAqF,EAAE;IAChH,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,kBAAkB,CAAC,WAAW,EAAE,CAAC;QAChD,MAAM,SAAS,GAAG,MAAM,YAAY,EAAE,CAAC;QAEvC,IAAI,eAAe,GAAW,GAAG,CAAC;QAElC,IAAI,SAAS,EAAE,CAAC;YACd,eAAe,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;QACxD,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,OAAO,EAAE,CAAC;QAEpC,WAAW,CAAC,MAAM,CAAC,cAAc,CAAC,oBAAoB,EAAE,CAAC,CAAC;QAE1D,WAAW,CAAC,MAAM,CAAC,cAAc,CAAC,wBAAwB,EAAE,CAAC,CAAC;QAE9D,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QAEnE,OAAO,EAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAC,eAAe,EAAC,EAAC,CAAC;IAClD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,EAAC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAC,CAAC;IACjC,CAAC;AACH,CAAC,CAAC;AAEF,eAAe,aAAa,CAAC"}