diff --git a/README.md b/README.md index 2e44ed5b..5ff1fc62 100644 --- a/README.md +++ b/README.md @@ -271,6 +271,10 @@ Then to load your own therms of services using [like this](https://github.com/ga # Some pages still have the default theme. Why? +**NEW in v1.2 it is now much more easy to add support for custom pages since the +Keycloak context is now automatically converted into a JavaScript object (kcContext). +In v2 (coming soon) it won't be required to fork for adding support for custom pages.** + This project only support the most common user facing pages of Keycloak login. [Here](https://user-images.githubusercontent.com/6702424/116787906-227fe700-aaa7-11eb-92ee-22e7673717c2.png) is the complete list of pages (you get them after running `yarn test`) and [here](https://github.com/InseeFrLab/keycloakify/tree/main/src/lib/components) are the pages currently implemented by this module. diff --git a/package.json b/package.json index 98f17015..1ad79459 100755 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "keycloakify", - "version": "1.1.6", + "version": "1.2.0", "description": "Keycloak theme generator for Reacts app", "repository": { "type": "git", diff --git a/src/bin/build-keycloak-theme/generateFtl/String.htmlUnescape.js b/src/bin/build-keycloak-theme/generateFtl/String.htmlUnescape.js deleted file mode 100644 index 1b54857b..00000000 --- a/src/bin/build-keycloak-theme/generateFtl/String.htmlUnescape.js +++ /dev/null @@ -1,26 +0,0 @@ - -var es = /&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34);/g; - -var unes = { - '&': '&', - '&': '&', - '<': '<', - '<': '<', - '>': '>', - '>': '>', - ''': "'", - ''': "'", - '"': '"', - '"': '"' -}; -var cape = function (m) { return unes[m]; }; - -Object.defineProperty( - String, - "htmlUnescape", - { - "value": function (un) { - return String.prototype.replace.call(un, es, cape); - } - } -); diff --git a/src/bin/build-keycloak-theme/generateFtl/common.ftl b/src/bin/build-keycloak-theme/generateFtl/common.ftl index df5bdb46..e11fe312 100644 --- a/src/bin/build-keycloak-theme/generateFtl/common.ftl +++ b/src/bin/build-keycloak-theme/generateFtl/common.ftl @@ -1,263 +1,194 @@ \ No newline at end of file diff --git a/src/bin/build-keycloak-theme/generateFtl/error.ftl b/src/bin/build-keycloak-theme/generateFtl/error.ftl deleted file mode 100644 index 22d2457e..00000000 --- a/src/bin/build-keycloak-theme/generateFtl/error.ftl +++ /dev/null @@ -1,23 +0,0 @@ - \ No newline at end of file diff --git a/src/bin/build-keycloak-theme/generateFtl/generateFtl.ts b/src/bin/build-keycloak-theme/generateFtl/generateFtl.ts index 2ca60ffe..b972642c 100644 --- a/src/bin/build-keycloak-theme/generateFtl/generateFtl.ts +++ b/src/bin/build-keycloak-theme/generateFtl/generateFtl.ts @@ -12,10 +12,10 @@ import { objectKeys } from "evt/tools/typeSafety/objectKeys"; import { ftlValuesGlobalName } from "../ftlValuesGlobalName"; export const pageIds = [ - "login.ftl", "register.ftl", "info.ftl", - "error.ftl", "login-reset-password.ftl", + "login.ftl", "register.ftl", "info.ftl", + "error.ftl", "login-reset-password.ftl", "login-verify-email.ftl", "terms.ftl", - "login-otp.ftl", "login-update-profile.ftl", + "login-otp.ftl", "login-update-profile.ftl", "login-idp-link-confirm.ftl" ] as const; @@ -26,17 +26,6 @@ function loadAdjacentFile(fileBasename: string) { .toString("utf8"); }; -function loadFtlFile(ftlFileBasename: PageId | "common.ftl") { - try { - - return loadAdjacentFile(ftlFileBasename) - .match(/^" - ].join("\n") - ), + "", '', '', pageSpecificCodePlaceholder, '', - objectKeys(ftlCommonPlaceholders)[1] + objectKeys(ftlPlaceholders)[1] ].join("\n"), ); @@ -158,11 +144,6 @@ export function generateFtlFilesCodeFactory( const $ = cheerio.load(partiallyFixedIndexHtmlCode); - const ftlPlaceholders = { - '{ "x": "kxOlLqMeOed9sdLdIdOxd444" }': loadFtlFile(pageId), - ...ftlCommonPlaceholders - }; - let ftlCode = $.html() .replace( pageSpecificCodePlaceholder, @@ -172,10 +153,6 @@ export function generateFtlFilesCodeFactory( ` window.${ftlValuesGlobalName},`, ` { "pageId": "${pageId}" }`, ' );', - ` Object.deepAssign(`, - ` window.${ftlValuesGlobalName},`, - ` ${objectKeys(ftlPlaceholders)[0]}`, - ' );', '' ].join("\n") ); diff --git a/src/bin/build-keycloak-theme/generateFtl/info.ftl b/src/bin/build-keycloak-theme/generateFtl/info.ftl deleted file mode 100644 index 861bd154..00000000 --- a/src/bin/build-keycloak-theme/generateFtl/info.ftl +++ /dev/null @@ -1,82 +0,0 @@ - \ No newline at end of file diff --git a/src/bin/build-keycloak-theme/generateFtl/login-idp-link-confirm.ftl b/src/bin/build-keycloak-theme/generateFtl/login-idp-link-confirm.ftl deleted file mode 100644 index 1bbecb76..00000000 --- a/src/bin/build-keycloak-theme/generateFtl/login-idp-link-confirm.ftl +++ /dev/null @@ -1,11 +0,0 @@ - \ No newline at end of file diff --git a/src/bin/build-keycloak-theme/generateFtl/login-otp.ftl b/src/bin/build-keycloak-theme/generateFtl/login-otp.ftl deleted file mode 100644 index a2cc9e41..00000000 --- a/src/bin/build-keycloak-theme/generateFtl/login-otp.ftl +++ /dev/null @@ -1,37 +0,0 @@ - \ No newline at end of file diff --git a/src/bin/build-keycloak-theme/generateFtl/login-reset-password.ftl b/src/bin/build-keycloak-theme/generateFtl/login-reset-password.ftl deleted file mode 100644 index 49a74071..00000000 --- a/src/bin/build-keycloak-theme/generateFtl/login-reset-password.ftl +++ /dev/null @@ -1,14 +0,0 @@ - \ No newline at end of file diff --git a/src/bin/build-keycloak-theme/generateFtl/login-update-profile.ftl b/src/bin/build-keycloak-theme/generateFtl/login-update-profile.ftl deleted file mode 100644 index 7528cb2a..00000000 --- a/src/bin/build-keycloak-theme/generateFtl/login-update-profile.ftl +++ /dev/null @@ -1,67 +0,0 @@ - diff --git a/src/bin/build-keycloak-theme/generateFtl/login.ftl b/src/bin/build-keycloak-theme/generateFtl/login.ftl deleted file mode 100644 index 8f40ad10..00000000 --- a/src/bin/build-keycloak-theme/generateFtl/login.ftl +++ /dev/null @@ -1,160 +0,0 @@ - \ No newline at end of file diff --git a/src/bin/build-keycloak-theme/generateFtl/register.ftl b/src/bin/build-keycloak-theme/generateFtl/register.ftl deleted file mode 100644 index 30268162..00000000 --- a/src/bin/build-keycloak-theme/generateFtl/register.ftl +++ /dev/null @@ -1,243 +0,0 @@ - \ No newline at end of file diff --git a/src/lib/i18n/useKcMessage.tsx b/src/lib/i18n/useKcMessage.tsx index 17abc060..4454ffc4 100644 --- a/src/lib/i18n/useKcMessage.tsx +++ b/src/lib/i18n/useKcMessage.tsx @@ -9,6 +9,13 @@ import ReactMarkdown from "react-markdown"; export type MessageKey = keyof typeof kcMessages["en"]; +/** + * When the language is switched the page is reloaded, this may appear + * as a bug as you might notice that the language successfully switch before + * reload. + * However we need to tell Keycloak that the user have changed the language + * during login so we can retrieve the "local" field of the JWT encoded accessToken. + */ export function useKcMessage() { const { kcLanguageTag } = useKcLanguageTag();