From 6d6a629e33520b3cd6012935bdb23aa1e62b0dce Mon Sep 17 00:00:00 2001 From: peintnermax Date: Tue, 29 Aug 2023 15:19:41 +0200 Subject: [PATCH] fix put session, params with authRequestId --- apps/login/app/(login)/login/route.ts | 14 ++++++--- apps/login/app/api/session/route.ts | 2 +- apps/login/ui/UsernameForm.tsx | 41 ++++++++++++++++----------- 3 files changed, 36 insertions(+), 21 deletions(-) diff --git a/apps/login/app/(login)/login/route.ts b/apps/login/app/(login)/login/route.ts index 60f5aa6d55a..52572e7c5f9 100644 --- a/apps/login/app/(login)/login/route.ts +++ b/apps/login/app/(login)/login/route.ts @@ -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 { diff --git a/apps/login/app/api/session/route.ts b/apps/login/app/api/session/route.ts index d5beb9d6e3c..2ca9ee9dd5d 100644 --- a/apps/login/app/api/session/route.ts +++ b/apps/login/app/api/session/route.ts @@ -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; } diff --git a/apps/login/ui/UsernameForm.tsx b/apps/login/ui/UsernameForm.tsx index 91ee7d180c3..ca7d298fb10 100644 --- a/apps/login/ui/UsernameForm.tsx +++ b/apps/login/ui/UsernameForm.tsx @@ -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) ); } }