keycloakify 10.0.0-rc.20 → 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.
- package/account/i18n/i18n.d.ts +19 -4
- package/account/i18n/i18n.js +26 -17
- package/account/i18n/i18n.js.map +1 -1
- package/account/pages/Totp.js +2 -2
- package/account/pages/Totp.js.map +1 -1
- package/bin/main.js +14 -7
- package/login/i18n/i18n.d.ts +19 -4
- package/login/i18n/i18n.js +22 -15
- package/login/i18n/i18n.js.map +1 -1
- package/login/pages/LoginConfigTotp.js +2 -2
- package/login/pages/LoginConfigTotp.js.map +1 -1
- package/login/pages/WebauthnAuthenticate.js +2 -2
- package/login/pages/WebauthnAuthenticate.js.map +1 -1
- package/package.json +1 -1
- package/src/account/i18n/i18n.tsx +55 -26
- package/src/account/pages/Totp.tsx +2 -5
- package/src/bin/tools/extractArchive.ts +9 -1
- package/src/login/i18n/i18n.tsx +47 -16
- package/src/login/pages/LoginConfigTotp.tsx +2 -3
- package/src/login/pages/WebauthnAuthenticate.tsx +2 -3
- package/vite-plugin/index.js +14 -7
package/account/i18n/i18n.d.ts
CHANGED
@@ -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
|
-
*
|
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 <strong>XXX</strong></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
|
-
*
|
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
|
};
|
package/account/i18n/i18n.js
CHANGED
@@ -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,
|
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, "<").replace(/>/g, ">"));
|
64
62
|
});
|
65
63
|
return messageWithArgsInjected;
|
66
64
|
})();
|
67
|
-
return
|
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,
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
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
|
87
|
+
return doRenderAsHtml ? _jsx("span", { dangerouslySetInnerHTML: { __html: resolvedComplexMessage } }) : resolvedComplexMessage;
|
79
88
|
}
|
80
89
|
return {
|
81
|
-
msgStr: (key, ...args) => resolveMsg({ key, args,
|
82
|
-
msg: (key, ...args) => resolveMsg({ key, args,
|
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
|
-
|
95
|
+
doRenderAsHtml: true
|
87
96
|
}),
|
88
97
|
advancedMsgStr: (key, ...args) => resolveMsgAdvanced({
|
89
98
|
key,
|
90
99
|
args,
|
91
|
-
|
100
|
+
doRenderAsHtml: false
|
92
101
|
})
|
93
102
|
};
|
94
103
|
}
|
package/account/i18n/i18n.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"i18n.js","sourceRoot":"","sources":["../../src/account/i18n/i18n.tsx"],"names":[],"mappings":";AAAA,OAAO,sCAAsC,CAAC;AAC9C,
|
1
|
+
{"version":3,"file":"i18n.js","sourceRoot":"","sources":["../../src/account/i18n/i18n.tsx"],"names":[],"mappings":"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"}
|
package/account/pages/Totp.js
CHANGED
@@ -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:
|
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":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAE9C,OAAO,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;
|
1
|
+
{"version":3,"file":"Totp.js","sourceRoot":"","sources":["../../src/account/pages/Totp.tsx"],"names":[],"mappings":"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"}
|
package/bin/main.js
CHANGED
@@ -6624,6 +6624,7 @@ var yauzl_1 = __importDefault(__nccwpck_require__(78781));
|
|
6624
6624
|
var stream_1 = __importDefault(__nccwpck_require__(12781));
|
6625
6625
|
var Deferred_1 = __nccwpck_require__(50689);
|
6626
6626
|
var path_1 = __nccwpck_require__(71017);
|
6627
|
+
var fs_existsAsync_1 = __nccwpck_require__(43765);
|
6627
6628
|
function extractArchive(params) {
|
6628
6629
|
return __awaiter(this, void 0, void 0, function () {
|
6629
6630
|
var archiveFilePath, onArchiveFile, zipFile, dDone, writeFile, readFile;
|
@@ -6652,21 +6653,27 @@ function extractArchive(params) {
|
|
6652
6653
|
dDone.resolve();
|
6653
6654
|
});
|
6654
6655
|
writeFile = function (entry, params) { return __awaiter(_this, void 0, void 0, function () {
|
6655
|
-
var filePath, modifiedData, readStream, dDoneWithFile;
|
6656
|
+
var filePath, modifiedData, dirPath, readStream, dDoneWithFile;
|
6656
6657
|
var _this = this;
|
6657
6658
|
return __generator(this, function (_a) {
|
6658
6659
|
switch (_a.label) {
|
6659
6660
|
case 0:
|
6660
6661
|
filePath = params.filePath, modifiedData = params.modifiedData;
|
6661
|
-
|
6662
|
+
dirPath = (0, path_1.dirname)(filePath);
|
6663
|
+
return [4 /*yield*/, (0, fs_existsAsync_1.existsAsync)(dirPath)];
|
6662
6664
|
case 1:
|
6665
|
+
if (!!(_a.sent())) return [3 /*break*/, 3];
|
6666
|
+
return [4 /*yield*/, promises_1.default.mkdir(dirPath, { recursive: true })];
|
6667
|
+
case 2:
|
6663
6668
|
_a.sent();
|
6664
|
-
|
6669
|
+
_a.label = 3;
|
6670
|
+
case 3:
|
6671
|
+
if (!(modifiedData !== undefined)) return [3 /*break*/, 5];
|
6665
6672
|
return [4 /*yield*/, promises_1.default.writeFile(filePath, modifiedData)];
|
6666
|
-
case
|
6673
|
+
case 4:
|
6667
6674
|
_a.sent();
|
6668
6675
|
return [2 /*return*/];
|
6669
|
-
case
|
6676
|
+
case 5: return [4 /*yield*/, new Promise(function (resolve) {
|
6670
6677
|
return zipFile.openReadStream(entry, function (error, readStream) { return __awaiter(_this, void 0, void 0, function () {
|
6671
6678
|
return __generator(this, function (_a) {
|
6672
6679
|
if (error) {
|
@@ -6678,7 +6685,7 @@ function extractArchive(params) {
|
|
6678
6685
|
});
|
6679
6686
|
}); });
|
6680
6687
|
})];
|
6681
|
-
case
|
6688
|
+
case 6:
|
6682
6689
|
readStream = _a.sent();
|
6683
6690
|
dDoneWithFile = new Deferred_1.Deferred();
|
6684
6691
|
stream_1.default.pipeline(readStream, fs_1.default.createWriteStream(filePath), function (error) {
|
@@ -6689,7 +6696,7 @@ function extractArchive(params) {
|
|
6689
6696
|
dDoneWithFile.resolve();
|
6690
6697
|
});
|
6691
6698
|
return [4 /*yield*/, dDoneWithFile.pr];
|
6692
|
-
case
|
6699
|
+
case 7:
|
6693
6700
|
_a.sent();
|
6694
6701
|
return [2 /*return*/];
|
6695
6702
|
}
|
package/login/i18n/i18n.d.ts
CHANGED
@@ -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
|
-
*
|
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 <strong>XXX</strong></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
|
-
*
|
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
|
};
|
package/login/i18n/i18n.js
CHANGED
@@ -37,7 +37,7 @@ export function createUseI18n(extraMessages) {
|
|
37
37
|
return { useI18n };
|
38
38
|
}
|
39
39
|
function createI18nTranslationFunctions(params) {
|
40
|
-
const { fallbackMessages, messages
|
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
|
-
|
75
|
-
|
76
|
-
|
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
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
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
|
96
|
+
return doRenderAsHtml ? _jsx("span", { dangerouslySetInnerHTML: { __html: resolvedComplexMessage } }) : resolvedComplexMessage;
|
90
97
|
}
|
91
98
|
return {
|
92
99
|
msgStr: (key, ...args) => resolveMsg({ key, args, doRenderAsHtml: false }),
|
package/login/i18n/i18n.js.map
CHANGED
@@ -1 +1 @@
|
|
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;
|
1
|
+
{"version":3,"file":"i18n.js","sourceRoot":"","sources":["../../src/login/i18n/i18n.tsx"],"names":[],"mappings":"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"}
|
@@ -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:
|
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":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAE9C,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;
|
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:
|
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":";AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;
|
1
|
+
{"version":3,"file":"WebauthnAuthenticate.js","sourceRoot":"","sources":["../../src/login/pages/WebauthnAuthenticate.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
@@ -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
|
-
*
|
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 <strong>XXX</strong></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
|
-
*
|
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)[];
|
137
|
-
const { key, args,
|
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(
|
179
|
+
messageWithArgsInjected = messageWithArgsInjected.replace(
|
180
|
+
new RegExp(`\\{${i + startIndex}\\}`, "g"),
|
181
|
+
arg.replace(/</g, "<").replace(/>/g, ">")
|
182
|
+
);
|
167
183
|
});
|
168
184
|
|
169
185
|
return messageWithArgsInjected;
|
170
186
|
})();
|
171
187
|
|
172
|
-
return
|
173
|
-
<
|
174
|
-
|
175
|
-
|
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)[];
|
182
|
-
const { key, args,
|
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
|
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
|
-
|
218
|
+
isFirstMatch = false;
|
187
219
|
|
188
|
-
|
189
|
-
key: keyUnwrappedFromCurlyBraces,
|
190
|
-
args,
|
191
|
-
doRenderMarkdown
|
220
|
+
return replaceBy;
|
192
221
|
});
|
193
222
|
|
194
|
-
return
|
223
|
+
return doRenderAsHtml ? <span dangerouslySetInnerHTML={{ __html: resolvedComplexMessage }} /> : resolvedComplexMessage;
|
195
224
|
}
|
196
225
|
|
197
226
|
return {
|
198
|
-
msgStr: (key, ...args) => resolveMsg({ key, args,
|
199
|
-
msg: (key, ...args) => resolveMsg({ key, args,
|
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
|
-
|
233
|
+
doRenderAsHtml: true
|
205
234
|
}) as JSX.Element,
|
206
235
|
advancedMsgStr: (key, ...args) =>
|
207
236
|
resolveMsgAdvanced({
|
208
237
|
key,
|
209
238
|
args,
|
210
|
-
|
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" ? (
|
@@ -4,12 +4,14 @@ import yauzl from "yauzl";
|
|
4
4
|
import stream from "stream";
|
5
5
|
import { Deferred } from "evt/tools/Deferred";
|
6
6
|
import { dirname as pathDirname, sep as pathSep } from "path";
|
7
|
+
import { existsAsync } from "./fs.existsAsync";
|
7
8
|
|
8
9
|
export async function extractArchive(params: {
|
9
10
|
archiveFilePath: string;
|
10
11
|
onArchiveFile: (params: {
|
11
12
|
relativeFilePathInArchive: string;
|
12
13
|
readFile: () => Promise<Buffer>;
|
14
|
+
/** NOTE: Will create the directory if it does not exist */
|
13
15
|
writeFile: (params: { filePath: string; modifiedData?: Buffer }) => Promise<void>;
|
14
16
|
earlyExit: () => void;
|
15
17
|
}) => Promise<void>;
|
@@ -42,7 +44,13 @@ export async function extractArchive(params: {
|
|
42
44
|
): Promise<void> => {
|
43
45
|
const { filePath, modifiedData } = params;
|
44
46
|
|
45
|
-
|
47
|
+
{
|
48
|
+
const dirPath = pathDirname(filePath);
|
49
|
+
|
50
|
+
if (!(await existsAsync(dirPath))) {
|
51
|
+
await fs.mkdir(dirPath, { recursive: true });
|
52
|
+
}
|
53
|
+
}
|
46
54
|
|
47
55
|
if (modifiedData !== undefined) {
|
48
56
|
await fs.writeFile(filePath, modifiedData);
|
package/src/login/i18n/i18n.tsx
CHANGED
@@ -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
|
-
*
|
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 <strong>XXX</strong></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
|
-
*
|
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
|
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
|
-
|
192
|
-
|
193
|
-
|
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
|
-
|
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
|
-
|
236
|
+
isFirstMatch = false;
|
203
237
|
|
204
|
-
|
205
|
-
key: keyUnwrappedFromCurlyBraces,
|
206
|
-
args,
|
207
|
-
doRenderAsHtml
|
238
|
+
return replaceBy;
|
208
239
|
});
|
209
240
|
|
210
|
-
return
|
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>{
|
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
|
-
{
|
200
|
+
{advancedMsg(authenticator.label)}
|
202
201
|
</div>
|
203
202
|
{authenticator.transports.displayNameProperties?.length && (
|
204
203
|
<div
|
package/vite-plugin/index.js
CHANGED
@@ -1704,6 +1704,7 @@ var yauzl_1 = __importDefault(__nccwpck_require__(8781));
|
|
1704
1704
|
var stream_1 = __importDefault(__nccwpck_require__(2781));
|
1705
1705
|
var Deferred_1 = __nccwpck_require__(689);
|
1706
1706
|
var path_1 = __nccwpck_require__(1017);
|
1707
|
+
var fs_existsAsync_1 = __nccwpck_require__(3765);
|
1707
1708
|
function extractArchive(params) {
|
1708
1709
|
return __awaiter(this, void 0, void 0, function () {
|
1709
1710
|
var archiveFilePath, onArchiveFile, zipFile, dDone, writeFile, readFile;
|
@@ -1732,21 +1733,27 @@ function extractArchive(params) {
|
|
1732
1733
|
dDone.resolve();
|
1733
1734
|
});
|
1734
1735
|
writeFile = function (entry, params) { return __awaiter(_this, void 0, void 0, function () {
|
1735
|
-
var filePath, modifiedData, readStream, dDoneWithFile;
|
1736
|
+
var filePath, modifiedData, dirPath, readStream, dDoneWithFile;
|
1736
1737
|
var _this = this;
|
1737
1738
|
return __generator(this, function (_a) {
|
1738
1739
|
switch (_a.label) {
|
1739
1740
|
case 0:
|
1740
1741
|
filePath = params.filePath, modifiedData = params.modifiedData;
|
1741
|
-
|
1742
|
+
dirPath = (0, path_1.dirname)(filePath);
|
1743
|
+
return [4 /*yield*/, (0, fs_existsAsync_1.existsAsync)(dirPath)];
|
1742
1744
|
case 1:
|
1745
|
+
if (!!(_a.sent())) return [3 /*break*/, 3];
|
1746
|
+
return [4 /*yield*/, promises_1.default.mkdir(dirPath, { recursive: true })];
|
1747
|
+
case 2:
|
1743
1748
|
_a.sent();
|
1744
|
-
|
1749
|
+
_a.label = 3;
|
1750
|
+
case 3:
|
1751
|
+
if (!(modifiedData !== undefined)) return [3 /*break*/, 5];
|
1745
1752
|
return [4 /*yield*/, promises_1.default.writeFile(filePath, modifiedData)];
|
1746
|
-
case
|
1753
|
+
case 4:
|
1747
1754
|
_a.sent();
|
1748
1755
|
return [2 /*return*/];
|
1749
|
-
case
|
1756
|
+
case 5: return [4 /*yield*/, new Promise(function (resolve) {
|
1750
1757
|
return zipFile.openReadStream(entry, function (error, readStream) { return __awaiter(_this, void 0, void 0, function () {
|
1751
1758
|
return __generator(this, function (_a) {
|
1752
1759
|
if (error) {
|
@@ -1758,7 +1765,7 @@ function extractArchive(params) {
|
|
1758
1765
|
});
|
1759
1766
|
}); });
|
1760
1767
|
})];
|
1761
|
-
case
|
1768
|
+
case 6:
|
1762
1769
|
readStream = _a.sent();
|
1763
1770
|
dDoneWithFile = new Deferred_1.Deferred();
|
1764
1771
|
stream_1.default.pipeline(readStream, fs_1.default.createWriteStream(filePath), function (error) {
|
@@ -1769,7 +1776,7 @@ function extractArchive(params) {
|
|
1769
1776
|
dDoneWithFile.resolve();
|
1770
1777
|
});
|
1771
1778
|
return [4 /*yield*/, dDoneWithFile.pr];
|
1772
|
-
case
|
1779
|
+
case 7:
|
1773
1780
|
_a.sent();
|
1774
1781
|
return [2 /*return*/];
|
1775
1782
|
}
|