mirror of
https://github.com/zitadel/zitadel.git
synced 2025-12-12 13:52:20 +00:00
85 lines
2.2 KiB
TypeScript
85 lines
2.2 KiB
TypeScript
import {
|
|
createSession,
|
|
getSession,
|
|
listAuthenticationMethodTypes,
|
|
server,
|
|
} from "#/lib/zitadel";
|
|
import {
|
|
SessionCookie,
|
|
addSessionToCookie,
|
|
getSessionCookieById,
|
|
} from "#/utils/cookies";
|
|
import { createSessionAndUpdateCookie } from "#/utils/session";
|
|
import { NextRequest, NextResponse } from "next/server";
|
|
|
|
export async function GET(request: NextRequest) {
|
|
const { searchParams } = new URL(request.url);
|
|
const sessionId = searchParams.get("sessionId");
|
|
if (sessionId) {
|
|
const sessionCookie = await getSessionCookieById(sessionId);
|
|
|
|
const session = await getSession(
|
|
server,
|
|
sessionCookie.id,
|
|
sessionCookie.token
|
|
);
|
|
|
|
const userId = session?.session?.factors?.user?.id;
|
|
|
|
if (userId) {
|
|
return listAuthenticationMethodTypes(userId)
|
|
.then((methods) => {
|
|
return NextResponse.json(methods);
|
|
})
|
|
.catch((error) => {
|
|
return NextResponse.json(error, { status: 500 });
|
|
});
|
|
} else {
|
|
return NextResponse.json(
|
|
{ details: "could not get session" },
|
|
{ status: 500 }
|
|
);
|
|
}
|
|
} else {
|
|
return NextResponse.json({}, { status: 400 });
|
|
}
|
|
}
|
|
|
|
export async function POST(request: NextRequest) {
|
|
const body = await request.json();
|
|
if (body) {
|
|
const { loginName } = body;
|
|
|
|
const domain: string = request.nextUrl.hostname;
|
|
|
|
return createSessionAndUpdateCookie(loginName, undefined, domain, undefined)
|
|
.then((session) => {
|
|
if (session.factors?.user?.id) {
|
|
return listAuthenticationMethodTypes(session.factors?.user?.id)
|
|
.then((methods) => {
|
|
return NextResponse.json({
|
|
authMethodTypes: methods.authMethodTypes,
|
|
sessionId: session.id,
|
|
factors: session.factors,
|
|
});
|
|
})
|
|
.catch((error) => {
|
|
return NextResponse.json(error, { status: 500 });
|
|
});
|
|
} else {
|
|
throw "No user id found in session";
|
|
}
|
|
})
|
|
.catch((error) => {
|
|
return NextResponse.json(
|
|
{
|
|
details: "could not add session to cookie",
|
|
},
|
|
{ status: 500 }
|
|
);
|
|
});
|
|
} else {
|
|
return NextResponse.error();
|
|
}
|
|
}
|