fix host, error handling

This commit is contained in:
Max Peintner
2024-12-03 10:57:04 +01:00
parent c2295760dc
commit 798cd464a4
2 changed files with 21 additions and 7 deletions

View File

@@ -174,7 +174,7 @@ export async function GET(request: NextRequest) {
const idp = identityProviders.find((idp) => idp.id === idpId); const idp = identityProviders.find((idp) => idp.id === idpId);
if (idp) { if (idp) {
const host = request.nextUrl.origin; const origin = request.nextUrl.origin;
const identityProviderType = identityProviders[0].type; const identityProviderType = identityProviders[0].type;
let provider = idpTypeToSlug(identityProviderType); let provider = idpTypeToSlug(identityProviderType);
@@ -193,10 +193,10 @@ export async function GET(request: NextRequest) {
idpId, idpId,
urls: { urls: {
successUrl: successUrl:
`${host}/idp/${provider}/success?` + `${origin}/idp/${provider}/success?` +
new URLSearchParams(params), new URLSearchParams(params),
failureUrl: failureUrl:
`${host}/idp/${provider}/failure?` + `${origin}/idp/${provider}/failure?` +
new URLSearchParams(params), new URLSearchParams(params),
}, },
}).then((resp) => { }).then((resp) => {

View File

@@ -54,6 +54,11 @@ export async function sendLoginname(command: SendLoginnameCommand) {
if (identityProviders.length === 1) { if (identityProviders.length === 1) {
const host = (await headers()).get("host"); const host = (await headers()).get("host");
if (!host) {
return { error: "Could not get host" };
}
const identityProviderType = identityProviders[0].type; const identityProviderType = identityProviders[0].type;
const provider = idpTypeToSlug(identityProviderType); const provider = idpTypeToSlug(identityProviderType);
@@ -72,9 +77,11 @@ export async function sendLoginname(command: SendLoginnameCommand) {
idpId: identityProviders[0].id, idpId: identityProviders[0].id,
urls: { urls: {
successUrl: successUrl:
`${host}/idp/${provider}/success?` + new URLSearchParams(params), `${host.includes("localhost") ? "http://" : "https://"}${host}/idp/${provider}/success?` +
new URLSearchParams(params),
failureUrl: failureUrl:
`${host}/idp/${provider}/failure?` + new URLSearchParams(params), `${host.includes("localhost") ? "http://" : "https://"}${host}/idp/${provider}/failure?` +
new URLSearchParams(params),
}, },
}); });
@@ -91,6 +98,11 @@ export async function sendLoginname(command: SendLoginnameCommand) {
if (identityProviders.length === 1) { if (identityProviders.length === 1) {
const host = (await headers()).get("host"); const host = (await headers()).get("host");
if (!host) {
return { error: "Could not get host" };
}
const identityProviderId = identityProviders[0].idpId; const identityProviderId = identityProviders[0].idpId;
const idp = await getIDPByID(identityProviderId); const idp = await getIDPByID(identityProviderId);
@@ -118,9 +130,11 @@ export async function sendLoginname(command: SendLoginnameCommand) {
idpId: idp.id, idpId: idp.id,
urls: { urls: {
successUrl: successUrl:
`${host}/idp/${provider}/success?` + new URLSearchParams(params), `${host.includes("localhost") ? "http://" : "https://"}${host}/idp/${provider}/success?` +
new URLSearchParams(params),
failureUrl: failureUrl:
`${host}/idp/${provider}/failure?` + new URLSearchParams(params), `${host.includes("localhost") ? "http://" : "https://"}${host}/idp/${provider}/failure?` +
new URLSearchParams(params),
}, },
}); });