26 lines
824 B
TypeScript
26 lines
824 B
TypeScript
import { Client } from "@shared/types";
|
|
import { parseDomain } from "@shared/utils/domains";
|
|
import env from "~/env";
|
|
import Desktop from "~/utils/Desktop";
|
|
|
|
/**
|
|
* If we're on a custom domain or a subdomain then the auth must point to the
|
|
* apex (env.URL) for authentication so that the state cookie can be set and read.
|
|
* We pass the host into the auth URL so that the server can redirect on error
|
|
* and keep the user on the same page.
|
|
*/
|
|
export function getRedirectUrl(authUrl: string) {
|
|
const { custom, teamSubdomain, host } = parseDomain(window.location.origin);
|
|
const url = new URL(env.URL);
|
|
url.pathname = authUrl;
|
|
|
|
if (custom || teamSubdomain) {
|
|
url.searchParams.set("host", host);
|
|
}
|
|
if (Desktop.isElectron()) {
|
|
url.searchParams.set("client", Client.Desktop);
|
|
}
|
|
|
|
return url.toString();
|
|
}
|