keycloakify 10.0.0-rc.21 → 10.0.0-rc.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -46,16 +46,31 @@ export type GenericI18n<MessageKey extends string> = {
46
46
  */
47
47
  msgStr: (key: MessageKey, ...args: (string | undefined)[]) => string;
48
48
  /**
49
+ * This is meant to be used when the key argument is variable, something that might have been configured by the user
50
+ * in the Keycloak admin for example.
51
+ *
49
52
  * Examples assuming currentLanguageTag === "en"
50
- * advancedMsg("${access-denied} foo bar") === <span>${msgStr("access-denied")} foo bar<span> === <span>Access denied foo bar</span>
53
+ * {
54
+ * en: {
55
+ * "access-denied": "Access denied",
56
+ * "foo": "Foo {0} {1}",
57
+ * "bar": "Bar {0}"
58
+ * }
59
+ * }
60
+ *
61
+ * advancedMsg("${access-denied} foo bar") === <span>{msgStr("access-denied")} foo bar<span> === <span>Access denied foo bar</span>
51
62
  * advancedMsg("${access-denied}") === advancedMsg("access-denied") === msg("access-denied") === <span>Access denied</span>
52
63
  * advancedMsg("${not-a-message-key}") === advancedMsg(not-a-message-key") === <span>not-a-message-key</span>
64
+ * advancedMsg("${bar}", "<strong>c</strong>")
65
+ * === <span>{msgStr("bar", "<strong>XXX</strong>")}<span>
66
+ * === <span>Bar &lt;strong&gt;XXX&lt;/strong&gt;</span> (The html in the arg is partially escaped for security reasons, it might be untrusted)
67
+ * advancedMsg("${foo} xx ${bar}", "a", "b", "c")
68
+ * === <span>{msgStr("foo", "a", "b")} xx {msgStr("bar")}<span>
69
+ * === <span>Foo a b xx Bar {0}</span> (The substitution are only applied in the first message)
53
70
  */
54
71
  advancedMsg: (key: string, ...args: (string | undefined)[]) => JSX.Element;
55
72
  /**
56
- * Examples assuming currentLanguageTag === "en"
57
- * advancedMsg("${access-denied} foo bar") === msg("access-denied") + " foo bar" === "Access denied foo bar"
58
- * advancedMsg("${not-a-message-key}") === advancedMsg(not-a-message-key") === "not-a-message-key"
73
+ * See advancedMsg() but instead of returning a JSX.Element it returns a string.
59
74
  */
60
75
  advancedMsgStr: (key: string, ...args: (string | undefined)[]) => string;
61
76
  };
@@ -1,11 +1,9 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import "minimal-polyfills/Object.fromEntries";
3
- //NOTE for later: https://github.com/remarkjs/react-markdown/blob/236182ecf30bd89c1e5a7652acaf8d0bf81e6170/src/renderers.js#L7-L35
4
3
  import { useEffect, useState, useRef } from "react";
5
4
  import fallbackMessages from "./baseMessages/en";
6
5
  import { getMessages } from "./baseMessages";
7
6
  import { assert } from "tsafe/assert";
8
- import { Markdown } from "../../tools/Markdown";
9
7
  export const fallbackLanguageTag = "en";
10
8
  assert();
11
9
  export function createUseI18n(extraMessages) {
@@ -41,7 +39,7 @@ function createI18nTranslationFunctions(params) {
41
39
  const { fallbackMessages, messages } = params;
42
40
  function resolveMsg(props) {
43
41
  var _a;
44
- const { key, args, doRenderMarkdown } = props;
42
+ const { key, args, doRenderAsHtml } = props;
45
43
  const messageOrUndefined = (_a = messages[key]) !== null && _a !== void 0 ? _a : fallbackMessages[key];
46
44
  if (messageOrUndefined === undefined) {
47
45
  return undefined;
@@ -60,35 +58,46 @@ function createI18nTranslationFunctions(params) {
60
58
  if (arg === undefined) {
61
59
  return;
62
60
  }
63
- messageWithArgsInjected = messageWithArgsInjected.replace(new RegExp(`\\{${i + startIndex}\\}`, "g"), arg);
61
+ messageWithArgsInjected = messageWithArgsInjected.replace(new RegExp(`\\{${i + startIndex}\\}`, "g"), arg.replace(/</g, "&lt;").replace(/>/g, "&gt;"));
64
62
  });
65
63
  return messageWithArgsInjected;
66
64
  })();
67
- return doRenderMarkdown ? (_jsx(Markdown, { allowDangerousHtml: true, renderers: { paragraph: "span" }, children: messageWithArgsInjectedIfAny })) : (messageWithArgsInjectedIfAny);
65
+ return doRenderAsHtml ? (_jsx("span", {
66
+ // NOTE: The message is trusted. The arguments are not but are escaped.
67
+ dangerouslySetInnerHTML: {
68
+ __html: messageWithArgsInjectedIfAny
69
+ } })) : (messageWithArgsInjectedIfAny);
68
70
  }
69
71
  function resolveMsgAdvanced(props) {
70
- const { key, args, doRenderMarkdown } = props;
71
- const match = key.match(/^\$\{([^{]+)\}$/);
72
- const keyUnwrappedFromCurlyBraces = match === null ? key : match[1];
73
- const out = resolveMsg({
74
- key: keyUnwrappedFromCurlyBraces,
75
- args,
76
- doRenderMarkdown
72
+ const { key, args, doRenderAsHtml } = props;
73
+ if (!/\$\{[^}]+\}/.test(key)) {
74
+ const resolvedMessage = resolveMsg({ key, args, doRenderAsHtml });
75
+ if (resolvedMessage === undefined) {
76
+ return doRenderAsHtml ? _jsx("span", { dangerouslySetInnerHTML: { __html: key } }) : key;
77
+ }
78
+ return resolvedMessage;
79
+ }
80
+ let isFirstMatch = true;
81
+ const resolvedComplexMessage = key.replace(/\$\{([^}]+)\}/g, (...[, key_i]) => {
82
+ var _a;
83
+ const replaceBy = (_a = resolveMsg({ key: key_i, args: isFirstMatch ? args : [], doRenderAsHtml: false })) !== null && _a !== void 0 ? _a : key_i;
84
+ isFirstMatch = false;
85
+ return replaceBy;
77
86
  });
78
- return (out !== undefined ? out : doRenderMarkdown ? _jsx("span", { children: keyUnwrappedFromCurlyBraces }) : keyUnwrappedFromCurlyBraces);
87
+ return doRenderAsHtml ? _jsx("span", { dangerouslySetInnerHTML: { __html: resolvedComplexMessage } }) : resolvedComplexMessage;
79
88
  }
80
89
  return {
81
- msgStr: (key, ...args) => resolveMsg({ key, args, doRenderMarkdown: false }),
82
- msg: (key, ...args) => resolveMsg({ key, args, doRenderMarkdown: true }),
90
+ msgStr: (key, ...args) => resolveMsg({ key, args, doRenderAsHtml: false }),
91
+ msg: (key, ...args) => resolveMsg({ key, args, doRenderAsHtml: true }),
83
92
  advancedMsg: (key, ...args) => resolveMsgAdvanced({
84
93
  key,
85
94
  args,
86
- doRenderMarkdown: true
95
+ doRenderAsHtml: true
87
96
  }),
88
97
  advancedMsgStr: (key, ...args) => resolveMsgAdvanced({
89
98
  key,
90
99
  args,
91
- doRenderMarkdown: false
100
+ doRenderAsHtml: false
92
101
  })
93
102
  };
94
103
  }
