override relative url

This commit is contained in:
Max Peintner
2025-07-01 11:08:02 +02:00
parent 8819be810b
commit 71162c4a6b
2 changed files with 13 additions and 8 deletions

View File

@@ -217,7 +217,7 @@ export async function GET(request: NextRequest) {
params.set("organization", organization); params.set("organization", organization);
} }
const url = await startIdentityProviderFlow({ let url: string | null = await startIdentityProviderFlow({
serviceUrl, serviceUrl,
idpId, idpId,
urls: { urls: {
@@ -237,9 +237,12 @@ export async function GET(request: NextRequest) {
); );
} }
const absoluteUrl = constructUrl(request, url); if (url.startsWith("/")) {
// if the url is a relative path, construct the absolute url
url = constructUrl(request, url).toString();
}
return NextResponse.redirect(absoluteUrl); return NextResponse.redirect(url);
} }
} }
} }

View File

@@ -985,16 +985,18 @@ export async function startIdentityProviderFlow({
return resp.nextStep.value; return resp.nextStep.value;
} else if (resp.nextStep.case === "formData" && resp.nextStep.value) { } else if (resp.nextStep.case === "formData" && resp.nextStep.value) {
const formData: FormData = resp.nextStep.value; const formData: FormData = resp.nextStep.value;
const redirectUrl = new URL("/saml-post"); const redirectUrl = "/saml-post";
const params = new URLSearchParams({ url: formData.url });
redirectUrl.searchParams.set("url", formData.url);
Object.entries(formData.fields).forEach(([k, v]) => { Object.entries(formData.fields).forEach(([k, v]) => {
redirectUrl.searchParams.set(k, v); params.append(k, v);
}); });
return redirectUrl.toString(); return `${redirectUrl}?${params.toString()}`;
} else {
return null;
} }
return null;
}); });
} }