keycloakify 4.3.0 → 4.5.2-beta.0
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/CHANGELOG.md +16 -0
- package/README.md +7 -6
- package/bin/build-keycloak-theme/build-keycloak-theme.js +9 -1
- package/bin/build-keycloak-theme/build-keycloak-theme.js.map +1 -1
- package/bin/build-keycloak-theme/generateFtl/ftl_object_to_js_code_declaring_an_object.ftl +9 -0
- package/bin/build-keycloak-theme/generateFtl/generateFtl.d.ts +1 -1
- package/bin/build-keycloak-theme/generateFtl/generateFtl.js +1 -0
- package/bin/build-keycloak-theme/generateFtl/generateFtl.js.map +1 -1
- package/lib/components/KcApp.js +3 -0
- package/lib/components/KcApp.js.map +1 -1
- package/lib/components/LoginPageExpired.d.ts +6 -0
- package/lib/components/LoginPageExpired.js +36 -0
- package/lib/components/LoginPageExpired.js.map +1 -0
- package/lib/getKcContext/KcContextBase.d.ts +4 -1
- package/lib/getKcContext/KcContextBase.js.map +1 -1
- package/package.json +5 -1
- package/src/bin/build-keycloak-theme/build-keycloak-theme.ts +12 -1
- package/src/bin/build-keycloak-theme/generateFtl/ftl_object_to_js_code_declaring_an_object.ftl +9 -0
- package/src/bin/build-keycloak-theme/generateFtl/generateFtl.ts +1 -0
- package/src/lib/components/KcApp.tsx +3 -0
- package/src/lib/components/LoginPageExpired.tsx +36 -0
- package/src/lib/getKcContext/KcContextBase.ts +6 -1
package/CHANGELOG.md
CHANGED
@@ -1,3 +1,19 @@
|
|
1
|
+
### **4.5.1** (2022-01-18)
|
2
|
+
|
3
|
+
- fix previous version
|
4
|
+
|
5
|
+
## **4.5.0** (2022-01-18)
|
6
|
+
|
7
|
+
- Read public/CNAME for domain name in --externel-assets mode
|
8
|
+
|
9
|
+
## **4.4.0** (2022-01-01)
|
10
|
+
|
11
|
+
- Merge pull request #73 from lazToum/main
|
12
|
+
|
13
|
+
(feature) added login-page-expired.ftl
|
14
|
+
- added login-page-expired.ftl
|
15
|
+
- Add update instruction for 4.3.0
|
16
|
+
|
1
17
|
## **4.3.0** (2021-12-27)
|
2
18
|
|
3
19
|
- Merge pull request #72 from praiz/main
|
package/README.md
CHANGED
@@ -30,7 +30,9 @@
|
|
30
30
|
<img src="https://user-images.githubusercontent.com/6702424/110260457-a1c3d380-7fac-11eb-853a-80459b65626b.png">
|
31
31
|
</p>
|
32
32
|
|
33
|
-
> **New in v4.
|
33
|
+
> **New in v4.4.0**: Feature [`login-page-expired.ftl`](https://user-images.githubusercontent.com/6702424/147856832-38c042a7-9fc8-473f-9595-e00123095ca6.png).
|
34
|
+
> Every time a page is added it's a breaking change for non CSS-only theme.
|
35
|
+
> Change [this](https://github.com/garronej/keycloakify-demo-app/blob/812754109c61157741f4a0b222026deb1538a02d/src/KcApp/KcApp.tsx#L18) and [this](https://github.com/garronej/keycloakify-demo-app/blob/812754109c61157741f4a0b222026deb1538a02d/src/KcApp/KcApp.tsx#L39) to update.
|
34
36
|
|
35
37
|
# Motivations
|
36
38
|
|
@@ -87,7 +89,6 @@ If you already have a Keycloak custom theme, it can be easily ported to Keycloak
|
|
87
89
|
- [Adding custom message (to `i18n/useKcMessage.tsx`)](#adding-custom-message-to-i18nusekcmessagetsx)
|
88
90
|
- [Email domain whitelist](#email-domain-whitelist)
|
89
91
|
- [Changelog highlights](#changelog-highlights)
|
90
|
-
- [v4.3](#v43)
|
91
92
|
- [v4](#v4)
|
92
93
|
- [v3](#v3)
|
93
94
|
- [v2.5](#v25)
|
@@ -294,7 +295,7 @@ If you are specifically building a theme to integrate with an app or a website t
|
|
294
295
|
to first browse unauthenticated before logging in, you will get a significant
|
295
296
|
performance boost if you jump through those hoops:
|
296
297
|
|
297
|
-
- Provide the url of your app in the `homepage` field of package.json. [ex](https://github.com/garronej/keycloakify-demo-app/blob/7847cc70ef374ab26a6cc7953461cf25603e9a6d/package.json#L2)
|
298
|
+
- Provide the url of your app in the `homepage` field of package.json. [ex](https://github.com/garronej/keycloakify-demo-app/blob/7847cc70ef374ab26a6cc7953461cf25603e9a6d/package.json#L2) or in a `public/CNAME` file. [ex](https://github.com/garronej/keycloakify-demo-app/blob/main/public/CNAME).
|
298
299
|
- Build the theme using `npx build-keycloak-theme --external-assets` [ex](https://github.com/garronej/keycloakify-demo-app/blob/7847cc70ef374ab26a6cc7953461cf25603e9a6d/.github/workflows/ci.yaml#L21)
|
299
300
|
- Enable [long-term assets caching](https://create-react-app.dev/docs/production-build/#static-file-caching) on the server hosting your app.
|
300
301
|
- Make sure not to build your app and the keycloak theme separately
|
@@ -478,9 +479,9 @@ and `kcRegisterContext["authorizedMailDomains"]` to validate on.
|
|
478
479
|
|
479
480
|
# Changelog highlights
|
480
481
|
|
481
|
-
|
482
|
-
|
483
|
-
|
482
|
+
> **New in v4.3.0**: Feature [`login-update-password.ftl`](https://user-images.githubusercontent.com/6702424/147517600-6191cf72-93dd-437b-a35c-47180142063e.png).
|
483
|
+
> Every time a page is added it's a breaking change for non CSS-only theme.
|
484
|
+
> Change [this](https://github.com/garronej/keycloakify-demo-app/blob/df664c13c77ce3c53ac7df0622d94d04e76d3f9f/src/KcApp/KcApp.tsx#L17) and [this](https://github.com/garronej/keycloakify-demo-app/blob/df664c13c77ce3c53ac7df0622d94d04e76d3f9f/src/KcApp/KcApp.tsx#L37) to update.
|
484
485
|
|
485
486
|
## v4
|
486
487
|
|
@@ -38,6 +38,7 @@ var path_1 = require("path");
|
|
38
38
|
var child_process = __importStar(require("child_process"));
|
39
39
|
var generateDebugFiles_1 = require("./generateDebugFiles");
|
40
40
|
var url_1 = require("url");
|
41
|
+
var fs = __importStar(require("fs"));
|
41
42
|
var reactProjectDirPath = process.cwd();
|
42
43
|
var doUseExternalAssets = ((_a = process.argv[2]) === null || _a === void 0 ? void 0 : _a.toLowerCase()) === "--external-assets";
|
43
44
|
var parsedPackageJson = require((0, path_1.join)(reactProjectDirPath, "package.json"));
|
@@ -57,7 +58,14 @@ function main() {
|
|
57
58
|
(0, generateKeycloakThemeResources_1.generateKeycloakThemeResources)(__assign(__assign({ keycloakThemeBuildingDirPath: exports.keycloakThemeBuildingDirPath, "reactAppBuildDirPath": (0, path_1.join)(reactProjectDirPath, "build"), themeName: themeName }, (function () {
|
58
59
|
var url = (function () {
|
59
60
|
var homepage = parsedPackageJson.homepage;
|
60
|
-
|
61
|
+
if (homepage !== undefined) {
|
62
|
+
return new url_1.URL(homepage);
|
63
|
+
}
|
64
|
+
var cnameFilePath = (0, path_1.join)(reactProjectDirPath, "public", "CNAME");
|
65
|
+
if (fs.existsSync(cnameFilePath)) {
|
66
|
+
return new url_1.URL("https://" + fs.readFileSync(cnameFilePath).toString("utf8").replace(/\s+$/, ""));
|
67
|
+
}
|
68
|
+
return undefined;
|
61
69
|
})();
|
62
70
|
return {
|
63
71
|
"urlPathname": url === undefined ? "/" : url.pathname.replace(/([^/])$/, "$1/"),
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"build-keycloak-theme.js","sourceRoot":"","sources":["../../src/bin/build-keycloak-theme/build-keycloak-theme.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mFAAkF;AAClF,mEAAkE;AAClE,6BAA4F;AAC5F,2DAA+C;AAC/C,2DAAyF;AACzF,2BAA0B;
|
1
|
+
{"version":3,"file":"build-keycloak-theme.js","sourceRoot":"","sources":["../../src/bin/build-keycloak-theme/build-keycloak-theme.ts"],"names":[],"mappings":"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"}
|
@@ -144,6 +144,15 @@ ${ftl_object_to_js_code_declaring_an_object(.data_model, [])?no_esc};
|
|
144
144
|
|
145
145
|
</#if>
|
146
146
|
|
147
|
+
<#if
|
148
|
+
["contextData", "idpConfig", "idp", "authenticationSession"]?seq_contains(key) &&
|
149
|
+
are_same_path(path, ["brokerContext"])
|
150
|
+
>
|
151
|
+
<#continue>
|
152
|
+
</#if>
|
153
|
+
|
154
|
+
<#if key == "identityProviderBrokerCtx" && are_same_path(path, []) ><#continue></#if>
|
155
|
+
|
147
156
|
<#attempt>
|
148
157
|
<#if !object[key]??>
|
149
158
|
<#continue>
|
@@ -1,4 +1,4 @@
|
|
1
|
-
export declare const pageIds: readonly ["login.ftl", "register.ftl", "register-user-profile.ftl", "info.ftl", "error.ftl", "login-reset-password.ftl", "login-verify-email.ftl", "terms.ftl", "login-otp.ftl", "login-update-profile.ftl", "login-update-password.ftl", "login-idp-link-confirm.ftl"];
|
1
|
+
export declare const pageIds: readonly ["login.ftl", "register.ftl", "register-user-profile.ftl", "info.ftl", "error.ftl", "login-reset-password.ftl", "login-verify-email.ftl", "terms.ftl", "login-otp.ftl", "login-update-profile.ftl", "login-update-password.ftl", "login-idp-link-confirm.ftl", "login-page-expired.ftl"];
|
2
2
|
export declare type PageId = typeof pageIds[number];
|
3
3
|
export declare function generateFtlFilesCodeFactory(params: {
|
4
4
|
cssGlobalsToDefine: Record<string, string>;
|
@@ -59,6 +59,7 @@ exports.pageIds = [
|
|
59
59
|
"login-update-profile.ftl",
|
60
60
|
"login-update-password.ftl",
|
61
61
|
"login-idp-link-confirm.ftl",
|
62
|
+
"login-page-expired.ftl",
|
62
63
|
];
|
63
64
|
function generateFtlFilesCodeFactory(params) {
|
64
65
|
var cssGlobalsToDefine = params.cssGlobalsToDefine, indexHtmlCode = params.indexHtmlCode, urlPathname = params.urlPathname, urlOrigin = params.urlOrigin;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"generateFtl.js","sourceRoot":"","sources":["../../../src/bin/build-keycloak-theme/generateFtl/generateFtl.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,oDAA8B;AAC9B,sEAA6I;AAC7I,0CAAoB;AACpB,6BAAwC;AACxC,+CAA8C;AAC9C,8DAA6D;AAEhD,QAAA,OAAO,GAAG;IACnB,WAAW;IACX,cAAc;IACd,2BAA2B;IAC3B,UAAU;IACV,WAAW;IACX,0BAA0B;IAC1B,wBAAwB;IACxB,WAAW;IACX,eAAe;IACf,0BAA0B;IAC1B,2BAA2B;IAC3B,4BAA4B;
|
1
|
+
{"version":3,"file":"generateFtl.js","sourceRoot":"","sources":["../../../src/bin/build-keycloak-theme/generateFtl/generateFtl.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,oDAA8B;AAC9B,sEAA6I;AAC7I,0CAAoB;AACpB,6BAAwC;AACxC,+CAA8C;AAC9C,8DAA6D;AAEhD,QAAA,OAAO,GAAG;IACnB,WAAW;IACX,cAAc;IACd,2BAA2B;IAC3B,UAAU;IACV,WAAW;IACX,0BAA0B;IAC1B,wBAAwB;IACxB,WAAW;IACX,eAAe;IACf,0BAA0B;IAC1B,2BAA2B;IAC3B,4BAA4B;IAC5B,wBAAwB;CAClB,CAAC;AAIX,SAAgB,2BAA2B,CAAC,MAK3C;IACW,IAAA,kBAAkB,GAA4C,MAAM,mBAAlD,EAAE,aAAa,GAA6B,MAAM,cAAnC,EAAE,WAAW,GAAgB,MAAM,YAAtB,EAAE,SAAS,GAAK,MAAM,UAAX,CAAY;IAE7E,IAAM,CAAC,GAAG,iBAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAEtC,CAAC,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC;QAAC,YAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,uBAAc;;QAAd,IAAA,KAAA,aAAc,EAAR,OAAO,QAAA,CAAC;QAC/B,IAAA,WAAW,GAAK,IAAA,0DAAgC,EAAC;YACrD,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAG;YAC5B,SAAS,WAAA;SACZ,CAAC,YAHiB,CAGhB;QAEH,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC;QAAC,YAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,uBAAc;;QAAd,IAAA,KAAA,aAAc,EAAR,OAAO,QAAA,CAAC;QACnB,IAAA,YAAY,GAAK,IAAA,uDAA6B,EAAC;YACnD,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAG;YAC7B,aAAa,EAAE,MAAM,CAAC,WAAW;YACjC,SAAS,WAAA;SACZ,CAAC,aAJkB,CAIjB;QAEH,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAGC;QACI,CAAC,MAAM,EAAE,MAAM,CAAC;QAChB,CAAC,QAAQ,EAAE,KAAK,CAAC;KAExB,CAAC,OAAO,CAAC,UAAC,EAAoB;YAApB,KAAA,aAAoB,EAAnB,QAAQ,QAAA,EAAE,QAAQ,QAAA;QAC1B,OAAA,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC;YAAC,YAAc;iBAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;gBAAd,uBAAc;;YAAd,IAAA,KAAA,aAAc,EAAR,OAAO,QAAA,CAAC;YAC5B,IAAM,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAEvC,IAAI,IAAI,KAAK,SAAS,EAAE;gBACpB,OAAO;aACV;YAED,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CACX,QAAQ,EACR,SAAS,KAAK,SAAS;gBACnB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAK,SAAS,MAAG,CAAC;gBACtC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,MAAI,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAG,CAAC,EAAE,6BAA6B,CAAC,CACzG,CAAC;QACN,CAAC,CAAC;IAbF,CAaE,CACL,CAAC;IAEF,6FAA6F;IAC7F,IAAM,yBAAyB,GAAG;QAC9B,oCAAoC,EAAE,YAAE;aACnC,YAAY,CAAC,IAAA,WAAQ,EAAC,SAAS,EAAE,+CAA+C,CAAC,CAAC;aAClF,QAAQ,CAAC,MAAM,CAAC;aAChB,KAAK,CAAC,8CAA8C,CAAE,CAAC,CAAC,CAAC;QAC9D,sCAAsC,EAAE;YACpC,iBAAiB;YACjB,+BAA+B;YAC/B,kEAAkE;YAClE,cAAc;YACd,QAAQ;SACX,CAAC,IAAI,CAAC,IAAI,CAAC;KACf,CAAC;IAEF,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CACb,uCACO,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,MAAM,KAAK,CAAC;QAC5C,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC;YACI,EAAE;YACF,SAAS;YACT,IAAA,wDAA8B,EAAC;gBAC3B,kBAAkB,oBAAA;gBAClB,WAAW,aAAA;aACd,CAAC,CAAC,sBAAsB;YACzB,UAAU;YACV,EAAE;SACL,CAAC;QACR,UAAU;QACV,gBAAc,yCAAmB,UAAK,IAAA,uBAAU,EAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,MAAG;QACjF,WAAW;QACX,EAAE;QACF,IAAA,uBAAU,EAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC;cAC1C,IAAI,CAAC,IAAI,CAAC,CACf,CAAC;IAEF,IAAM,2BAA2B,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAE7C,SAAS,oBAAoB,CAAC,MAA0B;QAG5C,IAAA,MAAM,GAAK,MAAM,OAAX,CAAY;QAE1B,IAAM,CAAC,GAAG,iBAAO,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QAEpD,IAAI,OAAO,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QAEvB,MAAM,CAAC,OAAO,uBACP,yBAAyB;YAC5B,+DAA+D;YAC/D,wBAAwB,EAAE,MAAM,IAClC,CAAC,GAAG,CAAC,UAAC,EAA2B;gBAA3B,KAAA,aAA2B,EAA1B,WAAW,QAAA,EAAE,YAAY,QAAA;YAAM,OAAA,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QAAtD,CAAsD,CAAC,CAAC;QAEhG,OAAO,EAAE,OAAO,SAAA,EAAE,CAAC;IACvB,CAAC;IAED,OAAO,EAAE,oBAAoB,sBAAA,EAAE,CAAC;AACpC,CAAC;AA7GD,kEA6GC"}
|
package/lib/components/KcApp.js
CHANGED
@@ -37,6 +37,7 @@ var LoginOtp_1 = require("./LoginOtp");
|
|
37
37
|
var LoginUpdatePassword_1 = require("./LoginUpdatePassword");
|
38
38
|
var LoginUpdateProfile_1 = require("./LoginUpdateProfile");
|
39
39
|
var LoginIdpLinkConfirm_1 = require("./LoginIdpLinkConfirm");
|
40
|
+
var LoginPageExpired_1 = require("./LoginPageExpired");
|
40
41
|
exports.KcApp = (0, react_1.memo)(function (_a) {
|
41
42
|
var kcContext = _a.kcContext, props = __rest(_a, ["kcContext"]);
|
42
43
|
switch (kcContext.pageId) {
|
@@ -64,6 +65,8 @@ exports.KcApp = (0, react_1.memo)(function (_a) {
|
|
64
65
|
return (0, jsx_runtime_1.jsx)(LoginUpdateProfile_1.LoginUpdateProfile, __assign({}, __assign({ kcContext: kcContext }, props)), void 0);
|
65
66
|
case "login-idp-link-confirm.ftl":
|
66
67
|
return (0, jsx_runtime_1.jsx)(LoginIdpLinkConfirm_1.LoginIdpLinkConfirm, __assign({}, __assign({ kcContext: kcContext }, props)), void 0);
|
68
|
+
case "login-page-expired.ftl":
|
69
|
+
return (0, jsx_runtime_1.jsx)(LoginPageExpired_1.LoginPageExpired, __assign({}, __assign({ kcContext: kcContext }, props)), void 0);
|
67
70
|
}
|
68
71
|
});
|
69
72
|
//# sourceMappingURL=KcApp.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"KcApp.js","sourceRoot":"","sources":["../../src/lib/components/KcApp.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+BAA6B;AAG7B,iCAAgC;AAChC,uCAAsC;AACtC,6DAA4D;AAC5D,+BAA8B;AAC9B,iCAAgC;AAChC,2DAA0D;AAC1D,uDAAsD;AACtD,iCAAgC;AAChC,uCAAsC;AACtC,6DAA4D;AAC5D,2DAA0D;AAC1D,6DAA4D;
|
1
|
+
{"version":3,"file":"KcApp.js","sourceRoot":"","sources":["../../src/lib/components/KcApp.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+BAA6B;AAG7B,iCAAgC;AAChC,uCAAsC;AACtC,6DAA4D;AAC5D,+BAA8B;AAC9B,iCAAgC;AAChC,2DAA0D;AAC1D,uDAAsD;AACtD,iCAAgC;AAChC,uCAAsC;AACtC,6DAA4D;AAC5D,2DAA0D;AAC1D,6DAA4D;AAC5D,uDAAsD;AAEzC,QAAA,KAAK,GAAG,IAAA,YAAI,EAAC,UAAC,EAA+D;IAA7D,IAAA,SAAS,eAAA,EAAK,KAAK,cAArB,aAAuB,CAAF;IAC5C,QAAQ,SAAS,CAAC,MAAM,EAAE;QACtB,KAAK,WAAW;YACZ,OAAO,uBAAC,aAAK,0BAAO,SAAS,WAAA,IAAK,KAAK,WAAM,CAAC;QAClD,KAAK,cAAc;YACf,OAAO,uBAAC,mBAAQ,0BAAO,SAAS,WAAA,IAAK,KAAK,WAAM,CAAC;QACrD,KAAK,2BAA2B;YAC5B,OAAO,uBAAC,yCAAmB,0BAAO,SAAS,WAAA,IAAK,KAAK,WAAM,CAAC;QAChE,KAAK,UAAU;YACX,OAAO,uBAAC,WAAI,0BAAO,SAAS,WAAA,IAAK,KAAK,WAAM,CAAC;QACjD,KAAK,WAAW;YACZ,OAAO,uBAAC,aAAK,0BAAO,SAAS,WAAA,IAAK,KAAK,WAAM,CAAC;QAClD,KAAK,0BAA0B;YAC3B,OAAO,uBAAC,uCAAkB,0BAAO,SAAS,WAAA,IAAK,KAAK,WAAM,CAAC;QAC/D,KAAK,wBAAwB;YACzB,OAAO,uBAAC,mCAAgB,0BAAO,SAAS,WAAA,IAAK,KAAK,WAAM,CAAC;QAC7D,KAAK,WAAW;YACZ,OAAO,uBAAC,aAAK,0BAAO,SAAS,WAAA,IAAK,KAAK,WAAM,CAAC;QAClD,KAAK,eAAe;YAChB,OAAO,uBAAC,mBAAQ,0BAAO,SAAS,WAAA,IAAK,KAAK,WAAM,CAAC;QACrD,KAAK,2BAA2B;YAC5B,OAAO,uBAAC,yCAAmB,0BAAO,SAAS,WAAA,IAAK,KAAK,WAAM,CAAC;QAChE,KAAK,0BAA0B;YAC3B,OAAO,uBAAC,uCAAkB,0BAAO,SAAS,WAAA,IAAK,KAAK,WAAM,CAAC;QAC/D,KAAK,4BAA4B;YAC7B,OAAO,uBAAC,yCAAmB,0BAAO,SAAS,WAAA,IAAK,KAAK,WAAM,CAAC;QAChE,KAAK,wBAAwB;YACzB,OAAO,uBAAC,mCAAgB,0BAAO,SAAS,WAAA,IAAK,KAAK,WAAM,CAAC;KAChE;AACL,CAAC,CAAC,CAAC"}
|
@@ -0,0 +1,6 @@
|
|
1
|
+
/// <reference types="react" />
|
2
|
+
import type { KcProps } from "./KcProps";
|
3
|
+
import type { KcContextBase } from "../getKcContext/KcContextBase";
|
4
|
+
export declare const LoginPageExpired: import("react").MemoExoticComponent<({ kcContext, ...props }: {
|
5
|
+
kcContext: KcContextBase.LoginPageExpired;
|
6
|
+
} & KcProps) => JSX.Element>;
|
@@ -0,0 +1,36 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
3
|
+
__assign = Object.assign || function(t) {
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
5
|
+
s = arguments[i];
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
7
|
+
t[p] = s[p];
|
8
|
+
}
|
9
|
+
return t;
|
10
|
+
};
|
11
|
+
return __assign.apply(this, arguments);
|
12
|
+
};
|
13
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
14
|
+
var t = {};
|
15
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
16
|
+
t[p] = s[p];
|
17
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
18
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
19
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
20
|
+
t[p[i]] = s[p[i]];
|
21
|
+
}
|
22
|
+
return t;
|
23
|
+
};
|
24
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
25
|
+
exports.LoginPageExpired = void 0;
|
26
|
+
var jsx_runtime_1 = require("react/jsx-runtime");
|
27
|
+
var react_1 = require("react");
|
28
|
+
var Template_1 = require("./Template");
|
29
|
+
var useKcMessage_1 = require("../i18n/useKcMessage");
|
30
|
+
exports.LoginPageExpired = (0, react_1.memo)(function (_a) {
|
31
|
+
var kcContext = _a.kcContext, props = __rest(_a, ["kcContext"]);
|
32
|
+
var url = kcContext.url;
|
33
|
+
var msg = (0, useKcMessage_1.useKcMessage)().msg;
|
34
|
+
return ((0, jsx_runtime_1.jsx)(Template_1.Template, __assign({}, __assign({ kcContext: kcContext }, props), { doFetchDefaultThemeResources: true, displayMessage: false, headerNode: msg("pageExpiredTitle"), formNode: (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsxs)("p", __assign({ id: "instruction1", className: "instruction" }, { children: [msg("pageExpiredMsg1"), (0, jsx_runtime_1.jsx)("a", __assign({ id: "loginRestartLink", href: url.loginRestartFlowUrl }, { children: msg("doClickHere") }), void 0), " ", ".", (0, jsx_runtime_1.jsx)("br", {}, void 0), msg("pageExpiredMsg2"), " ", (0, jsx_runtime_1.jsx)("a", __assign({ id: "loginContinueLink", href: url.loginAction }, { children: msg("doClickHere") }), void 0), " ", "."] }), void 0) }, void 0) }), void 0));
|
35
|
+
});
|
36
|
+
//# sourceMappingURL=LoginPageExpired.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"LoginPageExpired.js","sourceRoot":"","sources":["../../src/lib/components/LoginPageExpired.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+BAA6B;AAC7B,uCAAsC;AAGtC,qDAAoD;AAEvC,QAAA,gBAAgB,GAAG,IAAA,YAAI,EAAC,UAAC,EAAgF;IAA9E,IAAA,SAAS,eAAA,EAAK,KAAK,cAArB,aAAuB,CAAF;IAC/C,IAAA,GAAG,GAAK,SAAS,IAAd,CAAe;IAElB,IAAA,GAAG,GAAK,IAAA,2BAAY,GAAE,IAAnB,CAAoB;IAE/B,OAAO,CACH,uBAAC,mBAAQ,0BACC,SAAS,WAAA,IAAK,KAAK,KACzB,4BAA4B,EAAE,IAAI,EAClC,cAAc,EAAE,KAAK,EACrB,UAAU,EAAE,GAAG,CAAC,kBAAkB,CAAC,EACnC,QAAQ,EACJ,2DACI,wCAAG,EAAE,EAAC,cAAc,EAAC,SAAS,EAAC,aAAa,iBACvC,GAAG,CAAC,iBAAiB,CAAC,EACvB,uCAAG,EAAE,EAAC,kBAAkB,EAAC,IAAI,EAAE,GAAG,CAAC,mBAAmB,gBACjD,GAAG,CAAC,aAAa,CAAC,YACnB,EAAC,GAAG,OACP,wCAAM,EACN,GAAG,CAAC,iBAAiB,CAAC,EAAE,GAAG,EAC5B,uCAAG,EAAE,EAAC,mBAAmB,EAAC,IAAI,EAAE,GAAG,CAAC,WAAW,gBAC1C,GAAG,CAAC,aAAa,CAAC,YACnB,EAAC,GAAG,kBAER,WACL,YAET,CACL,CAAC;AACN,CAAC,CAAC,CAAC"}
|
@@ -6,7 +6,7 @@ declare type ExtractAfterStartingWith<Prefix extends string, StrEnum> = StrEnum
|
|
6
6
|
* Some values might be undefined on some pages.
|
7
7
|
* (ex: url.loginAction is undefined on error.ftl)
|
8
8
|
*/
|
9
|
-
export declare type KcContextBase = KcContextBase.Login | KcContextBase.Register | KcContextBase.RegisterUserProfile | KcContextBase.Info | KcContextBase.Error | KcContextBase.LoginResetPassword | KcContextBase.LoginVerifyEmail | KcContextBase.Terms | KcContextBase.LoginOtp | KcContextBase.LoginUpdatePassword | KcContextBase.LoginUpdateProfile | KcContextBase.LoginIdpLinkConfirm;
|
9
|
+
export declare type KcContextBase = KcContextBase.Login | KcContextBase.Register | KcContextBase.RegisterUserProfile | KcContextBase.Info | KcContextBase.Error | KcContextBase.LoginResetPassword | KcContextBase.LoginVerifyEmail | KcContextBase.Terms | KcContextBase.LoginOtp | KcContextBase.LoginUpdatePassword | KcContextBase.LoginUpdateProfile | KcContextBase.LoginIdpLinkConfirm | KcContextBase.LoginPageExpired;
|
10
10
|
export declare namespace KcContextBase {
|
11
11
|
type Common = {
|
12
12
|
url: {
|
@@ -181,6 +181,9 @@ export declare namespace KcContextBase {
|
|
181
181
|
pageId: "login-idp-link-confirm.ftl";
|
182
182
|
idpAlias: string;
|
183
183
|
};
|
184
|
+
type LoginPageExpired = Common & {
|
185
|
+
pageId: "login-page-expired.ftl";
|
186
|
+
};
|
184
187
|
}
|
185
188
|
export declare type Attribute = {
|
186
189
|
name: string;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"KcContextBase.js","sourceRoot":"","sources":["../../src/lib/getKcContext/KcContextBase.ts"],"names":[],"mappings":";;AAEA,uCAAsC;
|
1
|
+
{"version":3,"file":"KcContextBase.js","sourceRoot":"","sources":["../../src/lib/getKcContext/KcContextBase.ts"],"names":[],"mappings":";;AAEA,uCAAsC;AA6UtC,IAAA,eAAM,GAA2C,CAAC"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "keycloakify",
|
3
|
-
"version": "4.
|
3
|
+
"version": "4.5.2-beta.0",
|
4
4
|
"description": "Keycloak theme generator for Reacts app",
|
5
5
|
"repository": {
|
6
6
|
"type": "git",
|
@@ -56,6 +56,7 @@
|
|
56
56
|
"src/lib/components/Login.tsx",
|
57
57
|
"src/lib/components/LoginIdpLinkConfirm.tsx",
|
58
58
|
"src/lib/components/LoginOtp.tsx",
|
59
|
+
"src/lib/components/LoginPageExpired.tsx",
|
59
60
|
"src/lib/components/LoginResetPassword.tsx",
|
60
61
|
"src/lib/components/LoginUpdatePassword.tsx",
|
61
62
|
"src/lib/components/LoginUpdateProfile.tsx",
|
@@ -185,6 +186,9 @@
|
|
185
186
|
"lib/components/LoginOtp.d.ts",
|
186
187
|
"lib/components/LoginOtp.js",
|
187
188
|
"lib/components/LoginOtp.js.map",
|
189
|
+
"lib/components/LoginPageExpired.d.ts",
|
190
|
+
"lib/components/LoginPageExpired.js",
|
191
|
+
"lib/components/LoginPageExpired.js.map",
|
188
192
|
"lib/components/LoginResetPassword.d.ts",
|
189
193
|
"lib/components/LoginResetPassword.js",
|
190
194
|
"lib/components/LoginResetPassword.js.map",
|
@@ -4,6 +4,7 @@ import { join as pathJoin, relative as pathRelative, basename as pathBasename }
|
|
4
4
|
import * as child_process from "child_process";
|
5
5
|
import { generateDebugFiles, containerLaunchScriptBasename } from "./generateDebugFiles";
|
6
6
|
import { URL } from "url";
|
7
|
+
import * as fs from "fs";
|
7
8
|
|
8
9
|
type ParsedPackageJson = {
|
9
10
|
name: string;
|
@@ -41,7 +42,17 @@ export function main() {
|
|
41
42
|
const url = (() => {
|
42
43
|
const { homepage } = parsedPackageJson;
|
43
44
|
|
44
|
-
|
45
|
+
if (homepage !== undefined) {
|
46
|
+
return new URL(homepage);
|
47
|
+
}
|
48
|
+
|
49
|
+
const cnameFilePath = pathJoin(reactProjectDirPath, "public", "CNAME");
|
50
|
+
|
51
|
+
if (fs.existsSync(cnameFilePath)) {
|
52
|
+
return new URL(`https://${fs.readFileSync(cnameFilePath).toString("utf8").replace(/\s+$/, "")}`);
|
53
|
+
}
|
54
|
+
|
55
|
+
return undefined;
|
45
56
|
})();
|
46
57
|
|
47
58
|
return {
|
package/src/bin/build-keycloak-theme/generateFtl/ftl_object_to_js_code_declaring_an_object.ftl
CHANGED
@@ -144,6 +144,15 @@ ${ftl_object_to_js_code_declaring_an_object(.data_model, [])?no_esc};
|
|
144
144
|
|
145
145
|
</#if>
|
146
146
|
|
147
|
+
<#if
|
148
|
+
["contextData", "idpConfig", "idp", "authenticationSession"]?seq_contains(key) &&
|
149
|
+
are_same_path(path, ["brokerContext"])
|
150
|
+
>
|
151
|
+
<#continue>
|
152
|
+
</#if>
|
153
|
+
|
154
|
+
<#if key == "identityProviderBrokerCtx" && are_same_path(path, []) ><#continue></#if>
|
155
|
+
|
147
156
|
<#attempt>
|
148
157
|
<#if !object[key]??>
|
149
158
|
<#continue>
|
@@ -13,6 +13,7 @@ import { LoginOtp } from "./LoginOtp";
|
|
13
13
|
import { LoginUpdatePassword } from "./LoginUpdatePassword";
|
14
14
|
import { LoginUpdateProfile } from "./LoginUpdateProfile";
|
15
15
|
import { LoginIdpLinkConfirm } from "./LoginIdpLinkConfirm";
|
16
|
+
import { LoginPageExpired } from "./LoginPageExpired";
|
16
17
|
|
17
18
|
export const KcApp = memo(({ kcContext, ...props }: { kcContext: KcContextBase } & KcProps) => {
|
18
19
|
switch (kcContext.pageId) {
|
@@ -40,5 +41,7 @@ export const KcApp = memo(({ kcContext, ...props }: { kcContext: KcContextBase }
|
|
40
41
|
return <LoginUpdateProfile {...{ kcContext, ...props }} />;
|
41
42
|
case "login-idp-link-confirm.ftl":
|
42
43
|
return <LoginIdpLinkConfirm {...{ kcContext, ...props }} />;
|
44
|
+
case "login-page-expired.ftl":
|
45
|
+
return <LoginPageExpired {...{ kcContext, ...props }} />;
|
43
46
|
}
|
44
47
|
});
|
@@ -0,0 +1,36 @@
|
|
1
|
+
import { memo } from "react";
|
2
|
+
import { Template } from "./Template";
|
3
|
+
import type { KcProps } from "./KcProps";
|
4
|
+
import type { KcContextBase } from "../getKcContext/KcContextBase";
|
5
|
+
import { useKcMessage } from "../i18n/useKcMessage";
|
6
|
+
|
7
|
+
export const LoginPageExpired = memo(({ kcContext, ...props }: { kcContext: KcContextBase.LoginPageExpired } & KcProps) => {
|
8
|
+
const { url } = kcContext;
|
9
|
+
|
10
|
+
const { msg } = useKcMessage();
|
11
|
+
|
12
|
+
return (
|
13
|
+
<Template
|
14
|
+
{...{ kcContext, ...props }}
|
15
|
+
doFetchDefaultThemeResources={true}
|
16
|
+
displayMessage={false}
|
17
|
+
headerNode={msg("pageExpiredTitle")}
|
18
|
+
formNode={
|
19
|
+
<>
|
20
|
+
<p id="instruction1" className="instruction">
|
21
|
+
{msg("pageExpiredMsg1")}
|
22
|
+
<a id="loginRestartLink" href={url.loginRestartFlowUrl}>
|
23
|
+
{msg("doClickHere")}
|
24
|
+
</a>{" "}
|
25
|
+
.<br />
|
26
|
+
{msg("pageExpiredMsg2")}{" "}
|
27
|
+
<a id="loginContinueLink" href={url.loginAction}>
|
28
|
+
{msg("doClickHere")}
|
29
|
+
</a>{" "}
|
30
|
+
.
|
31
|
+
</p>
|
32
|
+
</>
|
33
|
+
}
|
34
|
+
/>
|
35
|
+
);
|
36
|
+
});
|
@@ -23,7 +23,8 @@ export type KcContextBase =
|
|
23
23
|
| KcContextBase.LoginOtp
|
24
24
|
| KcContextBase.LoginUpdatePassword
|
25
25
|
| KcContextBase.LoginUpdateProfile
|
26
|
-
| KcContextBase.LoginIdpLinkConfirm
|
26
|
+
| KcContextBase.LoginIdpLinkConfirm
|
27
|
+
| KcContextBase.LoginPageExpired;
|
27
28
|
|
28
29
|
export declare namespace KcContextBase {
|
29
30
|
export type Common = {
|
@@ -213,6 +214,10 @@ export declare namespace KcContextBase {
|
|
213
214
|
pageId: "login-idp-link-confirm.ftl";
|
214
215
|
idpAlias: string;
|
215
216
|
};
|
217
|
+
|
218
|
+
export type LoginPageExpired = Common & {
|
219
|
+
pageId: "login-page-expired.ftl";
|
220
|
+
};
|
216
221
|
}
|
217
222
|
|
218
223
|
export type Attribute = {
|