From ffefb38161f448a31e84e9e4a01ca035b90b8b3d Mon Sep 17 00:00:00 2001 From: garronej Date: Sat, 1 Apr 2023 13:31:35 +0200 Subject: [PATCH] #40 --- src/bin/keycloakify/BuildOptions.ts | 4 +- ..._object_to_js_code_declaring_an_object.ftl | 3 +- .../keycloakify/generateFtl/generateFtl.ts | 37 +++++++++++-------- .../generateKeycloakThemeResources.ts | 10 ++--- src/bin/keycloakify/parsed-package-json.ts | 4 +- 5 files changed, 31 insertions(+), 27 deletions(-) diff --git a/src/bin/keycloakify/BuildOptions.ts b/src/bin/keycloakify/BuildOptions.ts index e20de197..3af57011 100644 --- a/src/bin/keycloakify/BuildOptions.ts +++ b/src/bin/keycloakify/BuildOptions.ts @@ -26,6 +26,7 @@ export namespace BuildOptions { appInputPath: string; // Directory that keycloakify outputs to. Defaults to {cwd}/build_keycloak keycloakBuildPath: string; + customUserAttributes: string[]; }; export type Standalone = Common & { @@ -133,7 +134,8 @@ export function readBuildOptions(params: { CNAME: string | undefined; isExternal isSilent, "keycloakVersionDefaultAssets": keycloakVersionDefaultAssets ?? "11.0.3", appInputPath: getAppInputPath(), - keycloakBuildPath: getKeycloakBuildPath() + keycloakBuildPath: getKeycloakBuildPath(), + "customUserAttributes": keycloakify.customUserAttributes ?? [] }; })(); diff --git a/src/bin/keycloakify/generateFtl/ftl_object_to_js_code_declaring_an_object.ftl b/src/bin/keycloakify/generateFtl/ftl_object_to_js_code_declaring_an_object.ftl index 30092d1b..d250ae73 100644 --- a/src/bin/keycloakify/generateFtl/ftl_object_to_js_code_declaring_an_object.ftl +++ b/src/bin/keycloakify/generateFtl/ftl_object_to_js_code_declaring_an_object.ftl @@ -13,8 +13,7 @@ "totp", "totpSecret", "SAMLRequest", "SAMLResponse", "relayState", "device_user_code", "code", "password-new", "rememberMe", "login", "authenticationExecution", "cancel-aia", "clientDataJSON", "authenticatorData", "signature", "credentialId", "userHandle", "error", "authn_use_chk", "authenticationExecution", - "isSetRetry", "try-again", "attestationObject", "publicKeyCredentialId", "authenticatorLabel", - "location", "occupation" + "isSetRetry", "try-again", "attestationObject", "publicKeyCredentialId", "authenticatorLabel"CUSTOM_USER_ATTRIBUTES_eKsIY4ZsZ4xeM ]> <#attempt> diff --git a/src/bin/keycloakify/generateFtl/generateFtl.ts b/src/bin/keycloakify/generateFtl/generateFtl.ts index f13f5cd7..a70a4775 100644 --- a/src/bin/keycloakify/generateFtl/generateFtl.ts +++ b/src/bin/keycloakify/generateFtl/generateFtl.ts @@ -8,7 +8,6 @@ import { objectKeys } from "tsafe/objectKeys"; import { ftlValuesGlobalName } from "../ftlValuesGlobalName"; import type { BuildOptions } from "../BuildOptions"; import { assert } from "tsafe/assert"; -import { Reflect } from "tsafe/Reflect"; export const themeTypes = ["login", "account"] as const; @@ -47,7 +46,11 @@ export type AccountThemePageId = (typeof accountThemePageIds)[number]; export type BuildOptionsLike = BuildOptionsLike.Standalone | BuildOptionsLike.ExternalAssets; export namespace BuildOptionsLike { - export type Standalone = { + export type Common = { + customUserAttributes: string[]; + }; + + export type Standalone = Common & { isStandalone: true; urlPathname: string | undefined; }; @@ -59,23 +62,21 @@ export namespace BuildOptionsLike { isStandalone: false; }; - export type SameDomain = CommonExternalAssets & { - areAppAndKeycloakServerSharingSameDomain: true; - }; + export type SameDomain = Common & + CommonExternalAssets & { + areAppAndKeycloakServerSharingSameDomain: true; + }; - export type DifferentDomains = CommonExternalAssets & { - areAppAndKeycloakServerSharingSameDomain: false; - urlOrigin: string; - urlPathname: string | undefined; - }; + export type DifferentDomains = Common & + CommonExternalAssets & { + areAppAndKeycloakServerSharingSameDomain: false; + urlOrigin: string; + urlPathname: string | undefined; + }; } } -{ - const buildOptions = Reflect(); - - assert(); -} +assert(); export function generateFtlFilesCodeFactory(params: { indexHtmlCode: string; @@ -153,7 +154,11 @@ export function generateFtlFilesCodeFactory(params: { '{ "x": "vIdLqMeOed9sdLdIdOxdK0d" }': fs .readFileSync(pathJoin(__dirname, "ftl_object_to_js_code_declaring_an_object.ftl")) .toString("utf8") - .match(/^