From 29fbcdc0a6583f1611ac677113c1653684b7f87e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=91=D1=8B=D1=81=D1=82=D1=80=D0=BE=D0=B2=D0=B0=20=D0=90?= =?UTF-8?q?=D0=BD=D0=BD=D0=B0?= Date: Wed, 8 Dec 2021 10:30:36 +0300 Subject: [PATCH 1/7] fix: errors in common.ftl ref: https://github.com/InseeFrLab/keycloakify/issues/58 --- .gitignore | 2 + .../generateFtl/common.ftl | 87 +++++++------------ .../generateFtl/generateFtl.ts | 4 +- 3 files changed, 35 insertions(+), 58 deletions(-) diff --git a/.gitignore b/.gitignore index 6ab01048..57451200 100644 --- a/.gitignore +++ b/.gitignore @@ -44,3 +44,5 @@ jspm_packages /sample_react_project/ /.yarn_home/ + +.idea diff --git a/src/bin/build-keycloak-theme/generateFtl/common.ftl b/src/bin/build-keycloak-theme/generateFtl/common.ftl index 5323e896..b7f70c5d 100644 --- a/src/bin/build-keycloak-theme/generateFtl/common.ftl +++ b/src/bin/build-keycloak-theme/generateFtl/common.ftl @@ -1,7 +1,6 @@ - \ 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 ab417140..36bd7eac 100644 --- a/src/bin/build-keycloak-theme/generateFtl/generateFtl.ts +++ b/src/bin/build-keycloak-theme/generateFtl/generateFtl.ts @@ -141,7 +141,9 @@ export function generateFtlFilesCodeFactory(params: { ].join("\n"), ); - objectKeys(ftlPlaceholders).forEach(id => (ftlCode = ftlCode.replace(id, ftlPlaceholders[id]))); + objectKeys(ftlPlaceholders).forEach( + id => (ftlCode = ftlCode.replace(id, ftlPlaceholders[id]).replace("ftl_template_for_replacement", pageId)), + ); return { ftlCode }; } From 804fe336659efaf87ee2f256d98a0f2abc0979fc Mon Sep 17 00:00:00 2001 From: Ann Bystrova Date: Wed, 19 Jan 2022 01:26:36 +0300 Subject: [PATCH 2/7] fix: Errors on pages login-idp-link-confirm and login-idp-link-email ref: https://github.com/InseeFrLab/keycloakify/issues/75 --- ..._object_to_js_code_declaring_an_object.ftl | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/bin/build-keycloak-theme/generateFtl/ftl_object_to_js_code_declaring_an_object.ftl b/src/bin/build-keycloak-theme/generateFtl/ftl_object_to_js_code_declaring_an_object.ftl index b1e6627d..88cb038a 100644 --- a/src/bin/build-keycloak-theme/generateFtl/ftl_object_to_js_code_declaring_an_object.ftl +++ b/src/bin/build-keycloak-theme/generateFtl/ftl_object_to_js_code_declaring_an_object.ftl @@ -1,8 +1,8 @@ - \ No newline at end of file + From 3d988603694ce548a6bbd6d50acd749109849244 Mon Sep 17 00:00:00 2001 From: Ann Bystrova Date: Wed, 19 Jan 2022 01:35:37 +0300 Subject: [PATCH 3/7] fix: changes --- .../generateFtl/common.ftl | 181 ------------------ ..._object_to_js_code_declaring_an_object.ftl | 35 ++-- 2 files changed, 22 insertions(+), 194 deletions(-) delete mode 100644 src/bin/build-keycloak-theme/generateFtl/common.ftl diff --git a/src/bin/build-keycloak-theme/generateFtl/common.ftl b/src/bin/build-keycloak-theme/generateFtl/common.ftl deleted file mode 100644 index b7f70c5d..00000000 --- a/src/bin/build-keycloak-theme/generateFtl/common.ftl +++ /dev/null @@ -1,181 +0,0 @@ - \ No newline at end of file diff --git a/src/bin/build-keycloak-theme/generateFtl/ftl_object_to_js_code_declaring_an_object.ftl b/src/bin/build-keycloak-theme/generateFtl/ftl_object_to_js_code_declaring_an_object.ftl index 88cb038a..63cf85ef 100644 --- a/src/bin/build-keycloak-theme/generateFtl/ftl_object_to_js_code_declaring_an_object.ftl +++ b/src/bin/build-keycloak-theme/generateFtl/ftl_object_to_js_code_declaring_an_object.ftl @@ -1,8 +1,8 @@ - + \ No newline at end of file From 40237374a8d1c592bdcdae6dcbbdb2245b7f952e Mon Sep 17 00:00:00 2001 From: garronej Date: Tue, 18 Jan 2022 23:59:49 +0100 Subject: [PATCH 4/7] Bump beta version (changelog ignore) Signed-off-by: garronej --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 4a20108d..474f5189 100755 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "keycloakify", - "version": "4.5.1", + "version": "4.5.2-beta.0", "description": "Keycloak theme generator for Reacts app", "repository": { "type": "git", From 6e8dcecaf1aba79633e24c550142cd19f78df96c Mon Sep 17 00:00:00 2001 From: garronej Date: Wed, 19 Jan 2022 00:40:03 +0100 Subject: [PATCH 5/7] Fix CI (changelog ignore) --- .github/workflows/ci.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 4435b228..e3a63c0a 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -32,7 +32,7 @@ jobs: steps: - name: Tell if project is using npm or yarn id: step1 - uses: garronej/ts-ci@v1.1.3 + uses: garronej/ts-ci@v1.1.6 with: action_name: tell_if_project_uses_npm_or_yarn - uses: actions/checkout@v2.3.4 @@ -64,7 +64,7 @@ jobs: is_upgraded_version: ${{ steps.step1.outputs.is_upgraded_version }} is_release_beta: ${{steps.step1.outputs.is_release_beta }} steps: - - uses: garronej/ts-ci@v1.1.3 + - uses: garronej/ts-ci@v1.1.6 id: step1 with: action_name: is_package_json_version_upgraded @@ -75,7 +75,7 @@ jobs: needs: check_if_version_upgraded if: needs.check_if_version_upgraded.outputs.is_upgraded_version == 'true' steps: - - uses: garronej/ts-ci@v1.1.3 + - uses: garronej/ts-ci@v1.1.6 with: action_name: update_changelog branch: ${{ github.head_ref || github.ref }} From fb0be3272c15fca11bcfbb77c533fda04fc0a0b8 Mon Sep 17 00:00:00 2001 From: garronej Date: Thu, 20 Jan 2022 01:34:26 +0100 Subject: [PATCH 6/7] Compat with Keycloak 16 (and probably 17, 18) #79 --- .../generateKeycloakThemeResources.ts | 14 ++++++++------ src/lib/getKcContext/getKcContext.ts | 13 ++++++++++++- .../kcContextMocks/urlResourcesPath.ts | 2 +- src/lib/tools/pathBasename.ts | 3 +++ 4 files changed, 24 insertions(+), 8 deletions(-) create mode 100644 src/lib/tools/pathBasename.ts diff --git a/src/bin/build-keycloak-theme/generateKeycloakThemeResources.ts b/src/bin/build-keycloak-theme/generateKeycloakThemeResources.ts index bbd8c598..b024bc31 100644 --- a/src/bin/build-keycloak-theme/generateKeycloakThemeResources.ts +++ b/src/bin/build-keycloak-theme/generateKeycloakThemeResources.ts @@ -1,6 +1,6 @@ import { transformCodebase } from "../tools/transformCodebase"; import * as fs from "fs"; -import { join as pathJoin } from "path"; +import { join as pathJoin, basename as pathBasename } from "path"; import { replaceImportsInCssCode, replaceImportsFromStaticInJsCode } from "./replaceImportFromStatic"; import { generateFtlFilesCodeFactory, pageIds } from "./generateFtl"; import { downloadBuiltinKeycloakTheme } from "../download-builtin-keycloak-theme"; @@ -112,20 +112,22 @@ export function generateKeycloakThemeResources(params: { const reactAppPublicDirPath = pathJoin(reactAppBuildDirPath, "..", "public"); transformCodebase({ - "srcDirPath": themeResourcesDirPath, - "destDirPath": pathJoin(reactAppPublicDirPath, resourcesPath), + "srcDirPath": pathJoin(tmpDirPath, "keycloak", "common", "resources"), + "destDirPath": pathJoin(themeResourcesDirPath, pathBasename(resourcesCommonPath)), }); transformCodebase({ - "srcDirPath": pathJoin(tmpDirPath, "keycloak", "common", "resources"), - "destDirPath": pathJoin(reactAppPublicDirPath, resourcesCommonPath), + "srcDirPath": themeResourcesDirPath, + "destDirPath": pathJoin(reactAppPublicDirPath, resourcesPath), }); const keycloakResourcesWithinPublicDirPath = pathJoin(reactAppPublicDirPath, subDirOfPublicDirBasename); fs.writeFileSync( pathJoin(keycloakResourcesWithinPublicDirPath, "README.txt"), - Buffer.from(["This is just a test folder that helps develop", "the login and register page without having to yarn build"].join(" ")), + Buffer.from( + ["This is just a test folder that helps develop", "the login and register page without having to run a Keycloak container"].join(" "), + ), ); fs.writeFileSync(pathJoin(keycloakResourcesWithinPublicDirPath, ".gitignore"), Buffer.from("*", "utf8")); diff --git a/src/lib/getKcContext/getKcContext.ts b/src/lib/getKcContext/getKcContext.ts index 7c076fb3..4b298cce 100644 --- a/src/lib/getKcContext/getKcContext.ts +++ b/src/lib/getKcContext/getKcContext.ts @@ -7,6 +7,9 @@ import { exclude } from "tsafe/exclude"; import { assert } from "tsafe/assert"; import type { ExtendsKcContextBase } from "./getKcContextFromWindow"; import { getKcContextFromWindow } from "./getKcContextFromWindow"; +import { pathJoin } from "../tools/pathJoin"; +import { pathBasename } from "../tools/pathBasename"; +import { resourcesCommonPath } from "./kcContextMocks/urlResourcesPath"; export function getKcContext(params?: { mockPageId?: ExtendsKcContextBase["pageId"]; @@ -93,5 +96,13 @@ export function getKcContext() }; + const kcContext = getKcContextFromWindow(); + + if (kcContext !== undefined) { + const { url } = kcContext; + + url.resourcesCommonPath = pathJoin(url.resourcesPath, pathBasename(resourcesCommonPath)); + } + + return { kcContext }; } diff --git a/src/lib/getKcContext/kcContextMocks/urlResourcesPath.ts b/src/lib/getKcContext/kcContextMocks/urlResourcesPath.ts index 542126dd..232433b9 100644 --- a/src/lib/getKcContext/kcContextMocks/urlResourcesPath.ts +++ b/src/lib/getKcContext/kcContextMocks/urlResourcesPath.ts @@ -2,4 +2,4 @@ import { pathJoin } from "../../tools/pathJoin"; export const subDirOfPublicDirBasename = "keycloak_static"; export const resourcesPath = pathJoin(subDirOfPublicDirBasename, "resources"); -export const resourcesCommonPath = pathJoin(subDirOfPublicDirBasename, "resources_common"); +export const resourcesCommonPath = pathJoin(resourcesPath, "resources_common"); diff --git a/src/lib/tools/pathBasename.ts b/src/lib/tools/pathBasename.ts new file mode 100644 index 00000000..48952963 --- /dev/null +++ b/src/lib/tools/pathBasename.ts @@ -0,0 +1,3 @@ +export function pathBasename(path: string) { + return path.split("/").reverse()[0]; +} From 6f219a4c2abfd99005383347934e20a641d5d093 Mon Sep 17 00:00:00 2001 From: garronej Date: Thu, 20 Jan 2022 01:49:35 +0100 Subject: [PATCH 7/7] Refactor #78 --- ...tl_object_to_js_code_declaring_an_object.ftl | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/src/bin/build-keycloak-theme/generateFtl/ftl_object_to_js_code_declaring_an_object.ftl b/src/bin/build-keycloak-theme/generateFtl/ftl_object_to_js_code_declaring_an_object.ftl index 63cf85ef..0b6d808b 100644 --- a/src/bin/build-keycloak-theme/generateFtl/ftl_object_to_js_code_declaring_an_object.ftl +++ b/src/bin/build-keycloak-theme/generateFtl/ftl_object_to_js_code_declaring_an_object.ftl @@ -126,6 +126,14 @@ ${ftl_object_to_js_code_declaring_an_object(.data_model, [])?no_esc}; key == "loginAction" && are_same_path(path, ["url"]) && pageId == "saml-post-form.ftl" + ) || ( + ["contextData", "idpConfig", "idp", "authenticationSession"]?seq_contains(key) && + are_same_path(path, ["brokerContext"]) && + ["login-idp-link-confirm.ftl", "login-idp-link-email.ftl" ]?seq_contains(pageId) + ) || ( + key == "identityProviderBrokerCtx" && + are_same_path(path, []) && + ["login-idp-link-confirm.ftl", "login-idp-link-email.ftl" ]?seq_contains(pageId) ) > <#local out_seq += ["/*If you need '" + key + "' on " + pageId + ", please submit an issue to the Keycloakify repo*/"]> @@ -144,15 +152,6 @@ ${ftl_object_to_js_code_declaring_an_object(.data_model, [])?no_esc}; - <#if - ["contextData", "idpConfig", "idp", "authenticationSession"]?seq_contains(key) && - are_same_path(path, ["brokerContext"]) - > - <#continue> - - - <#if key == "identityProviderBrokerCtx" && are_same_path(path, []) ><#continue> - <#attempt> <#if !object[key]??> <#continue>