Skip to content

Commit 2d6c74c

Browse files
committed
Use kcContext.client.baseUrl and fallback to redirect_url origin
1 parent 216d740 commit 2d6c74c

File tree

5 files changed

+44
-28
lines changed

5 files changed

+44
-28
lines changed

src/login/KcContext.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@ export type KcContextExtension = {
77
properties: Record<KcEnvName, string> & {};
88
// NOTE: Here you can declare more properties to extend the KcContext
99
// See: https://docs.keycloakify.dev/faq-and-help/some-values-you-need-are-missing-from-in-kccontext
10+
client: {
11+
baseUrl?: string;
12+
};
1013
};
1114

1215
export type KcContextExtensionPerPage = {};

src/login/KcPageStory.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@ const kcContextExtension: KcContextExtension = {
99
themeName: themeNames[0],
1010
properties: {
1111
...kcEnvDefaults
12+
},
13+
client: {
14+
baseUrl: "https://my-theme.keycloakify.dev"
1215
}
1316
};
1417
const kcContextExtensionPerPage: KcContextExtensionPerPage = {};

src/login/Template.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import { useInitialize } from "keycloakify/login/Template.useInitialize";
88
import type { I18n } from "./i18n";
99
import type { KcContext } from "./KcContext";
1010
import { Header as DsfrHeader } from "@codegouvfr/react-dsfr/Header";
11-
import { getReferrerUrl } from "./shared/getReferrerUrl";
11+
import { redirectUrlOrigin } from "./shared/redirectUriOrigin";
1212
import { headerFooterDisplayItem } from "@codegouvfr/react-dsfr/Display";
1313
import { Footer as DSFRFooter } from "@codegouvfr/react-dsfr/Footer";
1414
import { Alert } from "@codegouvfr/react-dsfr/Alert";
@@ -77,7 +77,7 @@ export default function Template(props: Props) {
7777
/>
7878
}
7979
homeLinkProps={{
80-
href: getReferrerUrl(),
80+
href: kcContext.client.baseUrl ?? redirectUrlOrigin,
8181
title: kcContext.realm.displayName
8282
}}
8383
serviceTitle={

src/login/shared/getReferrerUrl.ts

Lines changed: 0 additions & 26 deletions
This file was deleted.

src/login/shared/redirectUrlOrigin.ts

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
2+
3+
const SESSION_STORAGE_KEY = "keycloak-theme-dsfr:redirectUriOrigin";
4+
5+
export const redirectUrlOrigin = ((): string =>{
6+
from_url: {
7+
const url = new URL(window.location.href);
8+
9+
const value = url.searchParams.get("redirect_url");
10+
11+
if (value === null) {
12+
// There was no &dark= query param in the URL,
13+
// so we check session storage next.
14+
break from_url;
15+
}
16+
17+
18+
const redirectUriOrigin = new URL(value).origin;
19+
20+
sessionStorage.setItem(SESSION_STORAGE_KEY, redirectUriOrigin);
21+
22+
return redirectUriOrigin;
23+
}
24+
25+
from_session_storage: {
26+
const redirectUriOrigin = sessionStorage.getItem(SESSION_STORAGE_KEY);
27+
28+
if (redirectUriOrigin === null) {
29+
break from_session_storage;
30+
}
31+
32+
return redirectUriOrigin;
33+
}
34+
35+
return "#";
36+
})();

0 commit comments

Comments
 (0)