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