fix put session, params with authRequestId

This commit is contained in:
peintnermax
2023-08-29 15:19:41 +02:00
parent 338c28cd88
commit 6d6a629e33
3 changed files with 36 additions and 21 deletions

View File

@@ -64,9 +64,9 @@ export async function GET(request: NextRequest) {
// check for loginHint, userId hint sessions
let selectedSession = findSession(sessions, authRequest);
if (!selectedSession) {
selectedSession = sessions[0]; // TODO: remove
}
// if (!selectedSession) {
// selectedSession = sessions[0]; // TODO: remove
// }
if (selectedSession && selectedSession.id) {
const cookie = sessionCookies.find(
@@ -92,7 +92,13 @@ export async function GET(request: NextRequest) {
return NextResponse.redirect(accountsUrl);
}
} else {
return NextResponse.error();
const accountsUrl = new URL("/accounts", request.url);
if (authRequest?.id) {
accountsUrl.searchParams.set("authRequestId", authRequest?.id);
}
return NextResponse.redirect(accountsUrl);
// return NextResponse.error();
}
}
} else {

View File

@@ -58,7 +58,7 @@ export async function PUT(request: NextRequest) {
const domain: string = request.nextUrl.hostname;
if (challenges.webAuthN && !challenges.webAuthN.domain) {
if (challenges && challenges.webAuthN && !challenges.webAuthN.domain) {
challenges.webAuthN.domain = domain;
}

View File

@@ -79,22 +79,26 @@ export default function UsernameForm({
"/password?" + new URLSearchParams(paramsPassword)
);
case 2: // AuthenticationMethodType.AUTHENTICATION_METHOD_TYPE_PASSKEY
return router.push(
"/passkey/login?" +
new URLSearchParams({ loginName: values.loginName })
);
default:
const paramsPasskey: any = { loginName: values.loginName };
if (loginSettings?.passkeysType === 1) {
paramsPasskey.promptPasswordless = `true`; // PasskeysType.PASSKEYS_TYPE_ALLOWED,
}
if (authRequestId) {
paramsPasskey.authRequestId = authRequestId;
}
return router.push(
"/password?" + new URLSearchParams(paramsPasskey)
"/passkey/login?" + new URLSearchParams(paramsPasskey)
);
default:
const paramsPasskeyDefault: any = { loginName: values.loginName };
if (loginSettings?.passkeysType === 1) {
paramsPasskeyDefault.promptPasswordless = `true`; // PasskeysType.PASSKEYS_TYPE_ALLOWED,
}
if (authRequestId) {
paramsPasskeyDefault.authRequestId = authRequestId;
}
return router.push(
"/password?" + new URLSearchParams(paramsPasskeyDefault)
);
}
} else if (
@@ -107,12 +111,17 @@ export default function UsernameForm({
} else {
// prefer passkey in favor of other methods
if (response.authMethodTypes.includes(2)) {
const passkeyParams: any = {
loginName: values.loginName,
altPassword: `${response.authMethodTypes.includes(1)}`, // show alternative password option
};
if (authRequestId) {
passkeyParams.authRequestId = authRequestId;
}
return router.push(
"/passkey/login?" +
new URLSearchParams({
loginName: values.loginName,
altPassword: `${response.authMethodTypes.includes(1)}`, // show alternative password option
})
"/passkey/login?" + new URLSearchParams(passkeyParams)
);
}
}