@@ -1 +1 @@
1
- {"version":3,"file":"i18n.js","sourceRoot":"","sources":["../../src/account/i18n/i18n.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"i18n.js","sourceRoot":"","sources":["../../src/account/i18n/i18n.tsx"],"names":[],"mappings":";AAAA,OAAO,sCAAsC,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,gBAAgB,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAGtC,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAC;AASxC,MAAM,EAAkD,CAAC;AAoEzD,MAAM,UAAU,aAAa,CAAyC,aAErE;IACG,SAAS,OAAO,CAAC,MAAoC;QACjD,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;QAE7B,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAwD,SAAS,CAAC,CAAC;QAEnG,MAAM,qBAAqB,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAE5C,SAAS,CAAC,GAAG,EAAE;YACX,IAAI,qBAAqB,CAAC,OAAO,EAAE,CAAC;gBAChC,OAAO;YACX,CAAC;YAED,qBAAqB,CAAC,OAAO,GAAG,IAAI,CAAC;YAErC,CAAC,KAAK,IAAI,EAAE;;gBACR,MAAM,EAAE,kBAAkB,GAAG,mBAAmB,EAAE,GAAG,MAAA,SAAS,CAAC,MAAM,mCAAI,EAAE,CAAC;gBAE5E,OAAO,iCACA,8BAA8B,CAAC;oBAC9B,gBAAgB,EAAE,8CACX,gBAAgB,GAChB,CAAC,MAAA,wBAAwB,CAAC,mBAAmB,CAAC,mCAAI,EAAE,CAAC,GACrD,CAAC,MAAA,aAAa,CAAC,mBAAmB,CAAC,mCAAI,EAAE,CAAC,CACzC;oBACR,QAAQ,EAAE,8CACH,CAAC,MAAM,WAAW,CAAC,kBAAkB,CAAC,CAAC,GACvC,CAAC,MAAC,wBAAgC,CAAC,kBAAkB,CAAC,mCAAI,EAAE,CAAC,GAC7D,CAAC,MAAA,aAAa,CAAC,kBAAkB,CAAC,mCAAI,EAAE,CAAC,CACxC;iBACX,CAAC,KACF,kBAAkB,EAClB,iBAAiB,EAAE,cAAc,CAAC,EAAE;wBAChC,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;wBAE7B,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,kCAAkC,CAAC,CAAC;wBAEjE,MAAM,qBAAqB,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,WAAW,KAAK,cAAc,CAAC,CAAC;wBAEzG,MAAM,CAAC,qBAAqB,KAAK,SAAS,EAAE,GAAG,cAAc,uCAAuC,CAAC,CAAC;wBAEtG,OAAO,qBAAqB,CAAC,GAAG,CAAC;oBACrC,CAAC,EACD,2BAA2B,EAAE,MAAM,CAAC,WAAW,CAC3C,CAAC,MAAA,MAAA,SAAS,CAAC,MAAM,0CAAE,SAAS,mCAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAC5F,IACH,CAAC;YACP,CAAC,CAAC,EAAE,CAAC;QACT,CAAC,EAAE,EAAE,CAAC,CAAC;QAEP,OAAO,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,IAAI,CAAC;IACxB,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,CAAC;AACvB,CAAC;AAED,SAAS,8BAA8B,CAA4B,MAGlE;IACG,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;IAE9C,SAAS,UAAU,CAAC,KAA6E;;QAC7F,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC;QAE5C,MAAM,kBAAkB,GAAuB,MAAC,QAAgB,CAAC,GAAG,CAAC,mCAAK,gBAAwB,CAAC,GAAG,CAAC,CAAC;QAExG,IAAI,kBAAkB,KAAK,SAAS,EAAE,CAAC;YACnC,OAAO,SAAS,CAAC;QACrB,CAAC;QAED,MAAM,OAAO,GAAG,kBAAkB,CAAC;QAEnC,MAAM,4BAA4B,GAAG,CAAC,GAAG,EAAE;;YACvC,MAAM,UAAU,GAAG,MAAA,OAAO;iBACrB,KAAK,CAAC,WAAW,CAAC,0CACjB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAE,CAAC,CAAC,CAAC,EACnC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAClC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YAE9B,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;gBAC3B,4CAA4C;gBAC5C,OAAO,OAAO,CAAC;YACnB,CAAC;YAED,IAAI,uBAAuB,GAAG,OAAO,CAAC;YAEtC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;gBACpB,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;oBACpB,OAAO;gBACX,CAAC;gBAED,uBAAuB,GAAG,uBAAuB,CAAC,OAAO,CACrD,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,UAAU,KAAK,EAAE,GAAG,CAAC,EAC1C,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAClD,CAAC;YACN,CAAC,CAAC,CAAC;YAEH,OAAO,uBAAuB,CAAC;QACnC,CAAC,CAAC,EAAE,CAAC;QAEL,OAAO,cAAc,CAAC,CAAC,CAAC,CACpB;YACI,uEAAuE;YACvE,uBAAuB,EAAE;gBACrB,MAAM,EAAE,4BAA4B;aACvC,GACH,CACL,CAAC,CAAC,CAAC,CACA,4BAA4B,CAC/B,CAAC;IACN,CAAC;IAED,SAAS,kBAAkB,CAAC,KAA6E;QACrG,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC;QAE5C,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,eAAe,GAAG,UAAU,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;YAElE,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;gBAChC,OAAO,cAAc,CAAC,CAAC,CAAC,eAAM,uBAAuB,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,GAAI,CAAC,CAAC,CAAC,GAAG,CAAC;YACrF,CAAC;YAED,OAAO,eAAe,CAAC;QAC3B,CAAC;QAED,IAAI,YAAY,GAAG,IAAI,CAAC;QAExB,MAAM,sBAAsB,GAAG,GAAG,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE;;YAC1E,MAAM,SAAS,GAAG,MAAA,UAAU,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,mCAAI,KAAK,CAAC;YAE7G,YAAY,GAAG,KAAK,CAAC;YAErB,OAAO,SAAS,CAAC;QACrB,CAAC,CAAC,CAAC;QAEH,OAAO,cAAc,CAAC,CAAC,CAAC,eAAM,uBAAuB,EAAE,EAAE,MAAM,EAAE,sBAAsB,EAAE,GAAI,CAAC,CAAC,CAAC,sBAAsB,CAAC;IAC3H,CAAC;IAED,OAAO;QACH,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,CAAW;QACpF,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,CAAgB;QACrF,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,CAC1B,kBAAkB,CAAC;YACf,GAAG;YACH,IAAI;YACJ,cAAc,EAAE,IAAI;SACvB,CAAgB;QACrB,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,CAC7B,kBAAkB,CAAC;YACf,GAAG;YACH,IAAI;YACJ,cAAc,EAAE,KAAK;SACxB,CAAW;KACnB,CAAC;AACN,CAAC;AAED,MAAM,wBAAwB,GAAG;IAC7B,EAAE,EAAE;QACA,aAAa,EAAE,4BAA4B;QAC3C,iBAAiB,EAAE,gCAAgC;QACnD,kBAAkB,EAAE,+BAA+B;QACnD,eAAe,EAAE,oBAAoB;QACrC,eAAe,EAAE,oBAAoB;QACrC,oBAAoB,EAAE,iDAAiD;QACvE,uBAAuB,EAAE,sCAAsC;KAClE;IACD,EAAE,EAAE;QACA,4BAA4B;QAC5B,aAAa,EAAE,0BAA0B;QACzC,iBAAiB,EAAE,gCAAgC;QACnD,kBAAkB,EAAE,mCAAmC;QACvD,eAAe,EAAE,4BAA4B;QAC7C,eAAe,EAAE,6BAA6B;QAE9C,kBAAkB,EAAE,aAAa;QACjC,mBAAmB,EAAE,gDAAgD;QACrE,QAAQ,EAAE,gBAAgB;QAC1B,oBAAoB,EAAE,yDAAyD;QAC/E,uBAAuB,EAAE,mDAAmD;QAC5E,2BAA2B;KAC9B;CACJ,CAAC"}
@@ -9,12 +9,12 @@ export default function Totp(props) {
9
9
  classes
10
10
  });
11
11
  const { totp, mode, url, messagesPerField, stateChecker } = kcContext;
12
- const { msg, msgStr } = i18n;
12
+ const { msg, msgStr, advancedMsg } = i18n;
13
13
  const algToKeyUriAlg = {
14
14
  HmacSHA1: "SHA1",
15
15
  HmacSHA256: "SHA256",
16
16
  HmacSHA512: "SHA512"
17
17
  };
18
- return (_jsx(Template, { kcContext, i18n, doUseDefaultCss, classes, active: "totp", children: _jsxs(_Fragment, { children: [_jsxs("div", { className: "row", children: [_jsx("div", { className: "col-md-10", children: _jsx("h2", { children: msg("authenticatorTitle") }) }), totp.otpCredentials.length === 0 && (_jsxs("div", { className: "subtitle col-md-2", children: [_jsx("span", { className: "required", children: "*" }), msg("requiredFields")] }))] }), totp.enabled && (_jsxs("table", { className: "table table-bordered table-striped", children: [_jsx("thead", { children: totp.otpCredentials.length > 1 ? (_jsx("tr", { children: _jsx("th", { colSpan: 4, children: msg("configureAuthenticators") }) })) : (_jsx("tr", { children: _jsx("th", { colSpan: 3, children: msg("configureAuthenticators") }) })) }), _jsx("tbody", { children: totp.otpCredentials.map((credential, index) => (_jsxs("tr", { children: [_jsx("td", { className: "provider", children: msg("mobile") }), totp.otpCredentials.length > 1 && _jsx("td", { className: "provider", children: credential.id }), _jsx("td", { className: "provider", children: credential.userLabel || "" }), _jsx("td", { className: "action", children: _jsxs("form", { action: url.totpUrl, method: "post", className: "form-inline", children: [_jsx("input", { type: "hidden", id: "stateChecker", name: "stateChecker", value: stateChecker }), _jsx("input", { type: "hidden", id: "submitAction", name: "submitAction", value: "Delete" }), _jsx("input", { type: "hidden", id: "credentialId", name: "credentialId", value: credential.id }), _jsx("button", { id: `remove-mobile-${index}`, className: "btn btn-default", children: _jsx("i", { className: "pficon pficon-delete" }) })] }) })] }, index))) })] })), !totp.enabled && (_jsxs("div", { children: [_jsx("hr", {}), _jsxs("ol", { id: "kc-totp-settings", children: [_jsxs("li", { children: [_jsx("p", { children: msg("totpStep1") }), _jsx("ul", { id: "kc-totp-supported-apps", children: (_a = totp.supportedApplications) === null || _a === void 0 ? void 0 : _a.map(app => _jsx("li", { children: msg(app) }, app)) })] }), mode && mode == "manual" ? (_jsxs(_Fragment, { children: [_jsxs("li", { children: [_jsx("p", { children: msg("totpManualStep2") }), _jsx("p", { children: _jsx("span", { id: "kc-totp-secret-key", children: totp.totpSecretEncoded }) }), _jsx("p", { children: _jsx("a", { href: totp.qrUrl, id: "mode-barcode", children: msg("totpScanBarcode") }) })] }), _jsxs("li", { children: [_jsx("p", { children: msg("totpManualStep3") }), _jsxs("ul", { children: [_jsxs("li", { id: "kc-totp-type", children: [msg("totpType"), ": ", msg(`totp.${totp.policy.type}`)] }), _jsxs("li", { id: "kc-totp-algorithm", children: [msg("totpAlgorithm"), ": ", (_b = algToKeyUriAlg === null || algToKeyUriAlg === void 0 ? void 0 : algToKeyUriAlg[totp.policy.algorithm]) !== null && _b !== void 0 ? _b : totp.policy.algorithm] }), _jsxs("li", { id: "kc-totp-digits", children: [msg("totpDigits"), ": ", totp.policy.digits] }), totp.policy.type === "totp" ? (_jsxs("li", { id: "kc-totp-period", children: [msg("totpInterval"), ": ", totp.policy.period] })) : (_jsxs("li", { id: "kc-totp-counter", children: [msg("totpCounter"), ": ", totp.policy.initialCounter] }))] })] })] })) : (_jsxs("li", { children: [_jsx("p", { children: msg("totpStep2") }), _jsx("p", { children: _jsx("img", { id: "kc-totp-secret-qr-code", src: `data:image/png;base64, ${totp.totpSecretQrCode}`, alt: "Figure: Barcode" }) }), _jsx("p", { children: _jsx("a", { href: totp.manualUrl, id: "mode-manual", children: msg("totpUnableToScan") }) })] })), _jsxs("li", { children: [_jsx("p", { children: msg("totpStep3") }), _jsx("p", { children: msg("totpStep3DeviceName") })] })] }), _jsx("hr", {}), _jsxs("form", { action: url.totpUrl, className: getClassName("kcFormClass"), id: "kc-totp-settings-form", method: "post", children: [_jsx("input", { type: "hidden", id: "stateChecker", name: "stateChecker", value: stateChecker }), _jsxs("div", { className: getClassName("kcFormGroupClass"), children: [_jsxs("div", { className: "col-sm-2 col-md-2", children: [_jsx("label", { htmlFor: "totp", className: "control-label", children: msg("authenticatorCode") }), _jsx("span", { className: "required", children: "*" })] }), _jsxs("div", { className: "col-sm-10 col-md-10", children: [_jsx("input", { type: "text", id: "totp", name: "totp", autoComplete: "off", className: getClassName("kcInputClass"), "aria-invalid": messagesPerField.existsError("totp") }), messagesPerField.existsError("totp") && (_jsx("span", { id: "input-error-otp-code", className: getClassName("kcInputErrorMessageClass"), "aria-live": "polite", children: messagesPerField.get("totp") }))] }), _jsx("input", { type: "hidden", id: "totpSecret", name: "totpSecret", value: totp.totpSecret }), mode && _jsx("input", { type: "hidden", id: "mode", value: mode })] }), _jsxs("div", { className: getClassName("kcFormGroupClass"), children: [_jsxs("div", { className: "col-sm-2 col-md-2", children: [_jsx("label", { htmlFor: "userLabel", className: getClassName("kcLabelClass"), children: msg("totpDeviceName") }), totp.otpCredentials.length >= 1 && _jsx("span", { className: "required", children: "*" })] }), _jsxs("div", { className: "col-sm-10 col-md-10", children: [_jsx("input", { type: "text", id: "userLabel", name: "userLabel", autoComplete: "off", className: getClassName("kcInputClass"), "aria-invalid": messagesPerField.existsError("userLabel") }), messagesPerField.existsError("userLabel") && (_jsx("span", { id: "input-error-otp-label", className: getClassName("kcInputErrorMessageClass"), "aria-live": "polite", children: messagesPerField.get("userLabel") }))] })] }), _jsx("div", { id: "kc-form-buttons", className: clsx(getClassName("kcFormGroupClass"), "text-right"), children: _jsxs("div", { className: getClassName("kcInputWrapperClass"), children: [_jsx("input", { type: "submit", className: clsx(getClassName("kcButtonClass"), getClassName("kcButtonPrimaryClass"), getClassName("kcButtonLargeClass")), id: "saveTOTPBtn", value: msgStr("doSave") }), _jsx("button", { type: "submit", className: clsx(getClassName("kcButtonClass"), getClassName("kcButtonDefaultClass"), getClassName("kcButtonLargeClass"), getClassName("kcButtonLargeClass")), id: "cancelTOTPBtn", name: "submitAction", value: "Cancel", children: msg("doCancel") })] }) })] })] }))] }) }));
18
+ return (_jsx(Template, { kcContext, i18n, doUseDefaultCss, classes, active: "totp", children: _jsxs(_Fragment, { children: [_jsxs("div", { className: "row", children: [_jsx("div", { className: "col-md-10", children: _jsx("h2", { children: msg("authenticatorTitle") }) }), totp.otpCredentials.length === 0 && (_jsxs("div", { className: "subtitle col-md-2", children: [_jsx("span", { className: "required", children: "*" }), msg("requiredFields")] }))] }), totp.enabled && (_jsxs("table", { className: "table table-bordered table-striped", children: [_jsx("thead", { children: totp.otpCredentials.length > 1 ? (_jsx("tr", { children: _jsx("th", { colSpan: 4, children: msg("configureAuthenticators") }) })) : (_jsx("tr", { children: _jsx("th", { colSpan: 3, children: msg("configureAuthenticators") }) })) }), _jsx("tbody", { children: totp.otpCredentials.map((credential, index) => (_jsxs("tr", { children: [_jsx("td", { className: "provider", children: msg("mobile") }), totp.otpCredentials.length > 1 && _jsx("td", { className: "provider", children: credential.id }), _jsx("td", { className: "provider", children: credential.userLabel || "" }), _jsx("td", { className: "action", children: _jsxs("form", { action: url.totpUrl, method: "post", className: "form-inline", children: [_jsx("input", { type: "hidden", id: "stateChecker", name: "stateChecker", value: stateChecker }), _jsx("input", { type: "hidden", id: "submitAction", name: "submitAction", value: "Delete" }), _jsx("input", { type: "hidden", id: "credentialId", name: "credentialId", value: credential.id }), _jsx("button", { id: `remove-mobile-${index}`, className: "btn btn-default", children: _jsx("i", { className: "pficon pficon-delete" }) })] }) })] }, index))) })] })), !totp.enabled && (_jsxs("div", { children: [_jsx("hr", {}), _jsxs("ol", { id: "kc-totp-settings", children: [_jsxs("li", { children: [_jsx("p", { children: msg("totpStep1") }), _jsx("ul", { id: "kc-totp-supported-apps", children: (_a = totp.supportedApplications) === null || _a === void 0 ? void 0 : _a.map(app => _jsx("li", { children: advancedMsg(app) }, app)) })] }), mode && mode == "manual" ? (_jsxs(_Fragment, { children: [_jsxs("li", { children: [_jsx("p", { children: msg("totpManualStep2") }), _jsx("p", { children: _jsx("span", { id: "kc-totp-secret-key", children: totp.totpSecretEncoded }) }), _jsx("p", { children: _jsx("a", { href: totp.qrUrl, id: "mode-barcode", children: msg("totpScanBarcode") }) })] }), _jsxs("li", { children: [_jsx("p", { children: msg("totpManualStep3") }), _jsxs("ul", { children: [_jsxs("li", { id: "kc-totp-type", children: [msg("totpType"), ": ", msg(`totp.${totp.policy.type}`)] }), _jsxs("li", { id: "kc-totp-algorithm", children: [msg("totpAlgorithm"), ": ", (_b = algToKeyUriAlg === null || algToKeyUriAlg === void 0 ? void 0 : algToKeyUriAlg[totp.policy.algorithm]) !== null && _b !== void 0 ? _b : totp.policy.algorithm] }), _jsxs("li", { id: "kc-totp-digits", children: [msg("totpDigits"), ": ", totp.policy.digits] }), totp.policy.type === "totp" ? (_jsxs("li", { id: "kc-totp-period", children: [msg("totpInterval"), ": ", totp.policy.period] })) : (_jsxs("li", { id: "kc-totp-counter", children: [msg("totpCounter"), ": ", totp.policy.initialCounter] }))] })] })] })) : (_jsxs("li", { children: [_jsx("p", { children: msg("totpStep2") }), _jsx("p", { children: _jsx("img", { id: "kc-totp-secret-qr-code", src: `data:image/png;base64, ${totp.totpSecretQrCode}`, alt: "Figure: Barcode" }) }), _jsx("p", { children: _jsx("a", { href: totp.manualUrl, id: "mode-manual", children: msg("totpUnableToScan") }) })] })), _jsxs("li", { children: [_jsx("p", { children: msg("totpStep3") }), _jsx("p", { children: msg("totpStep3DeviceName") })] })] }), _jsx("hr", {}), _jsxs("form", { action: url.totpUrl, className: getClassName("kcFormClass"), id: "kc-totp-settings-form", method: "post", children: [_jsx("input", { type: "hidden", id: "stateChecker", name: "stateChecker", value: stateChecker }), _jsxs("div", { className: getClassName("kcFormGroupClass"), children: [_jsxs("div", { className: "col-sm-2 col-md-2", children: [_jsx("label", { htmlFor: "totp", className: "control-label", children: msg("authenticatorCode") }), _jsx("span", { className: "required", children: "*" })] }), _jsxs("div", { className: "col-sm-10 col-md-10", children: [_jsx("input", { type: "text", id: "totp", name: "totp", autoComplete: "off", className: getClassName("kcInputClass"), "aria-invalid": messagesPerField.existsError("totp") }), messagesPerField.existsError("totp") && (_jsx("span", { id: "input-error-otp-code", className: getClassName("kcInputErrorMessageClass"), "aria-live": "polite", children: messagesPerField.get("totp") }))] }), _jsx("input", { type: "hidden", id: "totpSecret", name: "totpSecret", value: totp.totpSecret }), mode && _jsx("input", { type: "hidden", id: "mode", value: mode })] }), _jsxs("div", { className: getClassName("kcFormGroupClass"), children: [_jsxs("div", { className: "col-sm-2 col-md-2", children: [_jsx("label", { htmlFor: "userLabel", className: getClassName("kcLabelClass"), children: msg("totpDeviceName") }), totp.otpCredentials.length >= 1 && _jsx("span", { className: "required", children: "*" })] }), _jsxs("div", { className: "col-sm-10 col-md-10", children: [_jsx("input", { type: "text", id: "userLabel", name: "userLabel", autoComplete: "off", className: getClassName("kcInputClass"), "aria-invalid": messagesPerField.existsError("userLabel") }), messagesPerField.existsError("userLabel") && (_jsx("span", { id: "input-error-otp-label", className: getClassName("kcInputErrorMessageClass"), "aria-live": "polite", children: messagesPerField.get("userLabel") }))] })] }), _jsx("div", { id: "kc-form-buttons", className: clsx(getClassName("kcFormGroupClass"), "text-right"), children: _jsxs("div", { className: getClassName("kcInputWrapperClass"), children: [_jsx("input", { type: "submit", className: clsx(getClassName("kcButtonClass"), getClassName("kcButtonPrimaryClass"), getClassName("kcButtonLargeClass")), id: "saveTOTPBtn", value: msgStr("doSave") }), _jsx("button", { type: "submit", className: clsx(getClassName("kcButtonClass"), getClassName("kcButtonDefaultClass"), getClassName("kcButtonLargeClass"), getClassName("kcButtonLargeClass")), id: "cancelTOTPBtn", name: "submitAction", value: "Cancel", children: msg("doCancel") })] }) })] })] }))] }) }));
19
19
  }
