keycloakify 11.8.57 → 11.9.0-rc.1
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/login/KcContext/KcContext.d.ts +3 -0
- package/login/KcContext/KcContext.js.map +1 -1
- package/login/Template.js +1 -1
- package/login/Template.js.map +1 -1
- package/login/Template.useInitialize.d.ts +3 -0
- package/login/Template.useInitialize.js +8 -5
- package/login/Template.useInitialize.js.map +1 -1
- package/login/pages/FrontchannelLogout.js +9 -16
- package/login/pages/FrontchannelLogout.js.map +1 -1
- package/login/pages/Register.js +11 -4
- package/login/pages/Register.js.map +1 -1
- package/login/pages/SamlPostForm.js +1 -1
- package/login/pages/SamlPostForm.js.map +1 -1
- package/login/pages/WebauthnError.js +1 -1
- package/login/pages/WebauthnError.js.map +1 -1
- package/package.json +2 -1
- package/res/public/keycloakify-dev-resources/login/js/authChecker.js +56 -16
- package/res/public/keycloakify-dev-resources/login/js/rfc4648.js +178 -0
- package/res/public/keycloakify-dev-resources/login/js/webauthnAuthenticate.js +9 -4
- package/res/public/keycloakify-dev-resources/login/js/webauthnRegister.js +8 -3
- package/src/bin/keycloakify/generateFtl/kcContextDeclarationTemplate.ftl +0 -15
- package/src/login/KcContext/KcContext.ts +5 -0
- package/src/login/Template.tsx +1 -1
- package/src/login/Template.useInitialize.ts +11 -5
- package/src/login/pages/FrontchannelLogout.tsx +14 -19
- package/src/login/pages/Register.tsx +13 -4
- package/src/login/pages/SamlPostForm.tsx +1 -1
- package/src/login/pages/WebauthnError.tsx +1 -1
@@ -97,6 +97,9 @@ export declare namespace KcContext {
|
|
97
97
|
exists: (fieldName: string) => boolean;
|
98
98
|
getFirstError: (...fieldNames: string[]) => string;
|
99
99
|
};
|
100
|
+
authenticationSession?: {
|
101
|
+
authSessionIdHash: string;
|
102
|
+
};
|
100
103
|
properties: {};
|
101
104
|
"x-keycloakify": {
|
102
105
|
messages: Record<string, string>;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"KcContext.js","sourceRoot":"","sources":["../../src/login/KcContext/KcContext.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AA+DtC,MAAM,EAA2D,CAAC;
|
1
|
+
{"version":3,"file":"KcContext.js","sourceRoot":"","sources":["../../src/login/KcContext/KcContext.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AA+DtC,MAAM,EAA2D,CAAC;AAqrBlE;IAOI,MAAM,EAA4B,CAAC;IACnC,MAAM,EAAiC,CAAC;CAC3C"}
|
package/login/Template.js
CHANGED
@@ -34,7 +34,7 @@ export default function Template(props) {
|
|
34
34
|
})()] })), _jsx("div", Object.assign({ id: "kc-content" }, { children: _jsxs("div", Object.assign({ id: "kc-content-wrapper" }, { children: [displayMessage && message !== undefined && (message.type !== "warning" || !isAppInitiatedAction) && (_jsxs("div", Object.assign({ className: clsx(`alert-${message.type}`, kcClsx("kcAlertClass"), `pf-m-${(message === null || message === void 0 ? void 0 : message.type) === "error" ? "danger" : message.type}`) }, { children: [_jsxs("div", Object.assign({ className: "pf-c-alert__icon" }, { children: [message.type === "success" && _jsx("span", { className: kcClsx("kcFeedbackSuccessIcon") }), message.type === "warning" && _jsx("span", { className: kcClsx("kcFeedbackWarningIcon") }), message.type === "error" && _jsx("span", { className: kcClsx("kcFeedbackErrorIcon") }), message.type === "info" && _jsx("span", { className: kcClsx("kcFeedbackInfoIcon") })] })), _jsx("span", { className: kcClsx("kcAlertTitleClass"), dangerouslySetInnerHTML: {
|
35
35
|
__html: kcSanitize(message.summary)
|
36
36
|
} })] }))), children, auth !== undefined && auth.showTryAnotherWayLink && (_jsx("form", Object.assign({ id: "kc-select-try-another-way-form", action: url.loginAction, method: "post" }, { children: _jsxs("div", Object.assign({ className: kcClsx("kcFormGroupClass") }, { children: [_jsx("input", { type: "hidden", name: "tryAnotherWay", value: "on" }), _jsx("a", Object.assign({ href: "#", id: "try-another-way", onClick: () => {
|
37
|
-
document.forms["kc-select-try-another-way-form"].
|
37
|
+
document.forms["kc-select-try-another-way-form"].requestSubmit();
|
38
38
|
return false;
|
39
39
|
} }, { children: msg("doTryAnotherWay") }))] })) }))), socialProvidersNode, displayInfo && (_jsx("div", Object.assign({ id: "kc-info", className: kcClsx("kcSignUpClass") }, { children: _jsx("div", Object.assign({ id: "kc-info-wrapper", className: kcClsx("kcInfoAreaWrapperClass") }, { children: infoNode })) })))] })) }))] }))] })));
|
40
40
|
}
|
package/login/Template.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Template.js","sourceRoot":"","sources":["../src/login/Template.tsx"],"names":[],"mappings":"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
|
1
|
+
{"version":3,"file":"Template.js","sourceRoot":"","sources":["../src/login/Template.tsx"],"names":[],"mappings":"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"}
|
@@ -35,11 +35,14 @@ export function useInitialize(params) {
|
|
35
35
|
}))),
|
36
36
|
{
|
37
37
|
type: "module",
|
38
|
-
textContent:
|
39
|
-
import {
|
40
|
-
|
41
|
-
|
42
|
-
|
38
|
+
textContent: [
|
39
|
+
`import { startSessionPolling, checkAuthSession } from "${url.resourcesPath}/js/authChecker.js";`,
|
40
|
+
``,
|
41
|
+
`startSessionPolling("${kcContext.url.ssoLoginInOtherTabsUrl}");`,
|
42
|
+
kcContext.authenticationSession === undefined
|
43
|
+
? ""
|
44
|
+
: `checkAuthSession("${kcContext.authenticationSession.authSessionIdHash}");`
|
45
|
+
].join("\n")
|
43
46
|
}
|
44
47
|
]
|
45
48
|
});
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Template.useInitialize.js","sourceRoot":"","sources":["../src/login/Template.useInitialize.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;
|
1
|
+
{"version":3,"file":"Template.useInitialize.js","sourceRoot":"","sources":["../src/login/Template.useInitialize.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAexE,MAAM,EAA8D,CAAC;AACrE,MAAM,EAAkD,CAAC;AAEzD,MAAM,UAAU,aAAa,CAAC,MAG7B;IACG,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,GAAG,MAAM,CAAC;IAE9C,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,SAAS,CAAC;IAEnC,MAAM,EAAE,uBAAuB,EAAE,GAAG,iBAAiB,CAAC;QAClD,mBAAmB,EAAE,UAAU;QAC/B,KAAK,EAAE,CAAC,eAAe;YACnB,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC;gBACI,GAAG,GAAG,CAAC,mBAAmB,yDAAyD;gBACnF,GAAG,GAAG,CAAC,mBAAmB,sDAAsD;gBAChF,GAAG,GAAG,CAAC,mBAAmB,gEAAgE;gBAC1F,GAAG,GAAG,CAAC,mBAAmB,wBAAwB;gBAClD,GAAG,GAAG,CAAC,aAAa,gBAAgB;aACvC;KACV,CAAC,CAAC;IAEH,MAAM,EAAE,gBAAgB,EAAE,GAAG,mBAAmB,CAAC;QAC7C,mBAAmB,EAAE,UAAU;QAC/B,UAAU,EAAE;YACR,0FAA0F;YAC1F;gBACI,IAAI,EAAE,QAAQ;gBACd,GAAG,EAAE,GAAG,GAAG,CAAC,aAAa,0BAA0B;aACtD;YACD,GAAG,CAAC,OAAO,KAAK,SAAS;gBACrB,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;oBAChB,IAAI,EAAE,iBAA0B;oBAChC,GAAG;iBACN,CAAC,CAAC,CAAC;YACV;gBACI,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE;oBACT,0DAA0D,GAAG,CAAC,aAAa,sBAAsB;oBACjG,EAAE;oBACF,wBAAwB,SAAS,CAAC,GAAG,CAAC,sBAAsB,KAAK;oBACjE,SAAS,CAAC,qBAAqB,KAAK,SAAS;wBACzC,CAAC,CAAC,EAAE;wBACJ,CAAC,CAAC,qBAAqB,SAAS,CAAC,qBAAqB,CAAC,iBAAiB,KAAK;iBACpF,CAAC,IAAI,CAAC,IAAI,CAAC;aACf;SACJ;KACJ,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,uBAAuB,EAAE;YACzB,gBAAgB,EAAE,CAAC;SACtB;IACL,CAAC,EAAE,CAAC,uBAAuB,CAAC,CAAC,CAAC;IAE9B,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,CAAC;AACxD,CAAC"}
|
@@ -1,28 +1,21 @@
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
2
|
-
import { useEffect } from "react";
|
2
|
+
import { useEffect, useState } from "react";
|
3
3
|
export default function FrontchannelLogout(props) {
|
4
4
|
const { kcContext, i18n, doUseDefaultCss, Template, classes } = props;
|
5
5
|
const { logout } = kcContext;
|
6
6
|
const { msg, msgStr } = i18n;
|
7
|
+
const [iframeLoadCount, setIframeLoadCount] = useState(0);
|
7
8
|
useEffect(() => {
|
8
|
-
|
9
|
-
if (logoutRedirectUri === undefined) {
|
9
|
+
if (!kcContext.logout.logoutRedirectUri) {
|
10
10
|
return;
|
11
11
|
}
|
12
|
-
if (
|
13
|
-
window.location.replace(logoutRedirectUri);
|
12
|
+
if (iframeLoadCount !== kcContext.logout.clients.length) {
|
14
13
|
return;
|
15
14
|
}
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
document.addEventListener("readystatechange", onReadystatechange);
|
22
|
-
return () => {
|
23
|
-
document.removeEventListener("readystatechange", onReadystatechange);
|
24
|
-
};
|
25
|
-
}, []);
|
26
|
-
return (_jsxs(Template, Object.assign({ kcContext: kcContext, i18n: i18n, doUseDefaultCss: doUseDefaultCss, classes: classes, documentTitle: msgStr("frontchannel-logout.title"), headerNode: msg("frontchannel-logout.title") }, { children: [_jsx("p", { children: msg("frontchannel-logout.message") }), _jsx("ul", { children: logout.clients.map(client => (_jsxs("li", { children: [client.name, _jsx("iframe", { src: client.frontChannelLogoutUrl, style: { display: "none" } })] }, client.name))) }), logout.logoutRedirectUri !== undefined && (_jsx("a", Object.assign({ id: "continue", className: "btn btn-primary", href: logout.logoutRedirectUri }, { children: msg("doContinue") })))] })));
|
15
|
+
window.location.replace(kcContext.logout.logoutRedirectUri);
|
16
|
+
}, [iframeLoadCount]);
|
17
|
+
return (_jsxs(Template, Object.assign({ kcContext: kcContext, i18n: i18n, doUseDefaultCss: doUseDefaultCss, classes: classes, documentTitle: msgStr("frontchannel-logout.title"), headerNode: msg("frontchannel-logout.title") }, { children: [_jsx("p", { children: msg("frontchannel-logout.message") }), _jsx("ul", { children: logout.clients.map(client => (_jsxs("li", { children: [client.name, _jsx("iframe", { src: client.frontChannelLogoutUrl, style: { display: "none" }, onLoad: () => {
|
18
|
+
setIframeLoadCount(count => count + 1);
|
19
|
+
} })] }, client.name))) }), logout.logoutRedirectUri !== undefined && (_jsx("a", Object.assign({ id: "continue", className: "btn btn-primary", href: logout.logoutRedirectUri }, { children: msg("doContinue") })))] })));
|
27
20
|
}
|
28
21
|
//# sourceMappingURL=FrontchannelLogout.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"FrontchannelLogout.js","sourceRoot":"","sources":["../../src/login/pages/FrontchannelLogout.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;
|
1
|
+
{"version":3,"file":"FrontchannelLogout.js","sourceRoot":"","sources":["../../src/login/pages/FrontchannelLogout.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAK5C,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,KAAiF;IACxH,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IAEtE,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAE7B,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAE7B,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAE1D,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,iBAAiB,EAAE;YACrC,OAAO;SACV;QAED,IAAI,eAAe,KAAK,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE;YACrD,OAAO;SACV;QAED,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAChE,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;IAEtB,OAAO,CACH,MAAC,QAAQ,kBACL,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,IAAI,EACV,eAAe,EAAE,eAAe,EAChC,OAAO,EAAE,OAAO,EAChB,aAAa,EAAE,MAAM,CAAC,2BAA2B,CAAC,EAClD,UAAU,EAAE,GAAG,CAAC,2BAA2B,CAAC,iBAE5C,sBAAI,GAAG,CAAC,6BAA6B,CAAC,GAAK,EAC3C,uBACK,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAC1B,yBACK,MAAM,CAAC,IAAI,EACZ,iBACI,GAAG,EAAE,MAAM,CAAC,qBAAqB,EACjC,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAC1B,MAAM,EAAE,GAAG,EAAE;gCACT,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;4BAC3C,CAAC,GACH,KARG,MAAM,CAAC,IAAI,CASf,CACR,CAAC,GACD,EACJ,MAAM,CAAC,iBAAiB,KAAK,SAAS,IAAI,CACvC,0BAAG,EAAE,EAAC,UAAU,EAAC,SAAS,EAAC,iBAAiB,EAAC,IAAI,EAAE,MAAM,CAAC,iBAAiB,gBACtE,GAAG,CAAC,YAAY,CAAC,IAClB,CACP,KACM,CACd,CAAC;AACN,CAAC"}
|
package/login/pages/Register.js
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
2
|
-
import { useState } from "react";
|
2
|
+
import { useState, useLayoutEffect } from "react";
|
3
3
|
import { kcSanitize } from "../../lib/kcSanitize";
|
4
4
|
import { getKcClsx } from "../../login/lib/kcClsx";
|
5
5
|
import { clsx } from "../../tools/clsx";
|
@@ -13,9 +13,16 @@ export default function Register(props) {
|
|
13
13
|
const { msg, msgStr, advancedMsg } = i18n;
|
14
14
|
const [isFormSubmittable, setIsFormSubmittable] = useState(false);
|
15
15
|
const [areTermsAccepted, setAreTermsAccepted] = useState(false);
|
16
|
-
|
17
|
-
|
18
|
-
|
16
|
+
useLayoutEffect(() => {
|
17
|
+
window["onSubmitRecaptcha"] = () => {
|
18
|
+
// @ts-expect-error
|
19
|
+
document.getElementById("kc-register-form").requestSubmit();
|
20
|
+
};
|
21
|
+
return () => {
|
22
|
+
delete window["onSubmitRecaptcha"];
|
23
|
+
};
|
24
|
+
}, []);
|
25
|
+
return (_jsx(Template, Object.assign({ kcContext: kcContext, i18n: i18n, doUseDefaultCss: doUseDefaultCss, classes: classes, headerNode: messageHeader !== undefined ? advancedMsg(messageHeader) : msg("registerTitle"), displayMessage: messagesPerField.exists("global"), displayRequiredFields: true }, { children: _jsxs("form", Object.assign({ id: "kc-register-form", className: kcClsx("kcFormClass"), action: url.registrationAction, method: "post" }, { children: [_jsx(UserProfileFormFields, { kcContext: kcContext, i18n: i18n, kcClsx: kcClsx, onIsFormSubmittableValueChange: setIsFormSubmittable, doMakeUserConfirmPassword: doMakeUserConfirmPassword }), termsAcceptanceRequired && (_jsx(TermsAcceptance, { i18n: i18n, kcClsx: kcClsx, messagesPerField: messagesPerField, areTermsAccepted: areTermsAccepted, onAreTermsAcceptedValueChange: setAreTermsAccepted })), recaptchaRequired && (recaptchaVisible || recaptchaAction === undefined) && (_jsx("div", Object.assign({ className: "form-group" }, { children: _jsx("div", Object.assign({ className: kcClsx("kcInputWrapperClass") }, { children: _jsx("div", { className: "g-recaptcha", "data-size": "compact", "data-sitekey": recaptchaSiteKey, "data-action": recaptchaAction }) })) }))), _jsxs("div", Object.assign({ className: kcClsx("kcFormGroupClass") }, { children: [_jsx("div", Object.assign({ id: "kc-form-options", className: kcClsx("kcFormOptionsClass") }, { children: _jsx("div", Object.assign({ className: kcClsx("kcFormOptionsWrapperClass") }, { children: _jsx("span", { children: _jsx("a", Object.assign({ href: url.loginUrl }, { children: msg("backToLogin") })) }) })) })), recaptchaRequired && !recaptchaVisible && recaptchaAction !== undefined ? (_jsx("div", Object.assign({ id: "kc-form-buttons", className: kcClsx("kcFormButtonsClass") }, { children: _jsx("button", Object.assign({ className: clsx(kcClsx("kcButtonClass", "kcButtonPrimaryClass", "kcButtonBlockClass", "kcButtonLargeClass"), "g-recaptcha"), "data-sitekey": recaptchaSiteKey, "data-callback": "onSubmitRecaptcha", "data-action": recaptchaAction, type: "submit" }, { children: msg("doRegister") })) }))) : (_jsx("div", Object.assign({ id: "kc-form-buttons", className: kcClsx("kcFormButtonsClass") }, { children: _jsx("input", { disabled: !isFormSubmittable || (termsAcceptanceRequired && !areTermsAccepted), className: kcClsx("kcButtonClass", "kcButtonPrimaryClass", "kcButtonBlockClass", "kcButtonLargeClass"), type: "submit", value: msgStr("doRegister") }) })))] }))] })) })));
|
19
26
|
}
|
20
27
|
function TermsAcceptance(props) {
|
21
28
|
const { i18n, kcClsx, messagesPerField, areTermsAccepted, onAreTermsAcceptedValueChange } = props;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Register.js","sourceRoot":"","sources":["../../src/login/pages/Register.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;
|
1
|
+
{"version":3,"file":"Register.js","sourceRoot":"","sources":["../../src/login/pages/Register.tsx"],"names":[],"mappings":"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"}
|
@@ -14,7 +14,7 @@ export default function SamlPostForm(props) {
|
|
14
14
|
alert("In a real Keycloak the user would be redirected immediately");
|
15
15
|
return;
|
16
16
|
}
|
17
|
-
htmlFormElement.
|
17
|
+
htmlFormElement.requestSubmit();
|
18
18
|
}, [htmlFormElement]);
|
19
19
|
return (_jsxs(Template, Object.assign({ kcContext: kcContext, i18n: i18n, doUseDefaultCss: doUseDefaultCss, classes: classes, headerNode: msg("saml.post-form.title") }, { children: [_jsx("p", { children: msg("saml.post-form.message") }), _jsxs("form", Object.assign({ name: "saml-post-binding", method: "post", action: samlPost.url, ref: setHtmlFormElement }, { children: [samlPost.SAMLRequest && _jsx("input", { type: "hidden", name: "SAMLRequest", value: samlPost.SAMLRequest }), samlPost.SAMLResponse && _jsx("input", { type: "hidden", name: "SAMLResponse", value: samlPost.SAMLResponse }), samlPost.relayState && _jsx("input", { type: "hidden", name: "RelayState", value: samlPost.relayState }), _jsxs("noscript", { children: [_jsx("p", { children: msg("saml.post-form.js-disabled") }), _jsx("input", { type: "submit", value: msgStr("doContinue") })] })] }))] })));
|
20
20
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"SamlPostForm.js","sourceRoot":"","sources":["../../src/login/pages/SamlPostForm.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAK5C,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,KAA4E;IAC7G,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IAEtE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IAE7B,MAAM,EAAE,QAAQ,EAAE,GAAG,SAAS,CAAC;IAE/B,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CAAyB,IAAI,CAAC,CAAC;IAErF,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,eAAe,KAAK,IAAI,EAAE;YAC1B,OAAO;SACV;QAED,YAAY;QACZ,IAAI,QAAQ,CAAC,GAAG,KAAK,GAAG,EAAE;YACtB,KAAK,CAAC,6DAA6D,CAAC,CAAC;YACrE,OAAO;SACV;QAED,eAAe,CAAC,
|
1
|
+
{"version":3,"file":"SamlPostForm.js","sourceRoot":"","sources":["../../src/login/pages/SamlPostForm.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAK5C,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,KAA4E;IAC7G,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IAEtE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IAE7B,MAAM,EAAE,QAAQ,EAAE,GAAG,SAAS,CAAC;IAE/B,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CAAyB,IAAI,CAAC,CAAC;IAErF,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,eAAe,KAAK,IAAI,EAAE;YAC1B,OAAO;SACV;QAED,YAAY;QACZ,IAAI,QAAQ,CAAC,GAAG,KAAK,GAAG,EAAE;YACtB,KAAK,CAAC,6DAA6D,CAAC,CAAC;YACrE,OAAO;SACV;QAED,eAAe,CAAC,aAAa,EAAE,CAAC;IACpC,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;IACtB,OAAO,CACH,MAAC,QAAQ,kBAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,eAAe,EAAE,eAAe,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,CAAC,sBAAsB,CAAC,iBACnI,sBAAI,GAAG,CAAC,wBAAwB,CAAC,GAAK,EACtC,8BAAM,IAAI,EAAC,mBAAmB,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,kBAAkB,iBACrF,QAAQ,CAAC,WAAW,IAAI,gBAAO,IAAI,EAAC,QAAQ,EAAC,IAAI,EAAC,aAAa,EAAC,KAAK,EAAE,QAAQ,CAAC,WAAW,GAAI,EAC/F,QAAQ,CAAC,YAAY,IAAI,gBAAO,IAAI,EAAC,QAAQ,EAAC,IAAI,EAAC,cAAc,EAAC,KAAK,EAAE,QAAQ,CAAC,YAAY,GAAI,EAClG,QAAQ,CAAC,UAAU,IAAI,gBAAO,IAAI,EAAC,QAAQ,EAAC,IAAI,EAAC,YAAY,EAAC,KAAK,EAAE,QAAQ,CAAC,UAAU,GAAI,EAC7F,+BACI,sBAAI,GAAG,CAAC,4BAA4B,CAAC,GAAK,EAC1C,gBAAO,IAAI,EAAC,QAAQ,EAAC,KAAK,EAAE,MAAM,CAAC,YAAY,CAAC,GAAI,IAC7C,KACR,KACA,CACd,CAAC;AACN,CAAC"}
|
@@ -14,7 +14,7 @@ export default function WebauthnError(props) {
|
|
14
14
|
// @ts-expect-error: Trusted Keycloak's code
|
15
15
|
document.getElementById("executionValue").value = "${execution}";
|
16
16
|
// @ts-expect-error: Trusted Keycloak's code
|
17
|
-
document.getElementById("kc-error-credential-form").
|
17
|
+
document.getElementById("kc-error-credential-form").requestSubmit();
|
18
18
|
}, type: "button", className: kcClsx("kcButtonClass", "kcButtonPrimaryClass", "kcButtonBlockClass", "kcButtonLargeClass"), name: "try-again", id: "kc-try-again", value: msgStr("doTryAgain") }), isAppInitiatedAction && (_jsx("form", Object.assign({ action: url.loginAction, className: kcClsx("kcFormClass"), id: "kc-webauthn-settings-form", method: "post" }, { children: _jsx("button", Object.assign({ type: "submit", className: kcClsx("kcButtonClass", "kcButtonDefaultClass", "kcButtonBlockClass", "kcButtonLargeClass"), id: "cancelWebAuthnAIA", name: "cancel-aia", value: "true" }, { children: msgStr("doCancel") })) })))] })));
|
19
19
|
}
|
20
20
|
//# sourceMappingURL=WebauthnError.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"WebauthnError.js","sourceRoot":"","sources":["../../src/login/pages/WebauthnError.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAKzD,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,KAA4E;IAC9G,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IAEtE,MAAM,EAAE,GAAG,EAAE,oBAAoB,EAAE,GAAG,SAAS,CAAC;IAEhD,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAE7B,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;QACzB,eAAe;QACf,OAAO;KACV,CAAC,CAAC;IAEH,OAAO,CACH,MAAC,QAAQ,kBACL,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,IAAI,EACV,eAAe,EAAE,eAAe,EAChC,OAAO,EAAE,OAAO,EAChB,cAAc,QACd,UAAU,EAAE,GAAG,CAAC,sBAAsB,CAAC,iBAEvC,8BAAM,EAAE,EAAC,0BAA0B,EAAC,SAAS,EAAE,MAAM,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,WAAW,EAAE,MAAM,EAAC,MAAM,iBACxG,gBAAO,IAAI,EAAC,QAAQ,EAAC,EAAE,EAAC,gBAAgB,EAAC,IAAI,EAAC,yBAAyB,GAAG,EAC1E,gBAAO,IAAI,EAAC,QAAQ,EAAC,EAAE,EAAC,YAAY,EAAC,IAAI,EAAC,YAAY,GAAG,KACtD,EACP,gBACI,QAAQ,EAAE,CAAC,EACX,OAAO,EAAE,GAAG,EAAE;oBACV,4CAA4C;oBAC5C,QAAQ,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,KAAK,GAAG,OAAO,CAAC;oBACtD,4CAA4C;oBAC5C,QAAQ,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC,KAAK,GAAG,cAAc,CAAC;oBACjE,4CAA4C;oBAC5C,QAAQ,CAAC,cAAc,CAAC,0BAA0B,CAAC,CAAC,
|
1
|
+
{"version":3,"file":"WebauthnError.js","sourceRoot":"","sources":["../../src/login/pages/WebauthnError.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAKzD,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,KAA4E;IAC9G,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IAEtE,MAAM,EAAE,GAAG,EAAE,oBAAoB,EAAE,GAAG,SAAS,CAAC;IAEhD,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAE7B,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;QACzB,eAAe;QACf,OAAO;KACV,CAAC,CAAC;IAEH,OAAO,CACH,MAAC,QAAQ,kBACL,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,IAAI,EACV,eAAe,EAAE,eAAe,EAChC,OAAO,EAAE,OAAO,EAChB,cAAc,QACd,UAAU,EAAE,GAAG,CAAC,sBAAsB,CAAC,iBAEvC,8BAAM,EAAE,EAAC,0BAA0B,EAAC,SAAS,EAAE,MAAM,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,WAAW,EAAE,MAAM,EAAC,MAAM,iBACxG,gBAAO,IAAI,EAAC,QAAQ,EAAC,EAAE,EAAC,gBAAgB,EAAC,IAAI,EAAC,yBAAyB,GAAG,EAC1E,gBAAO,IAAI,EAAC,QAAQ,EAAC,EAAE,EAAC,YAAY,EAAC,IAAI,EAAC,YAAY,GAAG,KACtD,EACP,gBACI,QAAQ,EAAE,CAAC,EACX,OAAO,EAAE,GAAG,EAAE;oBACV,4CAA4C;oBAC5C,QAAQ,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,KAAK,GAAG,OAAO,CAAC;oBACtD,4CAA4C;oBAC5C,QAAQ,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC,KAAK,GAAG,cAAc,CAAC;oBACjE,4CAA4C;oBAC5C,QAAQ,CAAC,cAAc,CAAC,0BAA0B,CAAC,CAAC,aAAa,EAAE,CAAC;gBACxE,CAAC,EACD,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,MAAM,CAAC,eAAe,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,oBAAoB,CAAC,EACtG,IAAI,EAAC,WAAW,EAChB,EAAE,EAAC,cAAc,EACjB,KAAK,EAAE,MAAM,CAAC,YAAY,CAAC,GAC7B,EACD,oBAAoB,IAAI,CACrB,6BAAM,MAAM,EAAE,GAAG,CAAC,WAAW,EAAE,SAAS,EAAE,MAAM,CAAC,aAAa,CAAC,EAAE,EAAE,EAAC,2BAA2B,EAAC,MAAM,EAAC,MAAM,gBACzG,+BACI,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,MAAM,CAAC,eAAe,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,oBAAoB,CAAC,EACtG,EAAE,EAAC,mBAAmB,EACtB,IAAI,EAAC,YAAY,EACjB,KAAK,EAAC,MAAM,gBAEX,MAAM,CAAC,UAAU,CAAC,IACd,IACN,CACV,KACM,CACd,CAAC;AACN,CAAC"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "keycloakify",
|
3
|
-
"version": "11.
|
3
|
+
"version": "11.9.0-rc.1",
|
4
4
|
"description": "Framework to create custom Keycloak UIs",
|
5
5
|
"repository": {
|
6
6
|
"type": "git",
|
@@ -571,6 +571,7 @@
|
|
571
571
|
"res/public/keycloakify-dev-resources/login/js/menu-button-links.js",
|
572
572
|
"res/public/keycloakify-dev-resources/login/js/passkeysConditionalAuth.js",
|
573
573
|
"res/public/keycloakify-dev-resources/login/js/passwordVisibility.js",
|
574
|
+
"res/public/keycloakify-dev-resources/login/js/rfc4648.js",
|
574
575
|
"res/public/keycloakify-dev-resources/login/js/userProfile.js",
|
575
576
|
"res/public/keycloakify-dev-resources/login/js/webauthnAuthenticate.js",
|
576
577
|
"res/public/keycloakify-dev-resources/login/js/webauthnRegister.js",
|
@@ -1,18 +1,28 @@
|
|
1
|
-
const CHECK_INTERVAL_MILLISECS = 2000;
|
2
|
-
const initialSession = getSession();
|
3
1
|
|
2
|
+
|
3
|
+
// Updated version see: https://github.com/keycloak/keycloak/commit/687223f3b17f1804ddea1b74cacdc6b3564b73e6#diff-5a9ff6592fed58c35e85ac4e917f1ea50fa27592d63728292c7f1e6798a430b5
|
4
|
+
|
5
|
+
const SESSION_POLLING_INTERVAL = 2000;
|
6
|
+
const AUTH_SESSION_TIMEOUT_MILLISECS = 1000;
|
7
|
+
const initialSession = getSession();
|
8
|
+
const forms = Array.from(document.forms);
|
4
9
|
let timeout;
|
5
10
|
|
6
|
-
//
|
7
|
-
//
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
11
|
+
// Stop polling for a session when a form is submitted to prevent unexpected redirects.
|
12
|
+
// This is required as Safari does not support the 'beforeunload' event properly.
|
13
|
+
// See: https://bugs.webkit.org/show_bug.cgi?id=219102
|
14
|
+
forms.forEach((form) =>
|
15
|
+
form.addEventListener("submit", () => stopSessionPolling()),
|
16
|
+
);
|
17
|
+
|
18
|
+
// Stop polling for a session when the page is unloaded to prevent unexpected redirects.
|
19
|
+
globalThis.addEventListener("beforeunload", () => stopSessionPolling());
|
14
20
|
|
15
|
-
|
21
|
+
/**
|
22
|
+
* Starts polling to check if a new session was started in another context (e.g. a tab or window), and redirects to the specified URL if a session is detected.
|
23
|
+
* @param {string} redirectUrl - The URL to redirect to if a new session is detected.
|
24
|
+
*/
|
25
|
+
export function startSessionPolling(redirectUrl) {
|
16
26
|
if (initialSession) {
|
17
27
|
// We started with a session, so there is nothing to do, exit.
|
18
28
|
return;
|
@@ -21,17 +31,44 @@ export function checkCookiesAndSetTimer(loginRestartUrl) {
|
|
21
31
|
const session = getSession();
|
22
32
|
|
23
33
|
if (!session) {
|
24
|
-
//
|
34
|
+
// No new session detected, check again later.
|
25
35
|
timeout = setTimeout(
|
26
|
-
() =>
|
27
|
-
|
36
|
+
() => startSessionPolling(redirectUrl),
|
37
|
+
SESSION_POLLING_INTERVAL,
|
28
38
|
);
|
29
39
|
} else {
|
30
|
-
//
|
31
|
-
location.href =
|
40
|
+
// A new session was detected, redirect to the specified URL and stop polling.
|
41
|
+
location.href = redirectUrl;
|
42
|
+
stopSessionPolling();
|
32
43
|
}
|
33
44
|
}
|
34
45
|
|
46
|
+
/**
|
47
|
+
* Stops polling the session.
|
48
|
+
*/
|
49
|
+
function stopSessionPolling() {
|
50
|
+
if (timeout) {
|
51
|
+
clearTimeout(timeout);
|
52
|
+
timeout = undefined;
|
53
|
+
}
|
54
|
+
}
|
55
|
+
|
56
|
+
export function checkAuthSession(pageAuthSessionHash) {
|
57
|
+
setTimeout(() => {
|
58
|
+
const cookieAuthSessionHash = getKcAuthSessionHash();
|
59
|
+
if (
|
60
|
+
cookieAuthSessionHash &&
|
61
|
+
cookieAuthSessionHash !== pageAuthSessionHash
|
62
|
+
) {
|
63
|
+
location.reload();
|
64
|
+
}
|
65
|
+
}, AUTH_SESSION_TIMEOUT_MILLISECS);
|
66
|
+
}
|
67
|
+
|
68
|
+
function getKcAuthSessionHash() {
|
69
|
+
return getCookieByName("KC_AUTH_SESSION_HASH");
|
70
|
+
}
|
71
|
+
|
35
72
|
function getSession() {
|
36
73
|
return getCookieByName("KEYCLOAK_SESSION");
|
37
74
|
}
|
@@ -47,3 +84,6 @@ function getCookieByName(name) {
|
|
47
84
|
}
|
48
85
|
return null;
|
49
86
|
}
|
87
|
+
|
88
|
+
|
89
|
+
|
@@ -0,0 +1,178 @@
|
|
1
|
+
/* eslint-disable @typescript-eslint/strict-boolean-expressions */
|
2
|
+
function parse(string, encoding, opts) {
|
3
|
+
var _opts$out;
|
4
|
+
|
5
|
+
if (opts === void 0) {
|
6
|
+
opts = {};
|
7
|
+
}
|
8
|
+
|
9
|
+
// Build the character lookup table:
|
10
|
+
if (!encoding.codes) {
|
11
|
+
encoding.codes = {};
|
12
|
+
|
13
|
+
for (var i = 0; i < encoding.chars.length; ++i) {
|
14
|
+
encoding.codes[encoding.chars[i]] = i;
|
15
|
+
}
|
16
|
+
} // The string must have a whole number of bytes:
|
17
|
+
|
18
|
+
|
19
|
+
if (!opts.loose && string.length * encoding.bits & 7) {
|
20
|
+
throw new SyntaxError('Invalid padding');
|
21
|
+
} // Count the padding bytes:
|
22
|
+
|
23
|
+
|
24
|
+
var end = string.length;
|
25
|
+
|
26
|
+
while (string[end - 1] === '=') {
|
27
|
+
--end; // If we get a whole number of bytes, there is too much padding:
|
28
|
+
|
29
|
+
if (!opts.loose && !((string.length - end) * encoding.bits & 7)) {
|
30
|
+
throw new SyntaxError('Invalid padding');
|
31
|
+
}
|
32
|
+
} // Allocate the output:
|
33
|
+
|
34
|
+
|
35
|
+
var out = new ((_opts$out = opts.out) != null ? _opts$out : Uint8Array)(end * encoding.bits / 8 | 0); // Parse the data:
|
36
|
+
|
37
|
+
var bits = 0; // Number of bits currently in the buffer
|
38
|
+
|
39
|
+
var buffer = 0; // Bits waiting to be written out, MSB first
|
40
|
+
|
41
|
+
var written = 0; // Next byte to write
|
42
|
+
|
43
|
+
for (var _i = 0; _i < end; ++_i) {
|
44
|
+
// Read one character from the string:
|
45
|
+
var value = encoding.codes[string[_i]];
|
46
|
+
|
47
|
+
if (value === undefined) {
|
48
|
+
throw new SyntaxError('Invalid character ' + string[_i]);
|
49
|
+
} // Append the bits to the buffer:
|
50
|
+
|
51
|
+
|
52
|
+
buffer = buffer << encoding.bits | value;
|
53
|
+
bits += encoding.bits; // Write out some bits if the buffer has a byte's worth:
|
54
|
+
|
55
|
+
if (bits >= 8) {
|
56
|
+
bits -= 8;
|
57
|
+
out[written++] = 0xff & buffer >> bits;
|
58
|
+
}
|
59
|
+
} // Verify that we have received just enough bits:
|
60
|
+
|
61
|
+
|
62
|
+
if (bits >= encoding.bits || 0xff & buffer << 8 - bits) {
|
63
|
+
throw new SyntaxError('Unexpected end of data');
|
64
|
+
}
|
65
|
+
|
66
|
+
return out;
|
67
|
+
}
|
68
|
+
function stringify(data, encoding, opts) {
|
69
|
+
if (opts === void 0) {
|
70
|
+
opts = {};
|
71
|
+
}
|
72
|
+
|
73
|
+
var _opts = opts,
|
74
|
+
_opts$pad = _opts.pad,
|
75
|
+
pad = _opts$pad === void 0 ? true : _opts$pad;
|
76
|
+
var mask = (1 << encoding.bits) - 1;
|
77
|
+
var out = '';
|
78
|
+
var bits = 0; // Number of bits currently in the buffer
|
79
|
+
|
80
|
+
var buffer = 0; // Bits waiting to be written out, MSB first
|
81
|
+
|
82
|
+
for (var i = 0; i < data.length; ++i) {
|
83
|
+
// Slurp data into the buffer:
|
84
|
+
buffer = buffer << 8 | 0xff & data[i];
|
85
|
+
bits += 8; // Write out as much as we can:
|
86
|
+
|
87
|
+
while (bits > encoding.bits) {
|
88
|
+
bits -= encoding.bits;
|
89
|
+
out += encoding.chars[mask & buffer >> bits];
|
90
|
+
}
|
91
|
+
} // Partial character:
|
92
|
+
|
93
|
+
|
94
|
+
if (bits) {
|
95
|
+
out += encoding.chars[mask & buffer << encoding.bits - bits];
|
96
|
+
} // Add padding characters until we hit a byte boundary:
|
97
|
+
|
98
|
+
|
99
|
+
if (pad) {
|
100
|
+
while (out.length * encoding.bits & 7) {
|
101
|
+
out += '=';
|
102
|
+
}
|
103
|
+
}
|
104
|
+
|
105
|
+
return out;
|
106
|
+
}
|
107
|
+
|
108
|
+
/* eslint-disable @typescript-eslint/strict-boolean-expressions */
|
109
|
+
var base16Encoding = {
|
110
|
+
chars: '0123456789ABCDEF',
|
111
|
+
bits: 4
|
112
|
+
};
|
113
|
+
var base32Encoding = {
|
114
|
+
chars: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567',
|
115
|
+
bits: 5
|
116
|
+
};
|
117
|
+
var base32HexEncoding = {
|
118
|
+
chars: '0123456789ABCDEFGHIJKLMNOPQRSTUV',
|
119
|
+
bits: 5
|
120
|
+
};
|
121
|
+
var base64Encoding = {
|
122
|
+
chars: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',
|
123
|
+
bits: 6
|
124
|
+
};
|
125
|
+
var base64UrlEncoding = {
|
126
|
+
chars: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_',
|
127
|
+
bits: 6
|
128
|
+
};
|
129
|
+
var base16 = {
|
130
|
+
parse: function parse$1(string, opts) {
|
131
|
+
return parse(string.toUpperCase(), base16Encoding, opts);
|
132
|
+
},
|
133
|
+
stringify: function stringify$1(data, opts) {
|
134
|
+
return stringify(data, base16Encoding, opts);
|
135
|
+
}
|
136
|
+
};
|
137
|
+
var base32 = {
|
138
|
+
parse: function parse$1(string, opts) {
|
139
|
+
if (opts === void 0) {
|
140
|
+
opts = {};
|
141
|
+
}
|
142
|
+
|
143
|
+
return parse(opts.loose ? string.toUpperCase().replace(/0/g, 'O').replace(/1/g, 'L').replace(/8/g, 'B') : string, base32Encoding, opts);
|
144
|
+
},
|
145
|
+
stringify: function stringify$1(data, opts) {
|
146
|
+
return stringify(data, base32Encoding, opts);
|
147
|
+
}
|
148
|
+
};
|
149
|
+
var base32hex = {
|
150
|
+
parse: function parse$1(string, opts) {
|
151
|
+
return parse(string, base32HexEncoding, opts);
|
152
|
+
},
|
153
|
+
stringify: function stringify$1(data, opts) {
|
154
|
+
return stringify(data, base32HexEncoding, opts);
|
155
|
+
}
|
156
|
+
};
|
157
|
+
var base64 = {
|
158
|
+
parse: function parse$1(string, opts) {
|
159
|
+
return parse(string, base64Encoding, opts);
|
160
|
+
},
|
161
|
+
stringify: function stringify$1(data, opts) {
|
162
|
+
return stringify(data, base64Encoding, opts);
|
163
|
+
}
|
164
|
+
};
|
165
|
+
var base64url = {
|
166
|
+
parse: function parse$1(string, opts) {
|
167
|
+
return parse(string, base64UrlEncoding, opts);
|
168
|
+
},
|
169
|
+
stringify: function stringify$1(data, opts) {
|
170
|
+
return stringify(data, base64UrlEncoding, opts);
|
171
|
+
}
|
172
|
+
};
|
173
|
+
var codec = {
|
174
|
+
parse: parse,
|
175
|
+
stringify: stringify
|
176
|
+
};
|
177
|
+
|
178
|
+
export { base16, base32, base32hex, base64, base64url, codec };
|
@@ -1,4 +1,6 @@
|
|
1
|
-
|
1
|
+
|
2
|
+
|
3
|
+
import { base64url } from "./rfc4648.js";
|
2
4
|
|
3
5
|
export async function authenticateByWebAuthn(input) {
|
4
6
|
if (!input.isUserIdentified) {
|
@@ -73,10 +75,13 @@ export function returnSuccess(result) {
|
|
73
75
|
if (result.response.userHandle) {
|
74
76
|
document.getElementById("userHandle").value = base64url.stringify(new Uint8Array(result.response.userHandle), { pad: false });
|
75
77
|
}
|
76
|
-
document.getElementById("webauth").
|
78
|
+
document.getElementById("webauth").requestSubmit();
|
77
79
|
}
|
78
80
|
|
79
81
|
export function returnFailure(err) {
|
80
82
|
document.getElementById("error").value = err;
|
81
|
-
document.getElementById("webauth").
|
82
|
-
}
|
83
|
+
document.getElementById("webauth").requestSubmit();
|
84
|
+
}
|
85
|
+
|
86
|
+
|
87
|
+
|
@@ -1,4 +1,6 @@
|
|
1
|
-
|
1
|
+
|
2
|
+
|
3
|
+
import { base64url } from "./rfc4648.js";
|
2
4
|
|
3
5
|
export async function registerByWebAuthn(input) {
|
4
6
|
|
@@ -131,10 +133,13 @@ function returnSuccess(result, initLabel, initLabelPrompt) {
|
|
131
133
|
}
|
132
134
|
document.getElementById("authenticatorLabel").value = labelResult;
|
133
135
|
|
134
|
-
document.getElementById("register").
|
136
|
+
document.getElementById("register").requestSubmit();
|
135
137
|
}
|
136
138
|
|
137
139
|
function returnFailure(err) {
|
138
140
|
document.getElementById("error").value = err;
|
139
|
-
document.getElementById("register").
|
141
|
+
document.getElementById("register").requestSubmit();
|
140
142
|
}
|
143
|
+
|
144
|
+
|
145
|
+
|
@@ -127,21 +127,6 @@ redirect_to_dev_server: {
|
|
127
127
|
|
128
128
|
window.kcContext = kcContext;
|
129
129
|
|
130
|
-
|
131
|
-
<#if xKeycloakify.themeType == "login" >
|
132
|
-
{
|
133
|
-
const script = document.createElement("script");
|
134
|
-
script.type = "importmap";
|
135
|
-
script.textContent = JSON.stringify({
|
136
|
-
imports: {
|
137
|
-
"rfc4648": kcContext.url.resourcesCommonPath + "/node_modules/rfc4648/lib/rfc4648.js"
|
138
|
-
}
|
139
|
-
}, null, 2);
|
140
|
-
|
141
|
-
document.head.appendChild(script);
|
142
|
-
}
|
143
|
-
</#if>
|
144
|
-
|
145
130
|
function decodeHtmlEntities(htmlStr){
|
146
131
|
var element = decodeHtmlEntities.element;
|
147
132
|
if (!element) {
|
@@ -150,6 +150,11 @@ export declare namespace KcContext {
|
|
150
150
|
|
151
151
|
getFirstError: (...fieldNames: string[]) => string;
|
152
152
|
};
|
153
|
+
|
154
|
+
authenticationSession?: {
|
155
|
+
authSessionIdHash: string;
|
156
|
+
};
|
157
|
+
|
153
158
|
properties: {};
|
154
159
|
"x-keycloakify": {
|
155
160
|
messages: Record<string, string>;
|
package/src/login/Template.tsx
CHANGED
@@ -160,7 +160,7 @@ export default function Template(props: TemplateProps<KcContext, I18n>) {
|
|
160
160
|
href="#"
|
161
161
|
id="try-another-way"
|
162
162
|
onClick={() => {
|
163
|
-
document.forms["kc-select-try-another-way-form" as never].
|
163
|
+
document.forms["kc-select-try-another-way-form" as never].requestSubmit();
|
164
164
|
return false;
|
165
165
|
}}
|
166
166
|
>
|
@@ -11,6 +11,9 @@ export type KcContextLike = {
|
|
11
11
|
ssoLoginInOtherTabsUrl: string;
|
12
12
|
};
|
13
13
|
scripts?: string[];
|
14
|
+
authenticationSession?: {
|
15
|
+
authSessionIdHash: string;
|
16
|
+
};
|
14
17
|
};
|
15
18
|
|
16
19
|
assert<keyof KcContextLike extends keyof KcContext ? true : false>();
|
@@ -53,11 +56,14 @@ export function useInitialize(params: {
|
|
53
56
|
}))),
|
54
57
|
{
|
55
58
|
type: "module",
|
56
|
-
textContent:
|
57
|
-
import {
|
58
|
-
|
59
|
-
|
60
|
-
|
59
|
+
textContent: [
|
60
|
+
`import { startSessionPolling, checkAuthSession } from "${url.resourcesPath}/js/authChecker.js";`,
|
61
|
+
``,
|
62
|
+
`startSessionPolling("${kcContext.url.ssoLoginInOtherTabsUrl}");`,
|
63
|
+
kcContext.authenticationSession === undefined
|
64
|
+
? ""
|
65
|
+
: `checkAuthSession("${kcContext.authenticationSession.authSessionIdHash}");`
|
66
|
+
].join("\n")
|
61
67
|
}
|
62
68
|
]
|
63
69
|
});
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import { useEffect } from "react";
|
1
|
+
import { useEffect, useState } from "react";
|
2
2
|
import type { PageProps } from "keycloakify/login/pages/PageProps";
|
3
3
|
import type { KcContext } from "../KcContext";
|
4
4
|
import type { I18n } from "../i18n";
|
@@ -10,30 +10,19 @@ export default function FrontchannelLogout(props: PageProps<Extract<KcContext, {
|
|
10
10
|
|
11
11
|
const { msg, msgStr } = i18n;
|
12
12
|
|
13
|
-
|
14
|
-
const { logoutRedirectUri } = logout;
|
13
|
+
const [iframeLoadCount, setIframeLoadCount] = useState(0);
|
15
14
|
|
16
|
-
|
15
|
+
useEffect(() => {
|
16
|
+
if (!kcContext.logout.logoutRedirectUri) {
|
17
17
|
return;
|
18
18
|
}
|
19
19
|
|
20
|
-
if (
|
21
|
-
window.location.replace(logoutRedirectUri);
|
20
|
+
if (iframeLoadCount !== kcContext.logout.clients.length) {
|
22
21
|
return;
|
23
22
|
}
|
24
23
|
|
25
|
-
|
26
|
-
|
27
|
-
window.location.replace(logoutRedirectUri);
|
28
|
-
}
|
29
|
-
};
|
30
|
-
|
31
|
-
document.addEventListener("readystatechange", onReadystatechange);
|
32
|
-
|
33
|
-
return () => {
|
34
|
-
document.removeEventListener("readystatechange", onReadystatechange);
|
35
|
-
};
|
36
|
-
}, []);
|
24
|
+
window.location.replace(kcContext.logout.logoutRedirectUri);
|
25
|
+
}, [iframeLoadCount]);
|
37
26
|
|
38
27
|
return (
|
39
28
|
<Template
|
@@ -49,7 +38,13 @@ export default function FrontchannelLogout(props: PageProps<Extract<KcContext, {
|
|
49
38
|
{logout.clients.map(client => (
|
50
39
|
<li key={client.name}>
|
51
40
|
{client.name}
|
52
|
-
<iframe
|
41
|
+
<iframe
|
42
|
+
src={client.frontChannelLogoutUrl}
|
43
|
+
style={{ display: "none" }}
|
44
|
+
onLoad={() => {
|
45
|
+
setIframeLoadCount(count => count + 1);
|
46
|
+
}}
|
47
|
+
/>
|
53
48
|
</li>
|
54
49
|
))}
|
55
50
|
</ul>
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import type { JSX } from "keycloakify/tools/JSX";
|
2
|
-
import { useState } from "react";
|
2
|
+
import { useState, useLayoutEffect } from "react";
|
3
3
|
import type { LazyOrNot } from "keycloakify/tools/LazyOrNot";
|
4
4
|
import { kcSanitize } from "keycloakify/lib/kcSanitize";
|
5
5
|
import { getKcClsx, type KcClsx } from "keycloakify/login/lib/kcClsx";
|
@@ -30,6 +30,17 @@ export default function Register(props: RegisterProps) {
|
|
30
30
|
const [isFormSubmittable, setIsFormSubmittable] = useState(false);
|
31
31
|
const [areTermsAccepted, setAreTermsAccepted] = useState(false);
|
32
32
|
|
33
|
+
useLayoutEffect(() => {
|
34
|
+
(window as any)["onSubmitRecaptcha"] = () => {
|
35
|
+
// @ts-expect-error
|
36
|
+
document.getElementById("kc-register-form").requestSubmit();
|
37
|
+
};
|
38
|
+
|
39
|
+
return () => {
|
40
|
+
delete (window as any)["onSubmitRecaptcha"];
|
41
|
+
};
|
42
|
+
}, []);
|
43
|
+
|
33
44
|
return (
|
34
45
|
<Template
|
35
46
|
kcContext={kcContext}
|
@@ -81,9 +92,7 @@ export default function Register(props: RegisterProps) {
|
|
81
92
|
"g-recaptcha"
|
82
93
|
)}
|
83
94
|
data-sitekey={recaptchaSiteKey}
|
84
|
-
data-callback=
|
85
|
-
(document.getElementById("kc-register-form") as HTMLFormElement).submit();
|
86
|
-
}}
|
95
|
+
data-callback="onSubmitRecaptcha"
|
87
96
|
data-action={recaptchaAction}
|
88
97
|
type="submit"
|
89
98
|
>
|
@@ -23,7 +23,7 @@ export default function SamlPostForm(props: PageProps<Extract<KcContext, { pageI
|
|
23
23
|
return;
|
24
24
|
}
|
25
25
|
|
26
|
-
htmlFormElement.
|
26
|
+
htmlFormElement.requestSubmit();
|
27
27
|
}, [htmlFormElement]);
|
28
28
|
return (
|
29
29
|
<Template kcContext={kcContext} i18n={i18n} doUseDefaultCss={doUseDefaultCss} classes={classes} headerNode={msg("saml.post-form.title")}>
|
@@ -36,7 +36,7 @@ export default function WebauthnError(props: PageProps<Extract<KcContext, { page
|
|
36
36
|
// @ts-expect-error: Trusted Keycloak's code
|
37
37
|
document.getElementById("executionValue").value = "${execution}";
|
38
38
|
// @ts-expect-error: Trusted Keycloak's code
|
39
|
-
document.getElementById("kc-error-credential-form").
|
39
|
+
document.getElementById("kc-error-credential-form").requestSubmit();
|
40
40
|
}}
|
41
41
|
type="button"
|
42
42
|
className={kcClsx("kcButtonClass", "kcButtonPrimaryClass", "kcButtonBlockClass", "kcButtonLargeClass")}
|