keycloakify 11.13.5 → 11.13.7
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/bin/97.index.js +26 -2
- package/login/pages/UpdateEmail.js +1 -1
- package/login/pages/UpdateEmail.js.map +1 -1
- package/package.json +1 -1
- package/src/bin/keycloakify/generateFtl/kcContextDeclarationTemplate.ftl +12 -2
- package/src/bin/sync-extensions/extensionModuleMeta.ts +49 -3
- package/src/login/pages/UpdateEmail.tsx +1 -1
package/bin/97.index.js
CHANGED
|
@@ -144,16 +144,40 @@ async function getExtensionModuleMetas(params) {
|
|
|
144
144
|
return configHash;
|
|
145
145
|
})();
|
|
146
146
|
const installedExtensionModules = await (async () => {
|
|
147
|
-
|
|
147
|
+
let installedExtensionModules = await (0,listInstalledModules/* listInstalledModules */.P)({
|
|
148
148
|
packageJsonFilePath: buildContext.packageJsonFilePath,
|
|
149
149
|
filter: ({ moduleName }) => moduleName.includes("keycloakify") && moduleName !== "keycloakify"
|
|
150
150
|
});
|
|
151
|
-
|
|
151
|
+
installedExtensionModules = (await Promise.all(installedExtensionModules.map(async (entry) => {
|
|
152
152
|
if (!(await (0,fs_existsAsync/* existsAsync */.o)((0,external_path_.join)(entry.dirPath, constants/* KEYCLOAK_THEME */.PC)))) {
|
|
153
153
|
return undefined;
|
|
154
154
|
}
|
|
155
155
|
return entry;
|
|
156
156
|
}))).filter((0,exclude/* exclude */.D)(undefined));
|
|
157
|
+
maybe_exclude_login_ui: {
|
|
158
|
+
const LOGIN_UI_MODULE_NAME = "@keycloakify/login-ui";
|
|
159
|
+
if (!installedExtensionModules
|
|
160
|
+
.map(({ moduleName }) => moduleName)
|
|
161
|
+
.includes(LOGIN_UI_MODULE_NAME)) {
|
|
162
|
+
break maybe_exclude_login_ui;
|
|
163
|
+
}
|
|
164
|
+
const shouldExcludeLoginUi = await (async () => {
|
|
165
|
+
for (const entry of installedExtensionModules) {
|
|
166
|
+
if (entry.moduleName === LOGIN_UI_MODULE_NAME) {
|
|
167
|
+
continue;
|
|
168
|
+
}
|
|
169
|
+
if (await (0,fs_existsAsync/* existsAsync */.o)((0,external_path_.join)(entry.dirPath, constants/* KEYCLOAK_THEME */.PC, "login", "pages", "login"))) {
|
|
170
|
+
return true;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
return false;
|
|
174
|
+
})();
|
|
175
|
+
if (!shouldExcludeLoginUi) {
|
|
176
|
+
break maybe_exclude_login_ui;
|
|
177
|
+
}
|
|
178
|
+
installedExtensionModules = installedExtensionModules.filter(({ moduleName }) => moduleName !== LOGIN_UI_MODULE_NAME);
|
|
179
|
+
}
|
|
180
|
+
return installedExtensionModules;
|
|
157
181
|
})();
|
|
158
182
|
const cacheContent = await (async () => {
|
|
159
183
|
if (!(await (0,fs_existsAsync/* existsAsync */.o)(cacheFilePath))) {
|
|
@@ -10,7 +10,7 @@ export default function UpdateEmail(props) {
|
|
|
10
10
|
const { msg, msgStr } = i18n;
|
|
11
11
|
const [isFormSubmittable, setIsFormSubmittable] = useState(false);
|
|
12
12
|
const { url, messagesPerField, isAppInitiatedAction } = kcContext;
|
|
13
|
-
return (_jsx(Template, Object.assign({ kcContext: kcContext, i18n: i18n, doUseDefaultCss: doUseDefaultCss, classes: classes, displayMessage: messagesPerField.exists("global"), displayRequiredFields: true, headerNode: msg("updateEmailTitle") }, { children: _jsxs("form", Object.assign({ id: "kc-update-email-form", className: kcClsx("kcFormClass"), action: url.loginAction, method: "post" }, { children: [_jsx(UserProfileFormFields, { kcContext: kcContext, i18n: i18n, kcClsx: kcClsx, onIsFormSubmittableValueChange: setIsFormSubmittable, doMakeUserConfirmPassword: doMakeUserConfirmPassword }), _jsxs("div", Object.assign({ className: kcClsx("kcFormGroupClass") }, { children: [_jsx("div", Object.assign({ id: "kc-form-options", className: kcClsx("kcFormOptionsClass") }, { children: _jsx("div", { className: kcClsx("kcFormOptionsWrapperClass") }) })), _jsx(LogoutOtherSessions, { kcClsx: kcClsx, i18n: i18n }), _jsxs("div", Object.assign({ id: "kc-form-buttons", className: kcClsx("kcFormButtonsClass") }, { children: [_jsx("input", { disabled: !isFormSubmittable, className: kcClsx("kcButtonClass", "kcButtonPrimaryClass",
|
|
13
|
+
return (_jsx(Template, Object.assign({ kcContext: kcContext, i18n: i18n, doUseDefaultCss: doUseDefaultCss, classes: classes, displayMessage: messagesPerField.exists("global"), displayRequiredFields: true, headerNode: msg("updateEmailTitle") }, { children: _jsxs("form", Object.assign({ id: "kc-update-email-form", className: kcClsx("kcFormClass"), action: url.loginAction, method: "post" }, { children: [_jsx(UserProfileFormFields, { kcContext: kcContext, i18n: i18n, kcClsx: kcClsx, onIsFormSubmittableValueChange: setIsFormSubmittable, doMakeUserConfirmPassword: doMakeUserConfirmPassword }), _jsxs("div", Object.assign({ className: kcClsx("kcFormGroupClass") }, { children: [_jsx("div", Object.assign({ id: "kc-form-options", className: kcClsx("kcFormOptionsClass") }, { children: _jsx("div", { className: kcClsx("kcFormOptionsWrapperClass") }) })), _jsx(LogoutOtherSessions, { kcClsx: kcClsx, i18n: i18n }), _jsxs("div", Object.assign({ id: "kc-form-buttons", className: kcClsx("kcFormButtonsClass") }, { children: [_jsx("input", { disabled: !isFormSubmittable, className: kcClsx("kcButtonClass", "kcButtonPrimaryClass", !isAppInitiatedAction && "kcButtonBlockClass", "kcButtonLargeClass"), type: "submit", value: msgStr("doSubmit") }), isAppInitiatedAction && (_jsx("button", Object.assign({ className: kcClsx("kcButtonClass", "kcButtonDefaultClass", "kcButtonLargeClass"), type: "submit", name: "cancel-aia", value: "true" }, { children: msg("doCancel") })))] }))] }))] })) })));
|
|
14
14
|
}
|
|
15
15
|
function LogoutOtherSessions(props) {
|
|
16
16
|
const { kcClsx, i18n } = props;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UpdateEmail.js","sourceRoot":"","sources":["../../src/login/pages/UpdateEmail.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjC,OAAO,EAAE,SAAS,EAAe,MAAM,8BAA8B,CAAC;AAWtE,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,KAAuB;IACvD,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,OAAO,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,GAAG,KAAK,CAAC;IAExH,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;QACzB,eAAe;QACf,OAAO;KACV,CAAC,CAAC;IAEH,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAE7B,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAElE,MAAM,EAAE,GAAG,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,GAAG,SAAS,CAAC;IAElE,OAAO,CACH,KAAC,QAAQ,kBACL,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,IAAI,EACV,eAAe,EAAE,eAAe,EAChC,OAAO,EAAE,OAAO,EAChB,cAAc,EAAE,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,EACjD,qBAAqB,QACrB,UAAU,EAAE,GAAG,CAAC,kBAAkB,CAAC,gBAEnC,8BAAM,EAAE,EAAC,sBAAsB,EAAC,SAAS,EAAE,MAAM,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,WAAW,EAAE,MAAM,EAAC,MAAM,iBACpG,KAAC,qBAAqB,IAClB,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,MAAM,EACd,8BAA8B,EAAE,oBAAoB,EACpD,yBAAyB,EAAE,yBAAyB,GACtD,EAEF,6BAAK,SAAS,EAAE,MAAM,CAAC,kBAAkB,CAAC,iBACtC,4BAAK,EAAE,EAAC,iBAAiB,EAAC,SAAS,EAAE,MAAM,CAAC,oBAAoB,CAAC,gBAC7D,cAAK,SAAS,EAAE,MAAM,CAAC,2BAA2B,CAAC,GAAI,IACrD,EAEN,KAAC,mBAAmB,IAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAI,EAEnD,6BAAK,EAAE,EAAC,iBAAiB,EAAC,SAAS,EAAE,MAAM,CAAC,oBAAoB,CAAC,iBAC7D,gBACI,QAAQ,EAAE,CAAC,iBAAiB,EAC5B,SAAS,EAAE,MAAM,CACb,eAAe,EACf,sBAAsB,EACtB,CAAC,
|
|
1
|
+
{"version":3,"file":"UpdateEmail.js","sourceRoot":"","sources":["../../src/login/pages/UpdateEmail.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -206,8 +206,14 @@ function decodeHtmlEntities(htmlStr){
|
|
|
206
206
|
We cherry pick what we use in it in the exclusion section.
|
|
207
207
|
-->
|
|
208
208
|
<#if (
|
|
209
|
-
|
|
210
|
-
|
|
209
|
+
(
|
|
210
|
+
xKeycloakify.pageId == "index.ftl" &&
|
|
211
|
+
xKeycloakify.themeType == "account"
|
|
212
|
+
) || (
|
|
213
|
+
<#-- For some reason it's also the case for error.ftl -->
|
|
214
|
+
xKeycloakify.pageId == "error.ftl" &&
|
|
215
|
+
xKeycloakify.themeType == "login"
|
|
216
|
+
)
|
|
211
217
|
)>
|
|
212
218
|
<#break>
|
|
213
219
|
</#if>
|
|
@@ -284,6 +290,10 @@ function decodeHtmlEntities(htmlStr){
|
|
|
284
290
|
areSamePath(path, []) &&
|
|
285
291
|
["login-idp-link-confirm.ftl", "login-idp-link-email.ftl" ]?seq_contains(xKeycloakify.pageId)
|
|
286
292
|
) || (
|
|
293
|
+
<#-- NOTE: This condition is almost certainly dead code since we exclude the realm prop
|
|
294
|
+
when it's an internal representation.
|
|
295
|
+
And when we bypass (account index.ftl, error.ftl) we cherry pick...
|
|
296
|
+
-->
|
|
287
297
|
["masterAdminClient", "delegateForUpdate", "defaultRole", "smtpConfig"]?seq_contains(key) &&
|
|
288
298
|
areSamePath(path, ["realm"])
|
|
289
299
|
) || (
|
|
@@ -114,15 +114,15 @@ export async function getExtensionModuleMetas(params: {
|
|
|
114
114
|
})();
|
|
115
115
|
|
|
116
116
|
const installedExtensionModules = await (async () => {
|
|
117
|
-
|
|
117
|
+
let installedExtensionModules = await listInstalledModules({
|
|
118
118
|
packageJsonFilePath: buildContext.packageJsonFilePath,
|
|
119
119
|
filter: ({ moduleName }) =>
|
|
120
120
|
moduleName.includes("keycloakify") && moduleName !== "keycloakify"
|
|
121
121
|
});
|
|
122
122
|
|
|
123
|
-
|
|
123
|
+
installedExtensionModules = (
|
|
124
124
|
await Promise.all(
|
|
125
|
-
|
|
125
|
+
installedExtensionModules.map(async entry => {
|
|
126
126
|
if (!(await existsAsync(pathJoin(entry.dirPath, KEYCLOAK_THEME)))) {
|
|
127
127
|
return undefined;
|
|
128
128
|
}
|
|
@@ -130,6 +130,52 @@ export async function getExtensionModuleMetas(params: {
|
|
|
130
130
|
})
|
|
131
131
|
)
|
|
132
132
|
).filter(exclude(undefined));
|
|
133
|
+
|
|
134
|
+
maybe_exclude_login_ui: {
|
|
135
|
+
const LOGIN_UI_MODULE_NAME = "@keycloakify/login-ui";
|
|
136
|
+
|
|
137
|
+
if (
|
|
138
|
+
!installedExtensionModules
|
|
139
|
+
.map(({ moduleName }) => moduleName)
|
|
140
|
+
.includes(LOGIN_UI_MODULE_NAME)
|
|
141
|
+
) {
|
|
142
|
+
break maybe_exclude_login_ui;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
const shouldExcludeLoginUi = await (async () => {
|
|
146
|
+
for (const entry of installedExtensionModules) {
|
|
147
|
+
if (entry.moduleName === LOGIN_UI_MODULE_NAME) {
|
|
148
|
+
continue;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
if (
|
|
152
|
+
await existsAsync(
|
|
153
|
+
pathJoin(
|
|
154
|
+
entry.dirPath,
|
|
155
|
+
KEYCLOAK_THEME,
|
|
156
|
+
"login",
|
|
157
|
+
"pages",
|
|
158
|
+
"login"
|
|
159
|
+
)
|
|
160
|
+
)
|
|
161
|
+
) {
|
|
162
|
+
return true;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
return false;
|
|
167
|
+
})();
|
|
168
|
+
|
|
169
|
+
if (!shouldExcludeLoginUi) {
|
|
170
|
+
break maybe_exclude_login_ui;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
installedExtensionModules = installedExtensionModules.filter(
|
|
174
|
+
({ moduleName }) => moduleName !== LOGIN_UI_MODULE_NAME
|
|
175
|
+
);
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
return installedExtensionModules;
|
|
133
179
|
})();
|
|
134
180
|
|
|
135
181
|
const cacheContent = await (async () => {
|
|
@@ -58,7 +58,7 @@ export default function UpdateEmail(props: UpdateEmailProps) {
|
|
|
58
58
|
className={kcClsx(
|
|
59
59
|
"kcButtonClass",
|
|
60
60
|
"kcButtonPrimaryClass",
|
|
61
|
-
|
|
61
|
+
!isAppInitiatedAction && "kcButtonBlockClass",
|
|
62
62
|
"kcButtonLargeClass"
|
|
63
63
|
)}
|
|
64
64
|
type="submit"
|