@asgardeo/nextjs 0.1.27 → 0.1.29
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.
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
*/
|
|
18
18
|
'use server';
|
|
19
19
|
import { cookies } from 'next/headers';
|
|
20
|
-
import { generateSessionId, EmbeddedSignInFlowStatus, } from '@asgardeo/node';
|
|
20
|
+
import { generateSessionId, EmbeddedSignInFlowStatus, isEmpty, } from '@asgardeo/node';
|
|
21
21
|
import AsgardeoNextClient from '../../AsgardeoNextClient';
|
|
22
22
|
import SessionManager from '../../utils/SessionManager';
|
|
23
23
|
/**
|
|
@@ -63,7 +63,7 @@ const signInAction = async (payload, request) => {
|
|
|
63
63
|
cookieStore.set(SessionManager.getTempSessionCookieName(), tempSessionToken, SessionManager.getTempSessionCookieOptions());
|
|
64
64
|
}
|
|
65
65
|
// If no payload provided, redirect to sign-in URL for redirect-based sign-in.
|
|
66
|
-
if (!payload) {
|
|
66
|
+
if (!payload || isEmpty(payload)) {
|
|
67
67
|
const defaultSignInUrl = await client.getAuthorizeRequestUrl({}, sessionId);
|
|
68
68
|
return { success: true, data: { signInUrl: String(defaultSignInUrl) } };
|
|
69
69
|
}
|
|
@@ -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,
|
|
1
|
+
{"version":3,"file":"signInAction.js","sourceRoot":"","sources":["../../../../src/server/actions/signInAction.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
* under the License.
|
|
17
17
|
*/
|
|
18
18
|
import { NextResponse } from 'next/server';
|
|
19
|
+
import SessionManager from '../../utils/SessionManager';
|
|
19
20
|
import { hasValidSession as hasValidJWTSession, getSessionFromRequest, getSessionIdFromRequest, } from '../../utils/sessionUtils';
|
|
20
21
|
/**
|
|
21
22
|
* Enhanced session validation that checks both JWT and legacy sessions
|
|
@@ -100,10 +101,37 @@ const getSessionIdFromRequestMiddleware = async (request) => {
|
|
|
100
101
|
const asgardeoMiddleware = (handler, options) => {
|
|
101
102
|
return async (request) => {
|
|
102
103
|
const resolvedOptions = typeof options === 'function' ? options(request) : options || {};
|
|
104
|
+
const url = new URL(request.url);
|
|
105
|
+
const hasCallbackParams = url.searchParams.has('code') && url.searchParams.has('state');
|
|
106
|
+
let isValidOAuthCallback = false;
|
|
107
|
+
if (hasCallbackParams) {
|
|
108
|
+
// OAuth callbacks should not contain error parameters that indicate failed auth
|
|
109
|
+
const hasError = url.searchParams.has('error');
|
|
110
|
+
if (!hasError) {
|
|
111
|
+
// Validate that there's a temporary session that initiated this OAuth flow
|
|
112
|
+
const tempSessionToken = request.cookies.get(SessionManager.getTempSessionCookieName())?.value;
|
|
113
|
+
if (tempSessionToken) {
|
|
114
|
+
try {
|
|
115
|
+
// Verify the temporary session exists and is valid
|
|
116
|
+
await SessionManager.verifyTempSession(tempSessionToken);
|
|
117
|
+
isValidOAuthCallback = true;
|
|
118
|
+
}
|
|
119
|
+
catch {
|
|
120
|
+
// Invalid temp session - this is not a legitimate OAuth callback
|
|
121
|
+
isValidOAuthCallback = false;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
103
126
|
const sessionId = await getSessionIdFromRequestMiddleware(request);
|
|
104
127
|
const isAuthenticated = await hasValidSession(request);
|
|
105
128
|
const asgardeo = {
|
|
106
129
|
protectRoute: async (options) => {
|
|
130
|
+
// Skip protection if this is a validated OAuth callback - let the callback handler process it first
|
|
131
|
+
// This prevents race conditions where middleware redirects before OAuth callback completes
|
|
132
|
+
if (isValidOAuthCallback) {
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
107
135
|
if (!isAuthenticated) {
|
|
108
136
|
const referer = request.headers.get('referer');
|
|
109
137
|
// TODO: Make this configurable or call the signIn() from here.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"asgardeoMiddleware.js","sourceRoot":"","sources":["../../../../src/server/middleware/asgardeoMiddleware.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAc,YAAY,EAAC,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"asgardeoMiddleware.js","sourceRoot":"","sources":["../../../../src/server/middleware/asgardeoMiddleware.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@asgardeo/nextjs",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.29",
|
|
4
4
|
"description": "Next.js implementation of Asgardeo JavaScript SDK.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"asgardeo",
|
|
@@ -45,8 +45,8 @@
|
|
|
45
45
|
"@types/react": "^19.1.4",
|
|
46
46
|
"jose": "^5.10.0",
|
|
47
47
|
"tslib": "^2.8.1",
|
|
48
|
-
"@asgardeo/node": "^0.0.
|
|
49
|
-
"@asgardeo/react": "^0.5.
|
|
48
|
+
"@asgardeo/node": "^0.0.22",
|
|
49
|
+
"@asgardeo/react": "^0.5.28"
|
|
50
50
|
},
|
|
51
51
|
"devDependencies": {
|
|
52
52
|
"@types/node": "^22.15.3",
|