20
20
  //# sourceMappingURL=Totp.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Totp.js","sourceRoot":"","sources":["../../src/account/pages/Totp.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Totp.js","sourceRoot":"","sources":["../../src/account/pages/Totp.tsx"],"names":[],"mappings":"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"}
@@ -47,16 +47,31 @@ export type GenericI18n<MessageKey extends string> = {
47
47
  */
48
48
  msgStr: (key: MessageKey, ...args: (string | undefined)[]) => string;
49
49
  /**
50
+ * This is meant to be used when the key argument is variable, something that might have been configured by the user
51
+ * in the Keycloak admin for example.
52
+ *
50
53
  * Examples assuming currentLanguageTag === "en"
51
- * advancedMsg("${access-denied} foo bar") === <span>${msgStr("access-denied")} foo bar<span> === <span>Access denied foo bar</span>
54
+ * {
55
+ * en: {
56
+ * "access-denied": "Access denied",
57
+ * "foo": "Foo {0} {1}",
58
+ * "bar": "Bar {0}"
59
+ * }
60
+ * }
61
+ *
62
+ * advancedMsg("${access-denied} foo bar") === <span>{msgStr("access-denied")} foo bar<span> === <span>Access denied foo bar</span>
52
63
  * advancedMsg("${access-denied}") === advancedMsg("access-denied") === msg("access-denied") === <span>Access denied</span>
53
64
  * advancedMsg("${not-a-message-key}") === advancedMsg(not-a-message-key") === <span>not-a-message-key</span>
65
+ * advancedMsg("${bar}", "<strong>c</strong>")
66
+ * === <span>{msgStr("bar", "<strong>XXX</strong>")}<span>
67
+ * === <span>Bar &lt;strong&gt;XXX&lt;/strong&gt;</span> (The html in the arg is partially escaped for security reasons, it might be untrusted)
68
+ * advancedMsg("${foo} xx ${bar}", "a", "b", "c")
69
+ * === <span>{msgStr("foo", "a", "b")} xx {msgStr("bar")}<span>
70
+ * === <span>Foo a b xx Bar {0}</span> (The substitution are only applied in the first message)
54
71
  */
55
72
  advancedMsg: (key: string, ...args: (string | undefined)[]) => JSX.Element;
56
73
  /**
57
- * Examples assuming currentLanguageTag === "en"
58
- * advancedMsg("${access-denied} foo bar") === msg("access-denied") + " foo bar" === "Access denied foo bar"
59
- * advancedMsg("${not-a-message-key}") === advancedMsg("not-a-message-key") === "not-a-message-key"
74
+ * See advancedMsg() but instead of returning a JSX.Element it returns a string.
60
75
  */
61
76
  advancedMsgStr: (key: string, ...args: (string | undefined)[]) => string;
62
77
  };
