diff --git a/src/account/Template.tsx b/src/account/Template.tsx index 33ccda82..9cacd729 100644 --- a/src/account/Template.tsx +++ b/src/account/Template.tsx @@ -1,5 +1,6 @@ import { useEffect } from "react"; import { clsx } from "keycloakify/tools/clsx"; +import { kcSanitize } from "keycloakify/lib/kcSanitize"; import { getKcClsx } from "keycloakify/account/lib/kcClsx"; import { useSetClassName } from "keycloakify/tools/useSetClassName"; import { useInitialize } from "keycloakify/account/Template.useInitialize"; @@ -126,7 +127,7 @@ export default function Template(props: TemplateProps) { diff --git a/src/account/pages/Totp.tsx b/src/account/pages/Totp.tsx index 7fc2ae65..e6d63d60 100644 --- a/src/account/pages/Totp.tsx +++ b/src/account/pages/Totp.tsx @@ -1,5 +1,6 @@ import { clsx } from "keycloakify/tools/clsx"; import { getKcClsx } from "keycloakify/account/lib/kcClsx"; +import { kcSanitize } from "keycloakify/lib/kcSanitize"; import type { PageProps } from "keycloakify/account/pages/PageProps"; import type { KcContext } from "../KcContext"; import type { I18n } from "../i18n"; @@ -159,7 +160,7 @@ export default function Totp(props: PageProps )} @@ -190,7 +191,7 @@ export default function Totp(props: PageProps )} diff --git a/src/login/Template.tsx b/src/login/Template.tsx index 6199839e..6f420ee8 100644 --- a/src/login/Template.tsx +++ b/src/login/Template.tsx @@ -1,5 +1,6 @@ import { useEffect } from "react"; import { clsx } from "keycloakify/tools/clsx"; +import { kcSanitize } from "keycloakify/lib/kcSanitize"; import type { TemplateProps } from "keycloakify/login/TemplateProps"; import { getKcClsx } from "keycloakify/login/lib/kcClsx"; import { useSetClassName } from "keycloakify/tools/useSetClassName"; @@ -145,7 +146,7 @@ export default function Template(props: TemplateProps) { diff --git a/src/login/i18n/withJsx/useI18n.tsx b/src/login/i18n/withJsx/useI18n.tsx index 8ddaca9e..e9999301 100644 --- a/src/login/i18n/withJsx/useI18n.tsx +++ b/src/login/i18n/withJsx/useI18n.tsx @@ -1,4 +1,5 @@ import { useEffect, useState } from "react"; +import { kcSanitize } from "keycloakify/lib/kcSanitize"; import { createGetI18n, type KcContextLike } from "../noJsx/getI18n"; import type { GenericI18n_noJsx } from "../noJsx/GenericI18n_noJsx"; import { Reflect } from "tsafe/Reflect"; @@ -50,7 +51,7 @@ export function createUseI18n<
); diff --git a/src/login/lib/useUserProfileForm.tsx b/src/login/lib/useUserProfileForm.tsx index 4e3ff1d2..3dfce1b9 100644 --- a/src/login/lib/useUserProfileForm.tsx +++ b/src/login/lib/useUserProfileForm.tsx @@ -3,6 +3,7 @@ import { useMemo, useReducer, useEffect, Fragment, type Dispatch } from "react"; import { assert, type Equals } from "tsafe/assert"; import { id } from "tsafe/id"; import { structuredCloneButFunctions } from "keycloakify/tools/structuredCloneButFunctions"; +import { kcSanitize } from "keycloakify/lib/kcSanitize"; import { useConstCallback } from "keycloakify/tools/useConstCallback"; import { emailRegexp } from "keycloakify/tools/emailRegExp"; import { formatNumber } from "keycloakify/tools/formatNumber"; @@ -661,7 +662,7 @@ function useGetErrors(params: { kcContext: KcContextLike_useGetErrors; i18n: I18 ), diff --git a/src/login/pages/Error.tsx b/src/login/pages/Error.tsx index 4b2879eb..a7d3d689 100644 --- a/src/login/pages/Error.tsx +++ b/src/login/pages/Error.tsx @@ -1,4 +1,5 @@ import type { PageProps } from "keycloakify/login/pages/PageProps"; +import { kcSanitize } from "keycloakify/lib/kcSanitize"; import type { KcContext } from "../KcContext"; import type { I18n } from "../i18n"; @@ -19,7 +20,7 @@ export default function Error(props: PageProps
-

+

{!skipLink && client !== undefined && client.baseUrl !== undefined && (

diff --git a/src/login/pages/Info.tsx b/src/login/pages/Info.tsx index 8573d634..cd2e4405 100644 --- a/src/login/pages/Info.tsx +++ b/src/login/pages/Info.tsx @@ -1,4 +1,5 @@ import type { PageProps } from "keycloakify/login/pages/PageProps"; +import { kcSanitize } from "keycloakify/lib/kcSanitize"; import type { KcContext } from "../KcContext"; import type { I18n } from "../i18n"; @@ -19,7 +20,7 @@ export default function Info(props: PageProps } @@ -28,19 +29,21 @@ export default function Info(props: PageProps { - let html = message.summary; + __html: kcSanitize( + (() => { + let html = message.summary; - if (requiredActions) { - html += ""; + if (requiredActions) { + html += ""; - html += requiredActions.map(requiredAction => advancedMsgStr(`requiredAction.${requiredAction}`)).join(", "); + html += requiredActions.map(requiredAction => advancedMsgStr(`requiredAction.${requiredAction}`)).join(", "); - html += ""; - } + html += ""; + } - return html; - })() + return html; + })() + ) }} /> {(() => { diff --git a/src/login/pages/Login.tsx b/src/login/pages/Login.tsx index d8164676..3150a0e2 100644 --- a/src/login/pages/Login.tsx +++ b/src/login/pages/Login.tsx @@ -1,4 +1,5 @@ import { useState, useEffect, useReducer } from "react"; +import { kcSanitize } from "keycloakify/lib/kcSanitize"; import { assert } from "keycloakify/tools/assert"; import { clsx } from "keycloakify/tools/clsx"; import type { PageProps } from "keycloakify/login/pages/PageProps"; @@ -62,7 +63,7 @@ export default function Login(props: PageProps @@ -111,7 +112,7 @@ export default function Login(props: PageProps )} @@ -139,7 +140,7 @@ export default function Login(props: PageProps )} diff --git a/src/login/pages/LoginConfigTotp.tsx b/src/login/pages/LoginConfigTotp.tsx index 917b3c6c..fe5ae6fc 100644 --- a/src/login/pages/LoginConfigTotp.tsx +++ b/src/login/pages/LoginConfigTotp.tsx @@ -1,4 +1,5 @@ import { getKcClsx, KcClsx } from "keycloakify/login/lib/kcClsx"; +import { kcSanitize } from "keycloakify/lib/kcSanitize"; import type { PageProps } from "keycloakify/login/pages/PageProps"; import type { KcContext } from "../KcContext"; import type { I18n } from "../i18n"; @@ -117,7 +118,7 @@ export default function LoginConfigTotp(props: PageProps )} @@ -148,7 +149,7 @@ export default function LoginConfigTotp(props: PageProps )} diff --git a/src/login/pages/LoginOtp.tsx b/src/login/pages/LoginOtp.tsx index b3631b18..a8e3b02a 100644 --- a/src/login/pages/LoginOtp.tsx +++ b/src/login/pages/LoginOtp.tsx @@ -1,5 +1,6 @@ import { Fragment } from "react"; import { getKcClsx } from "keycloakify/login/lib/kcClsx"; +import { kcSanitize } from "keycloakify/lib/kcSanitize"; import type { PageProps } from "keycloakify/login/pages/PageProps"; import type { KcContext } from "../KcContext"; import type { I18n } from "../i18n"; @@ -75,7 +76,7 @@ export default function LoginOtp(props: PageProps )} diff --git a/src/login/pages/LoginPassword.tsx b/src/login/pages/LoginPassword.tsx index 19df690b..2545b6e2 100644 --- a/src/login/pages/LoginPassword.tsx +++ b/src/login/pages/LoginPassword.tsx @@ -1,4 +1,5 @@ import { useState, useEffect, useReducer } from "react"; +import { kcSanitize } from "keycloakify/lib/kcSanitize"; import { clsx } from "keycloakify/tools/clsx"; import { assert } from "keycloakify/tools/assert"; import { getKcClsx, type KcClsx } from "keycloakify/login/lib/kcClsx"; @@ -65,7 +66,7 @@ export default function LoginPassword(props: PageProps )} diff --git a/src/login/pages/LoginRecoveryAuthnCodeInput.tsx b/src/login/pages/LoginRecoveryAuthnCodeInput.tsx index 9a529c55..c0684474 100644 --- a/src/login/pages/LoginRecoveryAuthnCodeInput.tsx +++ b/src/login/pages/LoginRecoveryAuthnCodeInput.tsx @@ -1,4 +1,5 @@ import { getKcClsx } from "keycloakify/login/lib/kcClsx"; +import { kcSanitize } from "keycloakify/lib/kcSanitize"; import type { PageProps } from "keycloakify/login/pages/PageProps"; import type { KcContext } from "../KcContext"; import type { I18n } from "../i18n"; @@ -48,7 +49,7 @@ export default function LoginRecoveryAuthnCodeInput(props: PageProps )} diff --git a/src/login/pages/LoginResetPassword.tsx b/src/login/pages/LoginResetPassword.tsx index a4fdcc2a..cf50ac4a 100644 --- a/src/login/pages/LoginResetPassword.tsx +++ b/src/login/pages/LoginResetPassword.tsx @@ -1,4 +1,5 @@ import { getKcClsx } from "keycloakify/login/lib/kcClsx"; +import { kcSanitize } from "keycloakify/lib/kcSanitize"; import type { PageProps } from "keycloakify/login/pages/PageProps"; import type { KcContext } from "../KcContext"; import type { I18n } from "../i18n"; @@ -53,7 +54,7 @@ export default function LoginResetPassword(props: PageProps )} diff --git a/src/login/pages/LoginUpdatePassword.tsx b/src/login/pages/LoginUpdatePassword.tsx index fb8d834f..baa8b38f 100644 --- a/src/login/pages/LoginUpdatePassword.tsx +++ b/src/login/pages/LoginUpdatePassword.tsx @@ -1,4 +1,5 @@ import { useEffect, useReducer } from "react"; +import { kcSanitize } from "keycloakify/lib/kcSanitize"; import { assert } from "keycloakify/tools/assert"; import { getKcClsx, type KcClsx } from "keycloakify/login/lib/kcClsx"; import type { PageProps } from "keycloakify/login/pages/PageProps"; @@ -52,7 +53,7 @@ export default function LoginUpdatePassword(props: PageProps )} @@ -84,7 +85,7 @@ export default function LoginUpdatePassword(props: PageProps )} diff --git a/src/login/pages/Register.tsx b/src/login/pages/Register.tsx index b8c05327..e3948550 100644 --- a/src/login/pages/Register.tsx +++ b/src/login/pages/Register.tsx @@ -1,5 +1,6 @@ import { useState } from "react"; import type { LazyOrNot } from "keycloakify/tools/LazyOrNot"; +import { kcSanitize } from "keycloakify/lib/kcSanitize"; import { getKcClsx, type KcClsx } from "keycloakify/login/lib/kcClsx"; import { clsx } from "keycloakify/tools/clsx"; import type { UserProfileFormFieldsProps } from "keycloakify/login/UserProfileFormFieldsProps"; @@ -145,7 +146,7 @@ function TermsAcceptance(props: { className={kcClsx("kcInputErrorMessageClass")} aria-live="polite" dangerouslySetInnerHTML={{ - __html: messagesPerField.get("termsAccepted") + __html: kcSanitize(messagesPerField.get("termsAccepted")) }} />