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();