mirror of
https://github.com/ajnart/homarr.git
synced 2026-02-27 17:00:54 +01:00
* wip: sso * feat: add ldap client and provider * feat: implement login form * feat: finish sso * fix: lint and format issue * chore: address pull request feedback * fix: build not working * fix: oidc is redirected to internal docker container hostname * fix: build not working * refactor: migrate to ldapts * fix: format and frozen lock file * fix: deepsource issues * fix: unit tests for ldap authorization not working * refactor: remove unnecessary args from dockerfile * chore: address pull request feedback * fix: use console instead of logger in auth env.mjs * fix: default value for auth provider of wrong type * fix: broken lock file * fix: format issue
27 lines
865 B
TypeScript
27 lines
865 B
TypeScript
import type { ReadonlyHeaders } from "next/dist/server/web/spec-extension/adapters/headers";
|
|
|
|
/**
|
|
* The redirect_uri is constructed to work behind a reverse proxy. It is constructed from the headers x-forwarded-proto and x-forwarded-host.
|
|
* @param headers
|
|
* @param pathname
|
|
* @returns
|
|
*/
|
|
export const createRedirectUri = (headers: ReadonlyHeaders | null, pathname: string) => {
|
|
if (!headers) {
|
|
return pathname;
|
|
}
|
|
|
|
let protocol = headers.get("x-forwarded-proto") ?? "http";
|
|
|
|
// @see https://support.glitch.com/t/x-forwarded-proto-contains-multiple-protocols/17219
|
|
if (protocol.includes(",")) {
|
|
protocol = protocol.includes("https") ? "https" : "http";
|
|
}
|
|
|
|
const path = pathname.startsWith("/") ? pathname : `/${pathname}`;
|
|
|
|
const host = headers.get("x-forwarded-host") ?? headers.get("host");
|
|
|
|
return `${protocol}://${host}${path}`;
|
|
};
|