login handler

This commit is contained in:
peintnermax
2024-03-06 14:13:38 +01:00
parent 73fde48e43
commit 482990c281
2 changed files with 41 additions and 48 deletions

View File

@@ -43,25 +43,42 @@ export async function GET(request: NextRequest) {
const sessionCookies: SessionCookie[] = await getAllSessions();
if (authRequestId && sessionId) {
const cookie = sessionCookies.find((cookie) => cookie.id === sessionId);
console.log(
`Login with session: ${sessionId} and authRequest: ${authRequestId}`
);
const ids = sessionCookies.map((s) => s.id);
if (cookie && cookie.id && cookie.token) {
const session = {
sessionId: cookie?.id,
sessionToken: cookie?.token,
};
const { callbackUrl } = await createCallback(server, {
authRequestId,
session,
});
return NextResponse.redirect(callbackUrl);
} else {
const accountsUrl = new URL("/accounts", request.url);
accountsUrl.searchParams.set("authRequestId", authRequestId);
return NextResponse.redirect(accountsUrl);
let sessions: Session[] = [];
if (ids && ids.length) {
sessions = await loadSessions(ids);
}
let selectedSession = sessions.find((s) => s.id === sessionId);
if (selectedSession && selectedSession.id) {
console.log(`Found session ${selectedSession.id}`);
const cookie = sessionCookies.find(
(cookie) => cookie.id === selectedSession?.id
);
if (cookie && cookie.id && cookie.token) {
console.log(`Found sessioncookie ${cookie.id}`);
const session = {
sessionId: cookie?.id,
sessionToken: cookie?.token,
};
const { callbackUrl } = await createCallback(server, {
authRequestId,
session,
});
return NextResponse.redirect(callbackUrl);
}
}
}
if (authRequestId) {
console.log(`Login with authRequest: ${authRequestId}`);
const { authRequest } = await getAuthRequest(server, { authRequestId });
const ids = sessionCookies.map((s) => s.id);
@@ -122,17 +139,19 @@ export async function GET(request: NextRequest) {
}
} else {
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
}
loginNameUrl.searchParams.set("authRequestId", authRequestId);
if (authRequest?.loginHint) {
loginNameUrl.searchParams.set("loginName", authRequest.loginHint);
loginNameUrl.searchParams.set("submit", "true"); // autosubmit
}
return NextResponse.redirect(loginNameUrl);
}
} else {
return NextResponse.error();
return NextResponse.json(
{ error: "No authRequestId provided" },
{ status: 500 }
);
}
}

View File

@@ -40,32 +40,6 @@ export default function SessionItem({
}
}
// async function loginSession(authRequestId: string, sessionId: string) {
// setLoading(true);
// const res = await fetch(
// "/api/login?" + new URLSearchParams({ sessionId, authRequestId }),
// {
// method: "DELETE",
// headers: {
// "Content-Type": "application/json",
// },
// body: JSON.stringify({
// id: id,
// }),
// }
// );
// const response = await res.json();
// setLoading(false);
// if (!res.ok) {
// // setError(response.details);
// return Promise.reject(response);
// } else {
// return response;
// }
// }
const validPassword = session?.factors?.password?.verifiedAt;
const validPasskey = session?.factors?.webAuthN?.verifiedAt;