From 564ffc2be9387a1df705d81806cc9e9399f923e7 Mon Sep 17 00:00:00 2001 From: Thomas Silvestre Date: Thu, 6 Apr 2023 17:50:26 +0200 Subject: [PATCH 1/4] infer type of algToKeyUriAlg from type of kcConfig + fix totp interface - add more yarn dirs to .gitignore --- .gitignore | 4 +++- src/login/kcContext/KcContext.ts | 2 +- src/login/kcContext/kcContextMocks.ts | 2 +- src/login/pages/LoginConfigTotp.tsx | 7 ++++--- 4 files changed, 9 insertions(+), 6 deletions(-) diff --git a/.gitignore b/.gitignore index 1bee3e4c..200f75c9 100644 --- a/.gitignore +++ b/.gitignore @@ -52,4 +52,6 @@ jspm_packages /src/account/i18n/baseMessages/ # VS Code devcontainers -.devcontainer \ No newline at end of file +.devcontainer +/.yarn +/.yarnrc.yml \ No newline at end of file diff --git a/src/login/kcContext/KcContext.ts b/src/login/kcContext/KcContext.ts index f67c0762..8b276c98 100644 --- a/src/login/kcContext/KcContext.ts +++ b/src/login/kcContext/KcContext.ts @@ -333,7 +333,6 @@ export declare namespace KcContext { totpSecretEncoded: string; qrUrl: string; policy: { - supportedApplications: string[]; algorithm: "HmacSHA1" | "HmacSHA256" | "HmacSHA512"; digits: number; lookAheadWindow: number; @@ -347,6 +346,7 @@ export declare namespace KcContext { initialCounter: number; } ); + supportedApplications: string[]; totpSecretQrCode: string; manualUrl: string; totpSecret: string; diff --git a/src/login/kcContext/kcContextMocks.ts b/src/login/kcContext/kcContextMocks.ts index 736b2fe5..be992fbb 100644 --- a/src/login/kcContext/kcContextMocks.ts +++ b/src/login/kcContext/kcContextMocks.ts @@ -453,8 +453,8 @@ export const kcContextMocks: KcContext[] = [ manualUrl: "#", totpSecret: "G4nsI8lQagRMUchH8jEG", otpCredentials: [], + supportedApplications: ["FreeOTP", "Google Authenticator"], policy: { - supportedApplications: ["FreeOTP", "Google Authenticator"], algorithm: "HmacSHA1", digits: 6, lookAheadWindow: 1, diff --git a/src/login/pages/LoginConfigTotp.tsx b/src/login/pages/LoginConfigTotp.tsx index 24c0c148..082b313e 100644 --- a/src/login/pages/LoginConfigTotp.tsx +++ b/src/login/pages/LoginConfigTotp.tsx @@ -3,6 +3,7 @@ import type { PageProps } from "keycloakify/login/pages/PageProps"; import { useGetClassName } from "keycloakify/login/lib/useGetClassName"; import type { KcContext } from "../kcContext"; import type { I18n } from "../i18n"; +import { MessageKey } from "keycloakify/login/i18n/i18n"; export default function LoginConfigTotp(props: PageProps, I18n>) { const { kcContext, i18n, doUseDefaultCss, Template, classes } = props; @@ -16,7 +17,7 @@ export default function LoginConfigTotp(props: PageProps = { + const algToKeyUriAlg: Record<(typeof kcContext)["totp"]["policy"]["algorithm"], string> = { "HmacSHA1": "SHA1", "HmacSHA256": "SHA256", "HmacSHA512": "SHA512" @@ -30,8 +31,8 @@ export default function LoginConfigTotp(props: PageProps{msg("loginTotpStep1")}

    - {totp.policy.supportedApplications.map(app => ( -
  • {app}
  • + {totp.supportedApplications.map(app => ( +
  • {msgStr(app as MessageKey, app)}
  • ))}
From 1ff0449332c51c4880feca9e85877dcb384cfc26 Mon Sep 17 00:00:00 2001 From: Thomas Silvestre Date: Tue, 11 Apr 2023 15:44:54 +0200 Subject: [PATCH 2/4] removed "$" typo in LoginConfigTotp.tsx --- src/login/pages/LoginConfigTotp.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/login/pages/LoginConfigTotp.tsx b/src/login/pages/LoginConfigTotp.tsx index 082b313e..d32a34b0 100644 --- a/src/login/pages/LoginConfigTotp.tsx +++ b/src/login/pages/LoginConfigTotp.tsx @@ -170,7 +170,7 @@ export default function LoginConfigTotp(props: PageProps - ${msg("doCancel")} + {msg("doCancel")} ) : ( From 86884607ef5ed0f0a9621b7cda960589df336c17 Mon Sep 17 00:00:00 2001 From: Thomas Silvestre Date: Wed, 12 Apr 2023 11:44:37 +0200 Subject: [PATCH 3/4] add build option keepBuildDir if set to true, will not cleanup build_keycloak directory --- keycloakify-json-schema.json | 3 +++ src/bin/keycloakify/BuildOptions.ts | 17 ++++++++++++++--- src/bin/keycloakify/keycloakify.ts | 5 +++++ src/bin/keycloakify/parsedPackageJson.ts | 4 +++- 4 files changed, 25 insertions(+), 4 deletions(-) diff --git a/keycloakify-json-schema.json b/keycloakify-json-schema.json index a6cc302f..a1f05895 100644 --- a/keycloakify-json-schema.json +++ b/keycloakify-json-schema.json @@ -78,6 +78,9 @@ }, "themeName": { "type": "string" + }, + "keepBuildDir": { + "type": "boolean" } }, "additionalProperties": false diff --git a/src/bin/keycloakify/BuildOptions.ts b/src/bin/keycloakify/BuildOptions.ts index aa68cd41..cd419465 100644 --- a/src/bin/keycloakify/BuildOptions.ts +++ b/src/bin/keycloakify/BuildOptions.ts @@ -27,6 +27,7 @@ export namespace BuildOptions { /** Directory that keycloakify outputs to. Defaults to {cwd}/build_keycloak */ keycloakifyBuildDirPath: string; customUserAttributes: string[]; + keepBuildDir: boolean; }; export type Standalone = Common & { @@ -98,8 +99,17 @@ export function readBuildOptions(params: { projectDirPath: string; isExternalAss const common: BuildOptions.Common = (() => { const { name, keycloakify = {}, version, homepage } = parsedPackageJson; - const { extraPages, extraLoginPages, extraAccountPages, extraThemeProperties, groupId, artifactId, bundler, keycloakVersionDefaultAssets } = - keycloakify ?? {}; + const { + extraPages, + extraLoginPages, + extraAccountPages, + extraThemeProperties, + groupId, + artifactId, + bundler, + keycloakVersionDefaultAssets, + keepBuildDir + } = keycloakify ?? {}; const themeName = keycloakify.themeName ?? @@ -179,7 +189,8 @@ export function readBuildOptions(params: { projectDirPath: string; isExternalAss return keycloakifyBuildDirPath; })(), - "customUserAttributes": keycloakify.customUserAttributes ?? [] + "customUserAttributes": keycloakify.customUserAttributes ?? [], + "keepBuildDir": keepBuildDir ?? false }; })(); diff --git a/src/bin/keycloakify/keycloakify.ts b/src/bin/keycloakify/keycloakify.ts index 228f7ae2..d32a6617 100644 --- a/src/bin/keycloakify/keycloakify.ts +++ b/src/bin/keycloakify/keycloakify.ts @@ -26,6 +26,11 @@ export async function main() { "isSilent": isSilent }); + if (!buildOptions.keepBuildDir) { + logger.log("🧹 Cleanup files under " + buildOptions.keycloakifyBuildDirPath); + fs.rmSync(buildOptions.keycloakifyBuildDirPath, { recursive: true, force: true }); + } + const { doBundlesEmailTemplate } = await generateKeycloakThemeResources({ keycloakThemeBuildingDirPath: buildOptions.keycloakifyBuildDirPath, "emailThemeSrcDirPath": (() => { diff --git a/src/bin/keycloakify/parsedPackageJson.ts b/src/bin/keycloakify/parsedPackageJson.ts index 4dc3c6f0..774a2196 100644 --- a/src/bin/keycloakify/parsedPackageJson.ts +++ b/src/bin/keycloakify/parsedPackageJson.ts @@ -25,6 +25,7 @@ export type ParsedPackageJson = { keycloakifyBuildDirPath?: string; customUserAttributes?: string[]; themeName?: string; + keepBuildDir?: boolean; }; }; @@ -46,7 +47,8 @@ export const zParsedPackageJson = z.object({ "reactAppBuildDirPath": z.string().optional(), "keycloakifyBuildDirPath": z.string().optional(), "customUserAttributes": z.array(z.string()).optional(), - "themeName": z.string().optional() + "themeName": z.string().optional(), + "keepBuildDir": z.boolean().optional() }) .optional() }); From 30fecf857818cf562b6624e59b559790eca549e7 Mon Sep 17 00:00:00 2001 From: Thomas Silvestre Date: Wed, 19 Apr 2023 17:04:46 +0200 Subject: [PATCH 4/4] Revert "add build option keepBuildDir" This reverts commit 86884607ef5ed0f0a9621b7cda960589df336c17. --- keycloakify-json-schema.json | 3 --- src/bin/keycloakify/BuildOptions.ts | 17 +++-------------- src/bin/keycloakify/keycloakify.ts | 5 ----- src/bin/keycloakify/parsedPackageJson.ts | 4 +--- 4 files changed, 4 insertions(+), 25 deletions(-) diff --git a/keycloakify-json-schema.json b/keycloakify-json-schema.json index a1f05895..a6cc302f 100644 --- a/keycloakify-json-schema.json +++ b/keycloakify-json-schema.json @@ -78,9 +78,6 @@ }, "themeName": { "type": "string" - }, - "keepBuildDir": { - "type": "boolean" } }, "additionalProperties": false diff --git a/src/bin/keycloakify/BuildOptions.ts b/src/bin/keycloakify/BuildOptions.ts index 1d4de342..30831022 100644 --- a/src/bin/keycloakify/BuildOptions.ts +++ b/src/bin/keycloakify/BuildOptions.ts @@ -27,7 +27,6 @@ export namespace BuildOptions { /** Directory that keycloakify outputs to. Defaults to {cwd}/build_keycloak */ keycloakifyBuildDirPath: string; customUserAttributes: string[]; - keepBuildDir: boolean; }; export type Standalone = Common & { @@ -99,17 +98,8 @@ export function readBuildOptions(params: { projectDirPath: string; isExternalAss const common: BuildOptions.Common = (() => { const { name, keycloakify = {}, version, homepage } = parsedPackageJson; - const { - extraPages, - extraLoginPages, - extraAccountPages, - extraThemeProperties, - groupId, - artifactId, - bundler, - keycloakVersionDefaultAssets, - keepBuildDir - } = keycloakify ?? {}; + const { extraPages, extraLoginPages, extraAccountPages, extraThemeProperties, groupId, artifactId, bundler, keycloakVersionDefaultAssets } = + keycloakify ?? {}; const themeName = keycloakify.themeName ?? @@ -189,8 +179,7 @@ export function readBuildOptions(params: { projectDirPath: string; isExternalAss return keycloakifyBuildDirPath; })(), - "customUserAttributes": keycloakify.customUserAttributes ?? [], - "keepBuildDir": keepBuildDir ?? false + "customUserAttributes": keycloakify.customUserAttributes ?? [] }; })(); diff --git a/src/bin/keycloakify/keycloakify.ts b/src/bin/keycloakify/keycloakify.ts index 64c9586e..2640de18 100644 --- a/src/bin/keycloakify/keycloakify.ts +++ b/src/bin/keycloakify/keycloakify.ts @@ -26,11 +26,6 @@ export async function main() { "isSilent": isSilent }); - if (!buildOptions.keepBuildDir) { - logger.log("🧹 Cleanup files under " + buildOptions.keycloakifyBuildDirPath); - fs.rmSync(buildOptions.keycloakifyBuildDirPath, { recursive: true, force: true }); - } - const { doBundlesEmailTemplate } = await generateKeycloakThemeResources({ keycloakThemeBuildingDirPath: buildOptions.keycloakifyBuildDirPath, "emailThemeSrcDirPath": (() => { diff --git a/src/bin/keycloakify/parsedPackageJson.ts b/src/bin/keycloakify/parsedPackageJson.ts index ff17c5c0..6ee593fd 100644 --- a/src/bin/keycloakify/parsedPackageJson.ts +++ b/src/bin/keycloakify/parsedPackageJson.ts @@ -25,7 +25,6 @@ export type ParsedPackageJson = { keycloakifyBuildDirPath?: string; customUserAttributes?: string[]; themeName?: string; - keepBuildDir?: boolean; }; }; @@ -47,8 +46,7 @@ export const zParsedPackageJson = z.object({ "reactAppBuildDirPath": z.string().optional(), "keycloakifyBuildDirPath": z.string().optional(), "customUserAttributes": z.array(z.string()).optional(), - "themeName": z.string().optional(), - "keepBuildDir": z.boolean().optional() + "themeName": z.string().optional() }) .optional() });