fix callback for password, passkey

This commit is contained in:
peintnermax
2023-08-30 17:06:27 +02:00
parent 5da274cecf
commit e475418ce1
3 changed files with 36 additions and 5 deletions

View File

@@ -47,13 +47,16 @@ export async function GET(request: NextRequest) {
sessions = await loadSessions(ids);
} else {
console.info("No session cookie found.");
return [];
sessions = [];
}
// use existing session and hydrate it for oidc
if (authRequest && sessions.length) {
// if some accounts are available for selection and select_account is set
if (authRequest && authRequest.prompt === Prompt.PROMPT_SELECT_ACCOUNT) {
if (
authRequest &&
authRequest.prompt.includes(Prompt.PROMPT_SELECT_ACCOUNT)
) {
const accountsUrl = new URL("/accounts", request.url);
if (authRequest?.id) {
accountsUrl.searchParams.set("authRequestId", authRequest?.id);
@@ -105,6 +108,10 @@ export async function GET(request: NextRequest) {
const loginNameUrl = new URL("/loginname", request.url);
if (authRequest?.id) {
loginNameUrl.searchParams.set("authRequestId", authRequest?.id);
if (authRequest.loginHint) {
loginNameUrl.searchParams.set("loginName", authRequest.loginHint);
loginNameUrl.searchParams.set("submit", "true"); // autosubmit
}
}
return NextResponse.redirect(loginNameUrl);

View File

@@ -153,8 +153,20 @@ export default function LoginPasskey({
userHandle: coerceToBase64Url(userHandle, "userHandle"),
},
};
return submitLogin(data).then(() => {
return router.push(`/accounts`);
return submitLogin(data).then((resp) => {
return router.push(
`/signedin?` +
new URLSearchParams(
authRequestId
? {
loginName: resp.factors.user.loginName,
authRequestId,
}
: {
loginName: resp.factors.user.loginName,
}
)
);
});
} else {
setLoading(false);

View File

@@ -76,7 +76,19 @@ export default function PasswordForm({
})
);
} else {
return router.push(`/accounts`);
return router.push(
`/signedin?` +
new URLSearchParams(
authRequestId
? {
loginName: resp.factors.user.loginName,
authRequestId,
}
: {
loginName: resp.factors.user.loginName,
}
)
);
}
});
}