@@ -37,7 +37,7 @@ export function createUseI18n(extraMessages) {
37
37
  return { useI18n };
38
38
  }
39
39
  function createI18nTranslationFunctions(params) {
40
- const { fallbackMessages, messages /*__localizationRealmOverridesUserProfile*/ } = params;
40
+ const { fallbackMessages, messages, __localizationRealmOverridesUserProfile } = params;
41
41
  function resolveMsg(props) {
42
42
  var _a;
43
43
  const { key, args, doRenderAsHtml } = props;
@@ -71,22 +71,29 @@ function createI18nTranslationFunctions(params) {
71
71
  }
72
72
  function resolveMsgAdvanced(props) {
73
73
  const { key, args, doRenderAsHtml } = props;
74
- // TODO:
75
- /*
76
- if( key in __localizationRealmOverridesUserProfile ){
77
-
78
-
79
-
74
+ if (key in __localizationRealmOverridesUserProfile) {
75
+ const resolvedMessage = __localizationRealmOverridesUserProfile[key];
76
+ return doRenderAsHtml ? (_jsx("span", {
77
+ // NOTE: The message is trusted. The arguments are not but are escaped.
78
+ dangerouslySetInnerHTML: {
79
+ __html: resolvedMessage
80
+ } })) : (resolvedMessage);
80
81
  }
81
- */
82
- const match = key.match(/^\$\{([^{]+)\}$/);
83
- const keyUnwrappedFromCurlyBraces = match === null ? key : match[1];
84
- const out = resolveMsg({
85
- key: keyUnwrappedFromCurlyBraces,
86
- args,
87
- doRenderAsHtml
82
+ if (!/\$\{[^}]+\}/.test(key)) {
83
+ const resolvedMessage = resolveMsg({ key, args, doRenderAsHtml });
84
+ if (resolvedMessage === undefined) {
85
+ return doRenderAsHtml ? _jsx("span", { dangerouslySetInnerHTML: { __html: key } }) : key;
86
+ }
87
+ return resolvedMessage;
88
+ }
89
+ let isFirstMatch = true;
90
+ const resolvedComplexMessage = key.replace(/\$\{([^}]+)\}/g, (...[, key_i]) => {
91
+ var _a;
92
+ const replaceBy = (_a = resolveMsg({ key: key_i, args: isFirstMatch ? args : [], doRenderAsHtml: false })) !== null && _a !== void 0 ? _a : key_i;
93
+ isFirstMatch = false;
94
+ return replaceBy;
88
95
  });
89
- return (out !== undefined ? out : doRenderAsHtml ? _jsx("span", { children: keyUnwrappedFromCurlyBraces }) : keyUnwrappedFromCurlyBraces);
96
+ return doRenderAsHtml ? _jsx("span", { dangerouslySetInnerHTML: { __html: resolvedComplexMessage } }) : resolvedComplexMessage;
90
97
  }
91
98
  return {
92
99
  msgStr: (key, ...args) => resolveMsg({ key, args, doRenderAsHtml: false }),
@@ -1 +1 @@
1
- {"version":3,"file":"i18n.js","sourceRoot":"","sources":["../../src/login/i18n/i18n.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"i18n.js","sourceRoot":"","sources":["../../src/login/i18n/i18n.tsx"],"names":[],"mappings":";AAAA,OAAO,sCAAsC,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,gBAAgB,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAGtC,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAC;AAUxC,MAAM,EAAkD,CAAC;AAoEzD,MAAM,UAAU,aAAa,CAAyC,aAErE;IACG,SAAS,OAAO,CAAC,MAAoC;QACjD,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;QAE7B,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAwD,SAAS,CAAC,CAAC;QAEnG,MAAM,qBAAqB,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAE5C,SAAS,CAAC,GAAG,EAAE;YACX,IAAI,qBAAqB,CAAC,OAAO,EAAE,CAAC;gBAChC,OAAO;YACX,CAAC;YAED,qBAAqB,CAAC,OAAO,GAAG,IAAI,CAAC;YAErC,CAAC,KAAK,IAAI,EAAE;;gBACR,MAAM,EAAE,kBAAkB,GAAG,mBAAmB,EAAE,GAAG,MAAA,SAAS,CAAC,MAAM,mCAAI,EAAE,CAAC;gBAE5E,OAAO,iCACA,8BAA8B,CAAC;oBAC9B,gBAAgB,EAAE,8CACX,gBAAgB,GAChB,CAAC,MAAA,wBAAwB,CAAC,mBAAmB,CAAC,mCAAI,EAAE,CAAC,GACrD,CAAC,MAAA,aAAa,CAAC,mBAAmB,CAAC,mCAAI,EAAE,CAAC,CACzC;oBACR,QAAQ,EAAE,8CACH,CAAC,MAAM,WAAW,CAAC,kBAAkB,CAAC,CAAC,GACvC,CAAC,MAAC,wBAAgC,CAAC,kBAAkB,CAAC,mCAAI,EAAE,CAAC,GAC7D,CAAC,MAAA,aAAa,CAAC,kBAAkB,CAAC,mCAAI,EAAE,CAAC,CACxC;oBACR,uCAAuC,EAAE,SAAS,CAAC,uCAAuC;iBAC7F,CAAC,KACF,kBAAkB,EAClB,iBAAiB,EAAE,cAAc,CAAC,EAAE;wBAChC,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;wBAE7B,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,kCAAkC,CAAC,CAAC;wBAEjE,MAAM,qBAAqB,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,WAAW,KAAK,cAAc,CAAC,CAAC;wBAEzG,MAAM,CAAC,qBAAqB,KAAK,SAAS,EAAE,GAAG,cAAc,uCAAuC,CAAC,CAAC;wBAEtG,OAAO,qBAAqB,CAAC,GAAG,CAAC;oBACrC,CAAC,EACD,2BAA2B,EAAE,MAAM,CAAC,WAAW,CAC3C,CAAC,MAAA,MAAA,SAAS,CAAC,MAAM,0CAAE,SAAS,mCAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAC5F,IACH,CAAC;YACP,CAAC,CAAC,EAAE,CAAC;QACT,CAAC,EAAE,EAAE,CAAC,CAAC;QAEP,OAAO,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,IAAI,CAAC;IACxB,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,CAAC;AACvB,CAAC;AAED,SAAS,8BAA8B,CAA4B,MAIlE;IACG,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,uCAAuC,EAAE,GAAG,MAAM,CAAC;IAEvF,SAAS,UAAU,CAAC,KAA6E;;QAC7F,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC;QAE5C,MAAM,kBAAkB,GAAuB,MAAC,QAAgB,CAAC,GAAG,CAAC,mCAAK,gBAAwB,CAAC,GAAG,CAAC,CAAC;QAExG,IAAI,kBAAkB,KAAK,SAAS,EAAE,CAAC;YACnC,OAAO,SAAS,CAAC;QACrB,CAAC;QAED,MAAM,OAAO,GAAG,kBAAkB,CAAC;QAEnC,MAAM,4BAA4B,GAAG,CAAC,GAAG,EAAE;;YACvC,MAAM,UAAU,GAAG,MAAA,OAAO;iBACrB,KAAK,CAAC,WAAW,CAAC,0CACjB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAE,CAAC,CAAC,CAAC,EACnC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAClC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YAE9B,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;gBAC3B,4CAA4C;gBAC5C,OAAO,OAAO,CAAC;YACnB,CAAC;YAED,IAAI,uBAAuB,GAAG,OAAO,CAAC;YAEtC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;gBACpB,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;oBACpB,OAAO;gBACX,CAAC;gBAED,uBAAuB,GAAG,uBAAuB,CAAC,OAAO,CACrD,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,UAAU,KAAK,EAAE,GAAG,CAAC,EAC1C,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAClD,CAAC;YACN,CAAC,CAAC,CAAC;YAEH,OAAO,uBAAuB,CAAC;QACnC,CAAC,CAAC,EAAE,CAAC;QAEL,OAAO,cAAc,CAAC,CAAC,CAAC,CACpB;YACI,uEAAuE;YACvE,uBAAuB,EAAE;gBACrB,MAAM,EAAE,4BAA4B;aACvC,GACH,CACL,CAAC,CAAC,CAAC,CACA,4BAA4B,CAC/B,CAAC;IACN,CAAC;IAED,SAAS,kBAAkB,CAAC,KAA6E;QACrG,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC;QAE5C,IAAI,GAAG,IAAI,uCAAuC,EAAE,CAAC;YACjD,MAAM,eAAe,GAAG,uCAAuC,CAAC,GAAG,CAAC,CAAC;YAErE,OAAO,cAAc,CAAC,CAAC,CAAC,CACpB;gBACI,uEAAuE;gBACvE,uBAAuB,EAAE;oBACrB,MAAM,EAAE,eAAe;iBAC1B,GACH,CACL,CAAC,CAAC,CAAC,CACA,eAAe,CAClB,CAAC;QACN,CAAC;QAED,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,eAAe,GAAG,UAAU,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;YAElE,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;gBAChC,OAAO,cAAc,CAAC,CAAC,CAAC,eAAM,uBAAuB,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,GAAI,CAAC,CAAC,CAAC,GAAG,CAAC;YACrF,CAAC;YAED,OAAO,eAAe,CAAC;QAC3B,CAAC;QAED,IAAI,YAAY,GAAG,IAAI,CAAC;QAExB,MAAM,sBAAsB,GAAG,GAAG,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE;;YAC1E,MAAM,SAAS,GAAG,MAAA,UAAU,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,mCAAI,KAAK,CAAC;YAE7G,YAAY,GAAG,KAAK,CAAC;YAErB,OAAO,SAAS,CAAC;QACrB,CAAC,CAAC,CAAC;QAEH,OAAO,cAAc,CAAC,CAAC,CAAC,eAAM,uBAAuB,EAAE,EAAE,MAAM,EAAE,sBAAsB,EAAE,GAAI,CAAC,CAAC,CAAC,sBAAsB,CAAC;IAC3H,CAAC;IAED,OAAO;QACH,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,CAAW;QACpF,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,CAAgB;QACrF,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,CAC1B,kBAAkB,CAAC;YACf,GAAG;YACH,IAAI;YACJ,cAAc,EAAE,IAAI;SACvB,CAAgB;QACrB,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,CAC7B,kBAAkB,CAAC;YACf,GAAG;YACH,IAAI;YACJ,cAAc,EAAE,KAAK;SACxB,CAAW;KACnB,CAAC;AACN,CAAC;AAED,MAAM,wBAAwB,GAAG;IAC7B,EAAE,EAAE;QACA,aAAa,EAAE,4BAA4B;QAC3C,iBAAiB,EAAE,gCAAgC;QACnD,kBAAkB,EAAE,+BAA+B;QACnD,eAAe,EAAE,oBAAoB;QACrC,eAAe,EAAE,oBAAoB;QACrC,cAAc,EAAE,kBAAkB;QAClC,MAAM,EAAE,QAAQ;QAChB,QAAQ,EAAE,WAAW;KACxB;IACD,EAAE,EAAE;QACA,4BAA4B;QAC5B,aAAa,EAAE,0BAA0B;QACzC,iBAAiB,EAAE,gCAAgC;QACnD,kBAAkB,EAAE,mCAAmC;QACvD,eAAe,EAAE,4BAA4B;QAC7C,eAAe,EAAE,6BAA6B;QAE9C,kBAAkB,EAAE,aAAa;QACjC,mBAAmB,EAAE,gDAAgD;QACrE,QAAQ,EAAE,gBAAgB;QAC1B,cAAc,EAAE,yBAAyB;QACzC,MAAM,EAAE,WAAW;QACnB,QAAQ,EAAE,oBAAoB;QAC9B,2BAA2B;KAC9B;CACJ,CAAC"}
@@ -8,8 +8,8 @@ export default function LoginConfigTotp(props) {
8
8
  classes
9
9
  });
10
10
  const { url, isAppInitiatedAction, totp, mode, messagesPerField } = kcContext;
11
- const { msg, msgStr } = i18n;
12
- return (_jsx(Template, { kcContext, i18n, doUseDefaultCss, classes, headerNode: msg("loginTotpTitle"), children: _jsxs(_Fragment, { children: [_jsxs("ol", { id: "kc-totp-settings", children: [_jsxs("li", { children: [_jsx("p", { children: msg("loginTotpStep1") }), _jsx("ul", { id: "kc-totp-supported-apps", children: totp.supportedApplications.map(app => (_jsx("li", { children: msg(app) }))) })] }), mode == "manual" ? (_jsxs(_Fragment, { children: [_jsxs("li", { children: [_jsx("p", { children: msg("loginTotpManualStep2") }), _jsx("p", { children: _jsx("span", { id: "kc-totp-secret-key", children: totp.totpSecretEncoded }) }), _jsx("p", { children: _jsx("a", { href: totp.qrUrl, id: "mode-barcode", children: msg("loginTotpScanBarcode") }) })] }), _jsxs("li", { children: [_jsx("p", { children: msg("loginTotpManualStep3") }), _jsx("p", { children: _jsxs("ul", { children: [_jsxs("li", { id: "kc-totp-type", children: [msg("loginTotpType"), ": ", msg(`loginTotp.${totp.policy.type}`)] }), _jsxs("li", { id: "kc-totp-algorithm", children: [msg("loginTotpAlgorithm"), ": ", totp.policy.getAlgorithmKey()] }), _jsxs("li", { id: "kc-totp-digits", children: [msg("loginTotpDigits"), ": ", totp.policy.digits] }), totp.policy.type === "totp" ? (_jsxs("li", { id: "kc-totp-period", children: [msg("loginTotpInterval"), ": ", totp.policy.period] })) : (_jsxs("li", { id: "kc-totp-counter", children: [msg("loginTotpCounter"), ": ", totp.policy.initialCounter] }))] }) })] })] })) : (_jsxs("li", { children: [_jsx("p", { children: msg("loginTotpStep2") }), _jsx("img", { id: "kc-totp-secret-qr-code", src: `data:image/png;base64, ${totp.totpSecretQrCode}`, alt: "Figure: Barcode" }), _jsx("br", {}), _jsx("p", { children: _jsx("a", { href: totp.manualUrl, id: "mode-manual", children: msg("loginTotpUnableToScan") }) })] })), _jsxs("li", { children: [_jsx("p", { children: msg("loginTotpStep3") }), _jsx("p", { children: msg("loginTotpStep3DeviceName") })] })] }), _jsxs("form", { action: url.loginAction, className: getClassName("kcFormClass"), id: "kc-totp-settings-form", method: "post", children: [_jsxs("div", { className: getClassName("kcFormGroupClass"), children: [_jsxs("div", { className: getClassName("kcInputWrapperClass"), children: [_jsx("label", { htmlFor: "totp", className: getClassName("kcLabelClass"), children: msg("authenticatorCode") }), " ", _jsx("span", { className: "required", children: "*" })] }), _jsxs("div", { className: getClassName("kcInputWrapperClass"), children: [_jsx("input", { type: "text", id: "totp", name: "totp", autoComplete: "off", className: getClassName("kcInputClass"), "aria-invalid": messagesPerField.existsError("totp") }), messagesPerField.existsError("totp") && (_jsx("span", { id: "input-error-otp-code", className: getClassName("kcInputErrorMessageClass"), "aria-live": "polite", children: messagesPerField.get("totp") }))] }), _jsx("input", { type: "hidden", id: "totpSecret", name: "totpSecret", value: totp.totpSecret }), mode && _jsx("input", { type: "hidden", id: "mode", value: mode })] }), _jsxs("div", { className: getClassName("kcFormGroupClass"), children: [_jsxs("div", { className: getClassName("kcInputWrapperClass"), children: [_jsx("label", { htmlFor: "userLabel", className: getClassName("kcLabelClass"), children: msg("loginTotpDeviceName") }), " ", totp.otpCredentials.length >= 1 && _jsx("span", { className: "required", children: "*" })] }), _jsxs("div", { className: getClassName("kcInputWrapperClass"), children: [_jsx("input", { type: "text", id: "userLabel", name: "userLabel", autoComplete: "off", className: getClassName("kcInputClass"), "aria-invalid": messagesPerField.existsError("userLabel") }), messagesPerField.existsError("userLabel") && (_jsx("span", { id: "input-error-otp-label", className: getClassName("kcInputErrorMessageClass"), "aria-live": "polite", children: messagesPerField.get("userLabel") }))] })] }), _jsx("div", { className: getClassName("kcFormGroupClass"), children: _jsx(LogoutOtherSessions, { getClassName, i18n }) }), isAppInitiatedAction ? (_jsxs(_Fragment, { children: [_jsx("input", { type: "submit", className: clsx(getClassName("kcButtonClass"), getClassName("kcButtonPrimaryClass"), getClassName("kcButtonLargeClass")), id: "saveTOTPBtn", value: msgStr("doSubmit") }), _jsx("button", { type: "submit", className: clsx(getClassName("kcButtonClass"), getClassName("kcButtonDefaultClass"), getClassName("kcButtonLargeClass"), getClassName("kcButtonLargeClass")), id: "cancelTOTPBtn", name: "cancel-aia", value: "true", children: msg("doCancel") })] })) : (_jsx("input", { type: "submit", className: clsx(getClassName("kcButtonClass"), getClassName("kcButtonPrimaryClass"), getClassName("kcButtonLargeClass")), id: "saveTOTPBtn", value: msgStr("doSubmit") }))] })] }) }));
11
+ const { msg, msgStr, advancedMsg } = i18n;
12
+ return (_jsx(Template, { kcContext, i18n, doUseDefaultCss, classes, headerNode: msg("loginTotpTitle"), children: _jsxs(_Fragment, { children: [_jsxs("ol", { id: "kc-totp-settings", children: [_jsxs("li", { children: [_jsx("p", { children: msg("loginTotpStep1") }), _jsx("ul", { id: "kc-totp-supported-apps", children: totp.supportedApplications.map(app => (_jsx("li", { children: advancedMsg(app) }))) })] }), mode == "manual" ? (_jsxs(_Fragment, { children: [_jsxs("li", { children: [_jsx("p", { children: msg("loginTotpManualStep2") }), _jsx("p", { children: _jsx("span", { id: "kc-totp-secret-key", children: totp.totpSecretEncoded }) }), _jsx("p", { children: _jsx("a", { href: totp.qrUrl, id: "mode-barcode", children: msg("loginTotpScanBarcode") }) })] }), _jsxs("li", { children: [_jsx("p", { children: msg("loginTotpManualStep3") }), _jsx("p", { children: _jsxs("ul", { children: [_jsxs("li", { id: "kc-totp-type", children: [msg("loginTotpType"), ": ", msg(`loginTotp.${totp.policy.type}`)] }), _jsxs("li", { id: "kc-totp-algorithm", children: [msg("loginTotpAlgorithm"), ": ", totp.policy.getAlgorithmKey()] }), _jsxs("li", { id: "kc-totp-digits", children: [msg("loginTotpDigits"), ": ", totp.policy.digits] }), totp.policy.type === "totp" ? (_jsxs("li", { id: "kc-totp-period", children: [msg("loginTotpInterval"), ": ", totp.policy.period] })) : (_jsxs("li", { id: "kc-totp-counter", children: [msg("loginTotpCounter"), ": ", totp.policy.initialCounter] }))] }) })] })] })) : (_jsxs("li", { children: [_jsx("p", { children: msg("loginTotpStep2") }), _jsx("img", { id: "kc-totp-secret-qr-code", src: `data:image/png;base64, ${totp.totpSecretQrCode}`, alt: "Figure: Barcode" }), _jsx("br", {}), _jsx("p", { children: _jsx("a", { href: totp.manualUrl, id: "mode-manual", children: msg("loginTotpUnableToScan") }) })] })), _jsxs("li", { children: [_jsx("p", { children: msg("loginTotpStep3") }), _jsx("p", { children: msg("loginTotpStep3DeviceName") })] })] }), _jsxs("form", { action: url.loginAction, className: getClassName("kcFormClass"), id: "kc-totp-settings-form", method: "post", children: [_jsxs("div", { className: getClassName("kcFormGroupClass"), children: [_jsxs("div", { className: getClassName("kcInputWrapperClass"), children: [_jsx("label", { htmlFor: "totp", className: getClassName("kcLabelClass"), children: msg("authenticatorCode") }), " ", _jsx("span", { className: "required", children: "*" })] }), _jsxs("div", { className: getClassName("kcInputWrapperClass"), children: [_jsx("input", { type: "text", id: "totp", name: "totp", autoComplete: "off", className: getClassName("kcInputClass"), "aria-invalid": messagesPerField.existsError("totp") }), messagesPerField.existsError("totp") && (_jsx("span", { id: "input-error-otp-code", className: getClassName("kcInputErrorMessageClass"), "aria-live": "polite", children: messagesPerField.get("totp") }))] }), _jsx("input", { type: "hidden", id: "totpSecret", name: "totpSecret", value: totp.totpSecret }), mode && _jsx("input", { type: "hidden", id: "mode", value: mode })] }), _jsxs("div", { className: getClassName("kcFormGroupClass"), children: [_jsxs("div", { className: getClassName("kcInputWrapperClass"), children: [_jsx("label", { htmlFor: "userLabel", className: getClassName("kcLabelClass"), children: msg("loginTotpDeviceName") }), " ", totp.otpCredentials.length >= 1 && _jsx("span", { className: "required", children: "*" })] }), _jsxs("div", { className: getClassName("kcInputWrapperClass"), children: [_jsx("input", { type: "text", id: "userLabel", name: "userLabel", autoComplete: "off", className: getClassName("kcInputClass"), "aria-invalid": messagesPerField.existsError("userLabel") }), messagesPerField.existsError("userLabel") && (_jsx("span", { id: "input-error-otp-label", className: getClassName("kcInputErrorMessageClass"), "aria-live": "polite", children: messagesPerField.get("userLabel") }))] })] }), _jsx("div", { className: getClassName("kcFormGroupClass"), children: _jsx(LogoutOtherSessions, { getClassName, i18n }) }), isAppInitiatedAction ? (_jsxs(_Fragment, { children: [_jsx("input", { type: "submit", className: clsx(getClassName("kcButtonClass"), getClassName("kcButtonPrimaryClass"), getClassName("kcButtonLargeClass")), id: "saveTOTPBtn", value: msgStr("doSubmit") }), _jsx("button", { type: "submit", className: clsx(getClassName("kcButtonClass"), getClassName("kcButtonDefaultClass"), getClassName("kcButtonLargeClass"), getClassName("kcButtonLargeClass")), id: "cancelTOTPBtn", name: "cancel-aia", value: "true", children: msg("doCancel") })] })) : (_jsx("input", { type: "submit", className: clsx(getClassName("kcButtonClass"), getClassName("kcButtonPrimaryClass"), getClassName("kcButtonLargeClass")), id: "saveTOTPBtn", value: msgStr("doSubmit") }))] })] }) }));
13
13
  }
14
14
  function LogoutOtherSessions(props) {
15
15
  const { getClassName, i18n } = props;
@@ -1 +1 @@
1
- {"version":3,"file":"LoginConfigTotp.js","sourceRoot":"","sources":["../../src/login/pages/LoginConfigTotp.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LoginConfigTotp.js","sourceRoot":"","sources":["../../src/login/pages/LoginConfigTotp.tsx"],"names":[],"mappings":"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"}
@@ -9,7 +9,7 @@ export default function WebauthnAuthenticate(props) {
9
9
  const { kcContext, i18n, doUseDefaultCss, Template, classes } = props;
10
10
  const { getClassName } = useGetClassName({ doUseDefaultCss, classes });
11
11
  const { url, isUserIdentified, challenge, userVerification, rpId, createTimeout, messagesPerField, realm, registrationDisabled, authenticators, shouldDisplayAuthenticators } = kcContext;
12
- const { msg, msgStr } = i18n;
12
+ const { msg, msgStr, advancedMsg } = i18n;
13
13
  const { insertScriptTags } = useInsertScriptTags({
14
14
  scriptTags: [
15
15
  {
@@ -121,7 +121,7 @@ export default function WebauthnAuthenticate(props) {
121
121
  return getClassName("kcWebAuthnDefaultIcon");
122
122
  }
123
123
  return className;
124
- })(), getClassName("kcSelectAuthListItemIconPropertyClass")) }) }), _jsxs("div", { className: getClassName("kcSelectAuthListItemArrowIconClass"), children: [_jsx("div", { id: "kc-webauthn-authenticator-label", className: getClassName("kcSelectAuthListItemHeadingClass"), children: msg(authenticator.label) }), ((_a = authenticator.transports.displayNameProperties) === null || _a === void 0 ? void 0 : _a.length) && (_jsx("div", { id: "kc-webauthn-authenticator-transport", className: getClassName("kcSelectAuthListItemDescriptionClass"), children: authenticator.transports.displayNameProperties
124
+ })(), getClassName("kcSelectAuthListItemIconPropertyClass")) }) }), _jsxs("div", { className: getClassName("kcSelectAuthListItemArrowIconClass"), children: [_jsx("div", { id: "kc-webauthn-authenticator-label", className: getClassName("kcSelectAuthListItemHeadingClass"), children: advancedMsg(authenticator.label) }), ((_a = authenticator.transports.displayNameProperties) === null || _a === void 0 ? void 0 : _a.length) && (_jsx("div", { id: "kc-webauthn-authenticator-transport", className: getClassName("kcSelectAuthListItemDescriptionClass"), children: authenticator.transports.displayNameProperties
125
125
  .map((nameProperty, i, arr) => ({
126
126
  nameProperty,
127
127
  hasNext: i !== arr.length - 1
@@ -1 +1 @@
1
- {"version":3,"file":"WebauthnAuthenticate.js","sourceRoot":"","sources":["../../src/login/pages/WebauthnAuthenticate.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WebauthnAuthenticate.js","sourceRoot":"","sources":["../../src/login/pages/WebauthnAuthenticate.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "keycloakify",
3
- "version": "10.0.0-rc.21",
3
+ "version": "10.0.0-rc.22",
4
4
  "description": "Create Keycloak themes using React",
5
5
  "repository": {
6
6
  "type": "git",
@@ -1,11 +1,9 @@
1
1
  import "minimal-polyfills/Object.fromEntries";
2
- //NOTE for later: https://github.com/remarkjs/react-markdown/blob/236182ecf30bd89c1e5a7652acaf8d0bf81e6170/src/renderers.js#L7-L35
3
2
  import { useEffect, useState, useRef } from "react";
4
3
  import fallbackMessages from "./baseMessages/en";
5
4
  import { getMessages } from "./baseMessages";
6
5
  import { assert } from "tsafe/assert";
7
6
  import type { KcContext } from "../kcContext/KcContext";
8
- import { Markdown } from "keycloakify/tools/Markdown";
9
7
 
10
8
  export const fallbackLanguageTag = "en";
11
9
 
@@ -53,16 +51,31 @@ export type GenericI18n<MessageKey extends string> = {
53
51
  */
54
52
  msgStr: (key: MessageKey, ...args: (string | undefined)[]) => string;
55
53
  /**
54
+ * This is meant to be used when the key argument is variable, something that might have been configured by the user
55
+ * in the Keycloak admin for example.
56
+ *
56
57
  * Examples assuming currentLanguageTag === "en"
57
- * advancedMsg("${access-denied} foo bar") === <span>${msgStr("access-denied")} foo bar<span> === <span>Access denied foo bar</span>
58
+ * {
59
+ * en: {
60
+ * "access-denied": "Access denied",
61
+ * "foo": "Foo {0} {1}",
62
+ * "bar": "Bar {0}"
63
+ * }
64
+ * }
65
+ *
66
+ * advancedMsg("${access-denied} foo bar") === <span>{msgStr("access-denied")} foo bar<span> === <span>Access denied foo bar</span>
58
67
  * advancedMsg("${access-denied}") === advancedMsg("access-denied") === msg("access-denied") === <span>Access denied</span>
59
68
  * advancedMsg("${not-a-message-key}") === advancedMsg(not-a-message-key") === <span>not-a-message-key</span>
69
+ * advancedMsg("${bar}", "<strong>c</strong>")
70
+ * === <span>{msgStr("bar", "<strong>XXX</strong>")}<span>
71
+ * === <span>Bar &lt;strong&gt;XXX&lt;/strong&gt;</span> (The html in the arg is partially escaped for security reasons, it might be untrusted)
72
+ * advancedMsg("${foo} xx ${bar}", "a", "b", "c")
73
+ * === <span>{msgStr("foo", "a", "b")} xx {msgStr("bar")}<span>
74
+ * === <span>Foo a b xx Bar {0}</span> (The substitution are only applied in the first message)
60
75
  */
61
76
  advancedMsg: (key: string, ...args: (string | undefined)[]) => JSX.Element;
62
77
  /**
63
- * Examples assuming currentLanguageTag === "en"
64
- * advancedMsg("${access-denied} foo bar") === msg("access-denied") + " foo bar" === "Access denied foo bar"
65
- * advancedMsg("${not-a-message-key}") === advancedMsg(not-a-message-key") === "not-a-message-key"
78
+ * See advancedMsg() but instead of returning a JSX.Element it returns a string.
66
79
  */
67
80
  advancedMsgStr: (key: string, ...args: (string | undefined)[]) => string;
68
81
  };
@@ -133,8 +146,8 @@ function createI18nTranslationFunctions<MessageKey extends string>(params: {
133
146
  }): Pick<GenericI18n<MessageKey>, "msg" | "msgStr" | "advancedMsg" | "advancedMsgStr"> {
134
147
  const { fallbackMessages, messages } = params;
135
148
 
136
- function resolveMsg(props: { key: string; args: (string | undefined)[]; doRenderMarkdown: boolean }): string | JSX.Element | undefined {
137
- const { key, args, doRenderMarkdown } = props;
149
+ function resolveMsg(props: { key: string; args: (string | undefined)[]; doRenderAsHtml: boolean }): string | JSX.Element | undefined {
150
+ const { key, args, doRenderAsHtml } = props;
138
151
 
139
152
  const messageOrUndefined: string | undefined = (messages as any)[key] ?? (fallbackMessages as any)[key];
140
153
 
@@ -163,51 +176,67 @@ function createI18nTranslationFunctions<MessageKey extends string>(params: {
163
176
  return;
164
177
  }
165
178
 
166
- messageWithArgsInjected = messageWithArgsInjected.replace(new RegExp(`\\{${i + startIndex}\\}`, "g"), arg);
179
+ messageWithArgsInjected = messageWithArgsInjected.replace(
180
+ new RegExp(`\\{${i + startIndex}\\}`, "g"),
181
+ arg.replace(/</g, "&lt;").replace(/>/g, "&gt;")
182
+ );
167
183
  });
168
184
 
169
185
  return messageWithArgsInjected;
170
186
  })();
171
187
 
172
- return doRenderMarkdown ? (
173
- <Markdown allowDangerousHtml renderers={{ paragraph: "span" }}>
174
- {messageWithArgsInjectedIfAny}
175
- </Markdown>
188
+ return doRenderAsHtml ? (
189
+ <span
190
+ // NOTE: The message is trusted. The arguments are not but are escaped.
191
+ dangerouslySetInnerHTML={{
192
+ __html: messageWithArgsInjectedIfAny
193
+ }}
194
+ />
176
195
  ) : (
177
196
  messageWithArgsInjectedIfAny
178
197
  );
179
198
  }
180
199
 
181
- function resolveMsgAdvanced(props: { key: string; args: (string | undefined)[]; doRenderMarkdown: boolean }): JSX.Element | string {
182
- const { key, args, doRenderMarkdown } = props;
200
+ function resolveMsgAdvanced(props: { key: string; args: (string | undefined)[]; doRenderAsHtml: boolean }): JSX.Element | string {
201
+ const { key, args, doRenderAsHtml } = props;
202
+
203
+ if (!/\$\{[^}]+\}/.test(key)) {
204
+ const resolvedMessage = resolveMsg({ key, args, doRenderAsHtml });
205
+
206
+ if (resolvedMessage === undefined) {
207
+ return doRenderAsHtml ? <span dangerouslySetInnerHTML={{ __html: key }} /> : key;
208
+ }
209
+
210
+ return resolvedMessage;
211
+ }
212
+
213
+ let isFirstMatch = true;
183
214
 
184
- const match = key.match(/^\$\{([^{]+)\}$/);
215
+ const resolvedComplexMessage = key.replace(/\$\{([^}]+)\}/g, (...[, key_i]) => {
216
+ const replaceBy = resolveMsg({ key: key_i, args: isFirstMatch ? args : [], doRenderAsHtml: false }) ?? key_i;
185
217
 
186
- const keyUnwrappedFromCurlyBraces = match === null ? key : match[1];
218
+ isFirstMatch = false;
187
219
 
188
- const out = resolveMsg({
189
- key: keyUnwrappedFromCurlyBraces,
190
- args,
191
- doRenderMarkdown
220
+ return replaceBy;
192
221
  });
193
222
 
194
- return (out !== undefined ? out : doRenderMarkdown ? <span>{keyUnwrappedFromCurlyBraces}</span> : keyUnwrappedFromCurlyBraces) as any;
223
+ return doRenderAsHtml ? <span dangerouslySetInnerHTML={{ __html: resolvedComplexMessage }} /> : resolvedComplexMessage;
195
224
  }
196
225
 
197
226
  return {
198
- msgStr: (key, ...args) => resolveMsg({ key, args, doRenderMarkdown: false }) as string,
199
- msg: (key, ...args) => resolveMsg({ key, args, doRenderMarkdown: true }) as JSX.Element,
227
+ msgStr: (key, ...args) => resolveMsg({ key, args, doRenderAsHtml: false }) as string,
228
+ msg: (key, ...args) => resolveMsg({ key, args, doRenderAsHtml: true }) as JSX.Element,
200
229
  advancedMsg: (key, ...args) =>
201
230
  resolveMsgAdvanced({
202
231
  key,
203
232
  args,
204
- doRenderMarkdown: true
233
+ doRenderAsHtml: true
205
234
  }) as JSX.Element,
206
235
  advancedMsgStr: (key, ...args) =>
207
236
  resolveMsgAdvanced({
208
237
  key,
209
238
  args,
210
- doRenderMarkdown: false
239
+ doRenderAsHtml: false
211
240
  }) as string
212
241
  };
213
242
  }
@@ -3,7 +3,6 @@ import type { PageProps } from "keycloakify/account/pages/PageProps";
3
3
  import { useGetClassName } from "keycloakify/account/lib/useGetClassName";
4
4
  import type { KcContext } from "../kcContext";
5
5
  import type { I18n } from "../i18n";
6
- import { MessageKey } from "keycloakify/account/i18n/i18n";
7
6
 
8
7
  export default function Totp(props: PageProps<Extract<KcContext, { pageId: "totp.ftl" }>, I18n>) {
9
8
  const { kcContext, i18n, doUseDefaultCss, Template, classes } = props;
@@ -15,7 +14,7 @@ export default function Totp(props: PageProps<Extract<KcContext, { pageId: "totp
15
14
 
16
15
  const { totp, mode, url, messagesPerField, stateChecker } = kcContext;
17
16
 
18
- const { msg, msgStr } = i18n;
17
+ const { msg, msgStr, advancedMsg } = i18n;
19
18
 
20
19
  const algToKeyUriAlg: Record<(typeof kcContext)["totp"]["policy"]["algorithm"], string> = {
21
20
  HmacSHA1: "SHA1",
@@ -78,9 +77,7 @@ export default function Totp(props: PageProps<Extract<KcContext, { pageId: "totp
78
77
  <li>
79
78
  <p>{msg("totpStep1")}</p>
80
79
 
81
- <ul id="kc-totp-supported-apps">
82
- {totp.supportedApplications?.map(app => <li key={app}>{msg(app as MessageKey)}</li>)}
83
- </ul>
80
+ <ul id="kc-totp-supported-apps">{totp.supportedApplications?.map(app => <li key={app}>{advancedMsg(app)}</li>)}</ul>
84
81
  </li>
85
82
 
86
83
  {mode && mode == "manual" ? (
@@ -52,16 +52,31 @@ export type GenericI18n<MessageKey extends string> = {
52
52
  */
53
53
  msgStr: (key: MessageKey, ...args: (string | undefined)[]) => string;
54
54
  /**
55
+ * This is meant to be used when the key argument is variable, something that might have been configured by the user
56
+ * in the Keycloak admin for example.
57
+ *
55
58
  * Examples assuming currentLanguageTag === "en"
56
- * advancedMsg("${access-denied} foo bar") === <span>${msgStr("access-denied")} foo bar<span> === <span>Access denied foo bar</span>
59
+ * {
60
+ * en: {
61
+ * "access-denied": "Access denied",
62
+ * "foo": "Foo {0} {1}",
63
+ * "bar": "Bar {0}"
64
+ * }
65
+ * }
66
+ *
67
+ * advancedMsg("${access-denied} foo bar") === <span>{msgStr("access-denied")} foo bar<span> === <span>Access denied foo bar</span>
57
68
  * advancedMsg("${access-denied}") === advancedMsg("access-denied") === msg("access-denied") === <span>Access denied</span>
58
69
  * advancedMsg("${not-a-message-key}") === advancedMsg(not-a-message-key") === <span>not-a-message-key</span>
70
+ * advancedMsg("${bar}", "<strong>c</strong>")
71
+ * === <span>{msgStr("bar", "<strong>XXX</strong>")}<span>
72
+ * === <span>Bar &lt;strong&gt;XXX&lt;/strong&gt;</span> (The html in the arg is partially escaped for security reasons, it might be untrusted)
73
+ * advancedMsg("${foo} xx ${bar}", "a", "b", "c")
74
+ * === <span>{msgStr("foo", "a", "b")} xx {msgStr("bar")}<span>
75
+ * === <span>Foo a b xx Bar {0}</span> (The substitution are only applied in the first message)
59
76
  */
60
77
  advancedMsg: (key: string, ...args: (string | undefined)[]) => JSX.Element;
61
78
  /**
62
- * Examples assuming currentLanguageTag === "en"
63
- * advancedMsg("${access-denied} foo bar") === msg("access-denied") + " foo bar" === "Access denied foo bar"
64
- * advancedMsg("${not-a-message-key}") === advancedMsg("not-a-message-key") === "not-a-message-key"
79
+ * See advancedMsg() but instead of returning a JSX.Element it returns a string.
65
80
  */
66
81
  advancedMsgStr: (key: string, ...args: (string | undefined)[]) => string;
67
82
  };
@@ -132,7 +147,7 @@ function createI18nTranslationFunctions<MessageKey extends string>(params: {
132
147
  messages: Record<MessageKey, string>;
133
148
  __localizationRealmOverridesUserProfile: Record<string, string>;
134
149
  }): Pick<GenericI18n<MessageKey>, "msg" | "msgStr" | "advancedMsg" | "advancedMsgStr"> {
135
- const { fallbackMessages, messages /*__localizationRealmOverridesUserProfile*/ } = params;
150
+ const { fallbackMessages, messages, __localizationRealmOverridesUserProfile } = params;
136
151
 
137
152
  function resolveMsg(props: { key: string; args: (string | undefined)[]; doRenderAsHtml: boolean }): string | JSX.Element | undefined {
138
153
  const { key, args, doRenderAsHtml } = props;
@@ -188,26 +203,42 @@ function createI18nTranslationFunctions<MessageKey extends string>(params: {
188
203
  function resolveMsgAdvanced(props: { key: string; args: (string | undefined)[]; doRenderAsHtml: boolean }): JSX.Element | string {
189
204
  const { key, args, doRenderAsHtml } = props;
190
205
 
191
- // TODO:
192
- /*
193
- if( key in __localizationRealmOverridesUserProfile ){
206
+ if (key in __localizationRealmOverridesUserProfile) {
207
+ const resolvedMessage = __localizationRealmOverridesUserProfile[key];
208
+
209
+ return doRenderAsHtml ? (
210
+ <span
211
+ // NOTE: The message is trusted. The arguments are not but are escaped.
212
+ dangerouslySetInnerHTML={{
213
+ __html: resolvedMessage
214
+ }}
215
+ />
216
+ ) : (
217
+ resolvedMessage
218
+ );
219
+ }
194
220
 
221
+ if (!/\$\{[^}]+\}/.test(key)) {
222
+ const resolvedMessage = resolveMsg({ key, args, doRenderAsHtml });
195
223
 
224
+ if (resolvedMessage === undefined) {
225
+ return doRenderAsHtml ? <span dangerouslySetInnerHTML={{ __html: key }} /> : key;
226
+ }
196
227
 
228
+ return resolvedMessage;
197
229
  }
198
- */
199
230
 
200
- const match = key.match(/^\$\{([^{]+)\}$/);
231
+ let isFirstMatch = true;
232
+
233
+ const resolvedComplexMessage = key.replace(/\$\{([^}]+)\}/g, (...[, key_i]) => {
234
+ const replaceBy = resolveMsg({ key: key_i, args: isFirstMatch ? args : [], doRenderAsHtml: false }) ?? key_i;
201
235
 
202
- const keyUnwrappedFromCurlyBraces = match === null ? key : match[1];
236
+ isFirstMatch = false;
203
237
 
204
- const out = resolveMsg({
205
- key: keyUnwrappedFromCurlyBraces,
206
- args,
207
- doRenderAsHtml
238
+ return replaceBy;
208
239
  });
209
240
 
210
- return (out !== undefined ? out : doRenderAsHtml ? <span>{keyUnwrappedFromCurlyBraces}</span> : keyUnwrappedFromCurlyBraces) as any;
241
+ return doRenderAsHtml ? <span dangerouslySetInnerHTML={{ __html: resolvedComplexMessage }} /> : resolvedComplexMessage;
211
242
  }
212
243
 
213
244
  return {
@@ -3,7 +3,6 @@ import type { PageProps } from "keycloakify/login/pages/PageProps";
3
3
  import { useGetClassName } from "keycloakify/login/lib/useGetClassName";
4
4
  import type { KcContext } from "../kcContext";
5
5
  import type { I18n } from "../i18n";
6
- import { MessageKey } from "keycloakify/login/i18n/i18n";
7
6
 
8
7
  export default function LoginConfigTotp(props: PageProps<Extract<KcContext, { pageId: "login-config-totp.ftl" }>, I18n>) {
9
8
  const { kcContext, i18n, doUseDefaultCss, Template, classes } = props;
@@ -15,7 +14,7 @@ export default function LoginConfigTotp(props: PageProps<Extract<KcContext, { pa
15
14
 
16
15
  const { url, isAppInitiatedAction, totp, mode, messagesPerField } = kcContext;
17
16
 
18
- const { msg, msgStr } = i18n;
17
+ const { msg, msgStr, advancedMsg } = i18n;
19
18
 
20
19
  return (
21
20
  <Template {...{ kcContext, i18n, doUseDefaultCss, classes }} headerNode={msg("loginTotpTitle")}>
@@ -26,7 +25,7 @@ export default function LoginConfigTotp(props: PageProps<Extract<KcContext, { pa
26
25
 
27
26
  <ul id="kc-totp-supported-apps">
28
27
  {totp.supportedApplications.map(app => (
29
- <li>{msg(app as MessageKey)}</li>
28
+ <li>{advancedMsg(app)}</li>
30
29
  ))}
31
30
  </ul>
32
31
  </li>
@@ -1,6 +1,5 @@
1
1
  import { useEffect, Fragment } from "react";
2
2
  import { clsx } from "keycloakify/tools/clsx";
3
- import type { MessageKey } from "keycloakify/login/i18n/i18n";
4
3
  import type { PageProps } from "keycloakify/login/pages/PageProps";
5
4
  import { useGetClassName } from "keycloakify/login/lib/useGetClassName";
6
5
  import { assert } from "tsafe/assert";
@@ -29,7 +28,7 @@ export default function WebauthnAuthenticate(props: PageProps<Extract<KcContext,
29
28
  shouldDisplayAuthenticators
30
29
  } = kcContext;
31
30
 
32
- const { msg, msgStr } = i18n;
31
+ const { msg, msgStr, advancedMsg } = i18n;
33
32
 
34
33
  const { insertScriptTags } = useInsertScriptTags({
35
34
  scriptTags: [
@@ -198,7 +197,7 @@ export default function WebauthnAuthenticate(props: PageProps<Extract<KcContext,
198
197
  id="kc-webauthn-authenticator-label"
199
198
  className={getClassName("kcSelectAuthListItemHeadingClass")}
200
199
  >
201
- {msg(authenticator.label as MessageKey)}
200
+ {advancedMsg(authenticator.label)}
202
201
  </div>
203
202
  {authenticator.transports.displayNameProperties?.length && (
204
203
  <div