keycloakify 5.4.6 → 5.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +19 -0
- package/README.md +4 -0
- package/bin/build-keycloak-theme/build-keycloak-theme.js +11 -7
- package/bin/build-keycloak-theme/build-keycloak-theme.js.map +1 -1
- package/bin/build-keycloak-theme/generateFtl/ftl_object_to_js_code_declaring_an_object.ftl +25 -27
- package/bin/build-keycloak-theme/generateFtl/generateFtl.d.ts +1 -1
- package/bin/build-keycloak-theme/generateFtl/generateFtl.js +4 -3
- package/bin/build-keycloak-theme/generateFtl/generateFtl.js.map +1 -1
- package/bin/build-keycloak-theme/generateFtl/index.js +5 -1
- package/bin/build-keycloak-theme/generateFtl/index.js.map +1 -1
- package/bin/build-keycloak-theme/generateJavaStackFiles.js +12 -8
- package/bin/build-keycloak-theme/generateJavaStackFiles.js.map +1 -1
- package/bin/build-keycloak-theme/generateKeycloakThemeResources.js +7 -3
- package/bin/build-keycloak-theme/generateKeycloakThemeResources.js.map +1 -1
- package/bin/build-keycloak-theme/generateStartKeycloakTestingContainer.js +10 -6
- package/bin/build-keycloak-theme/generateStartKeycloakTestingContainer.js.map +1 -1
- package/bin/build-keycloak-theme/index.js +5 -1
- package/bin/build-keycloak-theme/index.js.map +1 -1
- package/bin/build-keycloak-theme/replaceImportFromStatic.js +15 -11
- package/bin/build-keycloak-theme/replaceImportFromStatic.js.map +1 -1
- package/bin/create-keycloak-email-directory.js +7 -3
- package/bin/create-keycloak-email-directory.js.map +1 -1
- package/bin/download-builtin-keycloak-theme.js +3 -3
- package/bin/download-builtin-keycloak-theme.js.map +1 -1
- package/bin/generate-i18n-messages.js +9 -5
- package/bin/generate-i18n-messages.js.map +1 -1
- package/bin/link_in_test_app.js +11 -6
- package/bin/link_in_test_app.js.map +1 -1
- package/bin/tools/NpmModuleVersion.js +3 -3
- package/bin/tools/NpmModuleVersion.js.map +1 -1
- package/bin/tools/crawl.js +5 -1
- package/bin/tools/crawl.js.map +1 -1
- package/bin/tools/downloadAndUnzip.js +2 -2
- package/bin/tools/downloadAndUnzip.js.map +1 -1
- package/bin/tools/getProjectRoot.js +5 -1
- package/bin/tools/getProjectRoot.js.map +1 -1
- package/bin/tools/grant-exec-perms.js +1 -1
- package/bin/tools/grant-exec-perms.js.map +1 -1
- package/bin/tools/rm.js +1 -1
- package/bin/tools/rm.js.map +1 -1
- package/bin/tools/transformCodebase.js +5 -1
- package/bin/tools/transformCodebase.js.map +1 -1
- package/lib/components/Error.js +1 -1
- package/lib/components/Error.js.map +1 -1
- package/lib/components/Info.js +1 -1
- package/lib/components/Info.js.map +1 -1
- package/lib/components/KcApp.js +17 -14
- package/lib/components/KcApp.js.map +1 -1
- package/lib/components/Login.js +6 -6
- package/lib/components/Login.js.map +1 -1
- package/lib/components/LoginConfigTotp.d.ts +6 -0
- package/lib/components/LoginConfigTotp.js +44 -0
- package/lib/components/LoginConfigTotp.js.map +1 -0
- package/lib/components/LoginIdpLinkConfirm.js +1 -1
- package/lib/components/LoginIdpLinkConfirm.js.map +1 -1
- package/lib/components/LoginIdpLinkEmail.js +1 -1
- package/lib/components/LoginIdpLinkEmail.js.map +1 -1
- package/lib/components/LoginOtp.js +1 -1
- package/lib/components/LoginOtp.js.map +1 -1
- package/lib/components/LoginPageExpired.js +1 -1
- package/lib/components/LoginPageExpired.js.map +1 -1
- package/lib/components/LoginResetPassword.js +1 -1
- package/lib/components/LoginResetPassword.js.map +1 -1
- package/lib/components/LoginUpdatePassword.js +1 -1
- package/lib/components/LoginUpdatePassword.js.map +1 -1
- package/lib/components/LoginUpdateProfile.js +1 -1
- package/lib/components/LoginUpdateProfile.js.map +1 -1
- package/lib/components/LoginVerifyEmail.js +1 -1
- package/lib/components/LoginVerifyEmail.js.map +1 -1
- package/lib/components/Register.js +1 -1
- package/lib/components/Register.js.map +1 -1
- package/lib/components/RegisterUserProfile.js +7 -7
- package/lib/components/RegisterUserProfile.js.map +1 -1
- package/lib/components/Template.js +4 -4
- package/lib/components/Template.js.map +1 -1
- package/lib/components/Terms.js +1 -1
- package/lib/components/Terms.js.map +1 -1
- package/lib/getKcContext/KcContextBase.d.ts +28 -1
- package/lib/getKcContext/KcContextBase.js.map +1 -1
- package/lib/getKcContext/getKcContext.js +1 -1
- package/lib/getKcContext/getKcContext.js.map +1 -1
- package/lib/getKcContext/kcContextMocks/index.js +5 -1
- package/lib/getKcContext/kcContextMocks/index.js.map +1 -1
- package/lib/getKcContext/kcContextMocks/kcContextMocks.js +17 -1
- package/lib/getKcContext/kcContextMocks/kcContextMocks.js.map +1 -1
- package/lib/i18n/index.d.ts +1 -1
- package/lib/i18n/index.js +5 -5
- package/lib/i18n/index.js.map +1 -1
- package/lib/index.js +5 -1
- package/lib/index.js.map +1 -1
- package/lib/keycloakJsAdapter.d.ts +1 -0
- package/lib/keycloakJsAdapter.js +31 -10
- package/lib/keycloakJsAdapter.js.map +1 -1
- package/lib/useFormValidationSlice.d.ts +1 -1
- package/package.json +7 -3
- package/src/bin/build-keycloak-theme/generateFtl/ftl_object_to_js_code_declaring_an_object.ftl +25 -27
- package/src/bin/build-keycloak-theme/generateFtl/generateFtl.ts +1 -0
- package/src/bin/link_in_test_app.ts +1 -1
- package/src/lib/components/KcApp.tsx +3 -0
- package/src/lib/components/LoginConfigTotp.tsx +183 -0
- package/src/lib/getKcContext/KcContextBase.ts +30 -1
- package/src/lib/getKcContext/kcContextMocks/kcContextMocks.ts +21 -0
- package/src/lib/keycloakJsAdapter.ts +37 -11
@@ -24,7 +24,8 @@ export type KcContextBase =
|
|
24
24
|
| KcContextBase.LoginUpdateProfile
|
25
25
|
| KcContextBase.LoginIdpLinkConfirm
|
26
26
|
| KcContextBase.LoginIdpLinkEmail
|
27
|
-
| KcContextBase.LoginPageExpired
|
27
|
+
| KcContextBase.LoginPageExpired
|
28
|
+
| KcContextBase.LoginConfigTotp;
|
28
29
|
|
29
30
|
export declare namespace KcContextBase {
|
30
31
|
export type Common = {
|
@@ -223,6 +224,34 @@ export declare namespace KcContextBase {
|
|
223
224
|
export type LoginPageExpired = Common & {
|
224
225
|
pageId: "login-page-expired.ftl";
|
225
226
|
};
|
227
|
+
|
228
|
+
export type LoginConfigTotp = Common & {
|
229
|
+
pageId: "login-config-totp.ftl";
|
230
|
+
mode?: "qr" | "manual" | undefined | null;
|
231
|
+
totp: {
|
232
|
+
totpSecretEncoded: string;
|
233
|
+
qrUrl: string;
|
234
|
+
policy: {
|
235
|
+
supportedApplications: string[];
|
236
|
+
algorithm: "HmacSHA1" | "HmacSHA256" | "HmacSHA512";
|
237
|
+
digits: number;
|
238
|
+
lookAheadWindow: number;
|
239
|
+
} & (
|
240
|
+
| {
|
241
|
+
type: "totp";
|
242
|
+
period: number;
|
243
|
+
}
|
244
|
+
| {
|
245
|
+
type: "hotp";
|
246
|
+
initialCounter: number;
|
247
|
+
}
|
248
|
+
);
|
249
|
+
totpSecretQrCode: string;
|
250
|
+
manualUrl: string;
|
251
|
+
totpSecret: string;
|
252
|
+
otpCredentials: { id: string; userLabel: string }[];
|
253
|
+
};
|
254
|
+
};
|
226
255
|
}
|
227
256
|
|
228
257
|
export type Attribute = {
|
@@ -387,4 +387,25 @@ export const kcContextMocks: KcContextBase[] = [
|
|
387
387
|
"username": "anUsername",
|
388
388
|
},
|
389
389
|
}),
|
390
|
+
id<KcContextBase.LoginConfigTotp>({
|
391
|
+
...kcContextCommonMock,
|
392
|
+
"pageId": "login-config-totp.ftl",
|
393
|
+
totp: {
|
394
|
+
totpSecretEncoded: "KVVF G2BY N4YX S6LB IUYT K2LH IFYE 4SBV",
|
395
|
+
qrUrl: "#",
|
396
|
+
totpSecretQrCode:
|
397
|
+
"iVBORw0KGgoAAAANSUhEUgAAAPYAAAD2AQAAAADNaUdlAAACM0lEQVR4Xu3OIZJgOQwDUDFd2UxiurLAVnnbHw4YGDKtSiWOn4Gxf81//7r/+q8b4HfLGBZDK9d85NmNR+sB42sXvOYrN5P1DcgYYFTGfOlbzE8gzwy3euweGizw7cfdl34/GRhlkxjKNV+5AebPXPORX1JuB9x8ZfbyyD2y1krWAKsbMq1HnqQDaLfa77p4+MqvzEGSqvSAD/2IHW2yHaigR9tX3m8dDIYGcNf3f+gDpVBZbZU77zyJ6Rlcy+qoTMG887KAPD9hsh6a1Sv3gJUHGHUAxSMzj7zqDDe7Phmt2eG+8UsMxjRGm816MAO+8VMl1R1jGHOrZB/5Zo/WXAPgxixm9Mo96vDGrM1eOto8c4Ax4wF437mifOXlpiPzCnN7Y9l95NnEMxgMY9AAGA8fucH14Y1aVb6N/cqrmyh0BVht7k1e+bU8LK0Cg5vmVq9c5vHIjOfqxDIfeTraNVTwewa4wVe+SW5N+uP1qACeudUZbqGOfA6VZV750Noq2Xx3kpveV44ZelSV1V7KFHzkWyVrrlUwG0Pl9pWnoy3vsQoME6vKI69i5osVgwWzHT7zjmJtMcNUSVn1oYMd7ZodbgowZl45VG0uVuLPUr1yc79uaQBag/mqR34xhlWyHm1prplHboCWdZ4TeZjsK8+dI+jbz1C5hl65mcpgB5dhcj8+dGO+0Ko68+lD37JDD83dpDLzzK+TrQyaVwGj6pUboGV+7+AyN8An/pf84/7rv/4/1l4OCc/1BYMAAAAASUVORK5CYII=",
|
398
|
+
manualUrl: "#",
|
399
|
+
totpSecret: "G4nsI8lQagRMUchH8jEG",
|
400
|
+
otpCredentials: [],
|
401
|
+
policy: {
|
402
|
+
supportedApplications: ["FreeOTP", "Google Authenticator"],
|
403
|
+
algorithm: "HmacSHA1",
|
404
|
+
digits: 6,
|
405
|
+
lookAheadWindow: 1,
|
406
|
+
type: "totp",
|
407
|
+
period: 30,
|
408
|
+
},
|
409
|
+
},
|
410
|
+
}),
|
390
411
|
];
|
@@ -44,8 +44,9 @@ export declare namespace keycloak_js {
|
|
44
44
|
export function createKeycloakAdapter(params: {
|
45
45
|
keycloakInstance: keycloak_js.KeycloakInstance;
|
46
46
|
transformUrlBeforeRedirect(url: string): string;
|
47
|
+
getRedirectMethod?: () => "overwrite location.href" | "location.replace";
|
47
48
|
}): keycloak_js.KeycloakAdapter {
|
48
|
-
const { keycloakInstance, transformUrlBeforeRedirect } = params;
|
49
|
+
const { keycloakInstance, transformUrlBeforeRedirect, getRedirectMethod = () => "overwrite location.href" } = params;
|
49
50
|
|
50
51
|
const neverResolvingPromise: keycloak_js.KeycloakPromise<void, void> = Object.defineProperties(new Promise(() => {}), {
|
51
52
|
"success": { "value": () => {} },
|
@@ -54,25 +55,50 @@ export function createKeycloakAdapter(params: {
|
|
54
55
|
|
55
56
|
return {
|
56
57
|
"login": options => {
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
58
|
+
const newHref = transformUrlBeforeRedirect(keycloakInstance.createLoginUrl(options));
|
59
|
+
switch (getRedirectMethod()) {
|
60
|
+
case "location.replace":
|
61
|
+
window.location.replace(newHref);
|
62
|
+
break;
|
63
|
+
case "overwrite location.href":
|
64
|
+
window.location.href = newHref;
|
65
|
+
break;
|
66
|
+
}
|
62
67
|
return neverResolvingPromise;
|
63
68
|
},
|
64
69
|
"register": options => {
|
65
|
-
|
70
|
+
const newHref = transformUrlBeforeRedirect(keycloakInstance.createRegisterUrl(options));
|
71
|
+
switch (getRedirectMethod()) {
|
72
|
+
case "location.replace":
|
73
|
+
window.location.replace(newHref);
|
74
|
+
break;
|
75
|
+
case "overwrite location.href":
|
76
|
+
window.location.href = newHref;
|
77
|
+
break;
|
78
|
+
}
|
66
79
|
|
67
80
|
return neverResolvingPromise;
|
68
81
|
},
|
82
|
+
"logout": options => {
|
83
|
+
window.location.replace(transformUrlBeforeRedirect(keycloakInstance.createLogoutUrl(options)));
|
84
|
+
return neverResolvingPromise;
|
85
|
+
},
|
69
86
|
"accountManagement": () => {
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
} else {
|
87
|
+
const accountUrl = transformUrlBeforeRedirect(keycloakInstance.createAccountUrl());
|
88
|
+
|
89
|
+
if (accountUrl === "undefined") {
|
74
90
|
throw new Error("Not supported by the OIDC server");
|
75
91
|
}
|
92
|
+
|
93
|
+
switch (getRedirectMethod()) {
|
94
|
+
case "location.replace":
|
95
|
+
window.location.replace(accountUrl);
|
96
|
+
break;
|
97
|
+
case "overwrite location.href":
|
98
|
+
window.location.href = accountUrl;
|
99
|
+
break;
|
100
|
+
}
|
101
|
+
|
76
102
|
return neverResolvingPromise;
|
77
103
|
},
|
78
104
|
"redirectUri": options => {
|