keycloakify 10.1.0-rc.0 → 10.1.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.
Files changed (205) hide show
  1. package/PUBLIC_URL.js +2 -2
  2. package/PUBLIC_URL.js.map +1 -1
  3. package/account/KcContext/kcContextMocks.js +3 -3
  4. package/account/KcContext/kcContextMocks.js.map +1 -1
  5. package/bin/193.index.js +198 -62
  6. package/bin/{365.index.js → 20.index.js} +302 -263
  7. package/bin/31.index.js +15 -23
  8. package/bin/{430.index.js → 33.index.js} +579 -4
  9. package/bin/{678.index.js → 36.index.js} +2 -577
  10. package/bin/{440.index.js → 499.index.js} +259 -181
  11. package/bin/526.index.js +3 -784
  12. package/bin/599.index.js +4 -1
  13. package/bin/780.index.js +1 -1
  14. package/bin/{525.index.js → 903.index.js} +4840 -97
  15. package/bin/932.index.js +115 -886
  16. package/bin/main.js +4 -4
  17. package/bin/shared/buildContext.d.ts +0 -2
  18. package/bin/shared/buildContext.js.map +1 -1
  19. package/bin/shared/constants.d.ts +5 -6
  20. package/bin/shared/constants.js +5 -6
  21. package/bin/shared/constants.js.map +1 -1
  22. package/bin/shared/copyKeycloakResourcesToPublic.d.ts +2 -4
  23. package/bin/shared/copyKeycloakResourcesToPublic.js.map +1 -1
  24. package/login/KcContext/KcContext.d.ts +9 -18
  25. package/login/KcContext/KcContext.js.map +1 -1
  26. package/login/KcContext/kcContextMocks.js +6 -10
  27. package/login/KcContext/kcContextMocks.js.map +1 -1
  28. package/login/Template.js +4 -59
  29. package/login/Template.js.map +1 -1
  30. package/login/Template.useStylesAndScripts.d.ts +17 -0
  31. package/login/Template.useStylesAndScripts.js +69 -0
  32. package/login/Template.useStylesAndScripts.js.map +1 -0
  33. package/login/pages/Login.js +1 -1
  34. package/login/pages/Login.js.map +1 -1
  35. package/login/pages/LoginIdpLinkConfirmOverride.js +0 -1
  36. package/login/pages/LoginIdpLinkConfirmOverride.js.map +1 -1
  37. package/login/pages/LoginPasskeysConditionalAuthenticate.js +6 -49
  38. package/login/pages/LoginPasskeysConditionalAuthenticate.js.map +1 -1
  39. package/login/pages/LoginPasskeysConditionalAuthenticate.useScript.d.ts +20 -0
  40. package/login/pages/LoginPasskeysConditionalAuthenticate.useScript.js +49 -0
  41. package/login/pages/LoginPasskeysConditionalAuthenticate.useScript.js.map +1 -0
  42. package/login/pages/LoginRecoveryAuthnCodeConfig.js +4 -126
  43. package/login/pages/LoginRecoveryAuthnCodeConfig.js.map +1 -1
  44. package/login/pages/LoginRecoveryAuthnCodeConfig.useScript.d.ts +9 -0
  45. package/login/pages/LoginRecoveryAuthnCodeConfig.useScript.js +133 -0
  46. package/login/pages/LoginRecoveryAuthnCodeConfig.useScript.js.map +1 -0
  47. package/login/pages/LoginUsername.js +1 -1
  48. package/login/pages/LoginUsername.js.map +1 -1
  49. package/login/pages/Register.js +6 -3
  50. package/login/pages/Register.js.map +1 -1
  51. package/login/pages/WebauthnAuthenticate.js +13 -116
  52. package/login/pages/WebauthnAuthenticate.js.map +1 -1
  53. package/login/pages/WebauthnAuthenticate.useScript.d.ts +21 -0
  54. package/login/pages/WebauthnAuthenticate.useScript.js +41 -0
  55. package/login/pages/WebauthnAuthenticate.useScript.js.map +1 -0
  56. package/login/pages/WebauthnRegister.js +8 -178
  57. package/login/pages/WebauthnRegister.js.map +1 -1
  58. package/login/pages/WebauthnRegister.useScript.d.ts +27 -0
  59. package/login/pages/WebauthnRegister.useScript.js +49 -0
  60. package/login/pages/WebauthnRegister.useScript.js.map +1 -0
  61. package/package.json +125 -15
  62. package/res/account-v1/account.ftl +70 -0
  63. package/res/account-v1/applications.ftl +76 -0
  64. package/res/account-v1/federatedIdentity.ftl +42 -0
  65. package/res/account-v1/log.ftl +35 -0
  66. package/res/account-v1/messages/messages_ar.properties +406 -0
  67. package/res/account-v1/messages/messages_ca.properties +147 -0
  68. package/res/account-v1/messages/messages_cs.properties +171 -0
  69. package/res/account-v1/messages/messages_da.properties +339 -0
  70. package/res/account-v1/messages/messages_de.properties +353 -0
  71. package/res/account-v1/messages/messages_en.properties +404 -0
  72. package/res/account-v1/messages/messages_es.properties +147 -0
  73. package/res/account-v1/messages/messages_fi.properties +400 -0
  74. package/res/account-v1/messages/messages_fr.properties +180 -0
  75. package/res/account-v1/messages/messages_hu.properties +334 -0
  76. package/res/account-v1/messages/messages_it.properties +336 -0
  77. package/res/account-v1/messages/messages_ja.properties +335 -0
  78. package/res/account-v1/messages/messages_lt.properties +154 -0
  79. package/res/account-v1/messages/messages_lv.properties +197 -0
  80. package/res/account-v1/messages/messages_nl.properties +371 -0
  81. package/res/account-v1/messages/messages_no.properties +152 -0
  82. package/res/account-v1/messages/messages_pl.properties +248 -0
  83. package/res/account-v1/messages/messages_pt_BR.properties +349 -0
  84. package/res/account-v1/messages/messages_ru.properties +235 -0
  85. package/res/account-v1/messages/messages_sk.properties +196 -0
  86. package/res/account-v1/messages/messages_sv.properties +150 -0
  87. package/res/account-v1/messages/messages_tr.properties +315 -0
  88. package/res/account-v1/messages/messages_zh_CN.properties +153 -0
  89. package/res/account-v1/password.ftl +59 -0
  90. package/res/account-v1/resource-detail.ftl +277 -0
  91. package/res/account-v1/resources/css/account.css +277 -0
  92. package/res/account-v1/resources/img/icon-sidebar-active.png +0 -0
  93. package/res/account-v1/resources/img/keycloak-logo.png +0 -0
  94. package/res/account-v1/resources/img/logo.png +0 -0
  95. package/res/account-v1/resources/resources-common/img/favicon.ico +0 -0
  96. package/res/account-v1/resources/resources-common/node_modules/patternfly/dist/css/patternfly-additions.min.css +5 -0
  97. package/res/account-v1/resources/resources-common/node_modules/patternfly/dist/css/patternfly.min.css +8 -0
  98. package/res/account-v1/resources/resources-common/node_modules/patternfly/dist/fonts/OpenSans-Bold-webfont.woff2 +0 -0
  99. package/res/account-v1/resources/resources-common/node_modules/patternfly/dist/fonts/OpenSans-Light-webfont.woff2 +0 -0
  100. package/res/account-v1/resources/resources-common/node_modules/patternfly/dist/fonts/OpenSans-Regular-webfont.woff2 +0 -0
  101. package/res/account-v1/resources/resources-common/node_modules/patternfly/dist/fonts/OpenSans-Semibold-webfont.woff2 +0 -0
  102. package/res/account-v1/resources/resources-common/node_modules/patternfly/dist/fonts/PatternFlyIcons-webfont.ttf +0 -0
  103. package/res/account-v1/resources/resources-common/node_modules/patternfly/dist/fonts/PatternFlyIcons-webfont.woff +0 -0
  104. package/res/account-v1/resources.ftl +403 -0
  105. package/res/account-v1/sessions.ftl +44 -0
  106. package/res/account-v1/template.ftl +88 -0
  107. package/res/account-v1/theme.properties +14 -0
  108. package/res/account-v1/totp.ftl +141 -0
  109. package/res/public/.keycloakify/account/css/account.css +277 -0
  110. package/res/public/.keycloakify/account/img/icon-sidebar-active.png +0 -0
  111. package/res/public/.keycloakify/account/img/keycloak-logo.png +0 -0
  112. package/res/public/.keycloakify/account/img/logo.png +0 -0
  113. package/res/public/.keycloakify/account/resources-common/img/favicon.ico +0 -0
  114. package/res/public/.keycloakify/account/resources-common/node_modules/patternfly/dist/css/patternfly-additions.min.css +5 -0
  115. package/res/public/.keycloakify/account/resources-common/node_modules/patternfly/dist/css/patternfly.min.css +8 -0
  116. package/res/public/.keycloakify/account/resources-common/node_modules/patternfly/dist/fonts/OpenSans-Bold-webfont.woff2 +0 -0
  117. package/res/public/.keycloakify/account/resources-common/node_modules/patternfly/dist/fonts/OpenSans-Light-webfont.woff2 +0 -0
  118. package/res/public/.keycloakify/account/resources-common/node_modules/patternfly/dist/fonts/OpenSans-Regular-webfont.woff2 +0 -0
  119. package/res/public/.keycloakify/account/resources-common/node_modules/patternfly/dist/fonts/OpenSans-Semibold-webfont.woff2 +0 -0
  120. package/res/public/.keycloakify/account/resources-common/node_modules/patternfly/dist/fonts/PatternFlyIcons-webfont.ttf +0 -0
  121. package/res/public/.keycloakify/account/resources-common/node_modules/patternfly/dist/fonts/PatternFlyIcons-webfont.woff +0 -0
  122. package/res/public/.keycloakify/login/css/login.css +629 -0
  123. package/res/public/.keycloakify/login/img/feedback-error-arrow-down.png +0 -0
  124. package/res/public/.keycloakify/login/img/feedback-error-sign.png +0 -0
  125. package/res/public/.keycloakify/login/img/feedback-success-arrow-down.png +0 -0
  126. package/res/public/.keycloakify/login/img/feedback-success-sign.png +0 -0
  127. package/res/public/.keycloakify/login/img/feedback-warning-arrow-down.png +0 -0
  128. package/res/public/.keycloakify/login/img/feedback-warning-sign.png +0 -0
  129. package/res/public/.keycloakify/login/img/keycloak-bg.png +0 -0
  130. package/res/public/.keycloakify/login/img/keycloak-logo-text.png +0 -0
  131. package/res/public/.keycloakify/login/img/keycloak-logo.png +0 -0
  132. package/res/public/.keycloakify/login/js/authChecker.js +49 -0
  133. package/res/public/.keycloakify/login/js/common.js +48 -0
  134. package/res/public/.keycloakify/login/js/kcMultivalued.js +106 -0
  135. package/res/public/.keycloakify/login/js/kcNumberFormat.js +21 -0
  136. package/res/public/.keycloakify/login/js/kcNumberUnFormat.js +19 -0
  137. package/res/public/.keycloakify/login/js/menu-button-links.js +315 -0
  138. package/{src/bin/shared/downloadKeycloakDefaultTheme/extra-assets → res/public/.keycloakify/login/js}/passkeysConditionalAuth.js +1 -1
  139. package/res/public/.keycloakify/login/js/passwordVisibility.js +15 -0
  140. package/res/public/.keycloakify/login/js/userProfile.js +71 -0
  141. package/res/public/.keycloakify/login/js/webauthnRegister.js +140 -0
  142. package/res/public/.keycloakify/login/resources-common/img/favicon.ico +0 -0
  143. package/res/public/.keycloakify/login/resources-common/lib/pficon/pficon.css +22 -0
  144. package/res/public/.keycloakify/login/resources-common/lib/pficon/pficon.woff2 +0 -0
  145. package/res/public/.keycloakify/login/resources-common/node_modules/@patternfly/patternfly/patternfly.min.css +2 -0
  146. package/res/public/.keycloakify/login/resources-common/node_modules/jquery/dist/jquery.min.js +2 -0
  147. package/res/public/.keycloakify/login/resources-common/node_modules/patternfly/dist/css/patternfly-additions.min.css +5 -0
  148. package/res/public/.keycloakify/login/resources-common/node_modules/patternfly/dist/css/patternfly.min.css +8 -0
  149. package/res/public/.keycloakify/login/resources-common/node_modules/patternfly/dist/fonts/OpenSans-Bold-webfont.ttf +0 -0
  150. package/res/public/.keycloakify/login/resources-common/node_modules/patternfly/dist/fonts/OpenSans-Bold-webfont.woff +0 -0
  151. package/res/public/.keycloakify/login/resources-common/node_modules/patternfly/dist/fonts/OpenSans-Bold-webfont.woff2 +0 -0
  152. package/res/public/.keycloakify/login/resources-common/node_modules/patternfly/dist/fonts/OpenSans-Light-webfont.woff2 +0 -0
  153. package/res/public/.keycloakify/login/resources-common/node_modules/patternfly/dist/fonts/OpenSans-Regular-webfont.woff2 +0 -0
  154. package/res/public/.keycloakify/login/resources-common/node_modules/patternfly/dist/fonts/OpenSans-Semibold-webfont.woff2 +0 -0
  155. package/res/public/.keycloakify/login/resources-common/node_modules/patternfly/dist/fonts/PatternFlyIcons-webfont.ttf +0 -0
  156. package/res/public/.keycloakify/login/resources-common/node_modules/patternfly/dist/fonts/PatternFlyIcons-webfont.woff +0 -0
  157. package/res/public/.keycloakify/login/resources-common/node_modules/patternfly/dist/fonts/fontawesome-webfont.woff2 +0 -0
  158. package/res/public/.keycloakify/login/resources-common/node_modules/patternfly/dist/img/bg-login.jpg +0 -0
  159. package/res/public/.keycloakify/login/resources-common/node_modules/rfc4648/lib/rfc4648.js +178 -0
  160. package/src/PUBLIC_URL.ts +5 -3
  161. package/src/account/KcContext/kcContextMocks.ts +3 -3
  162. package/src/bin/copy-keycloak-resources-to-public.ts +1 -1
  163. package/src/bin/initialize-account-theme/initializeAccountTheme_singlePage.ts +4 -1
  164. package/src/bin/initialize-email-theme.ts +28 -8
  165. package/src/bin/keycloakify/buildJars/buildJar.ts +3 -7
  166. package/src/bin/keycloakify/generateFtl/generateFtl.ts +3 -7
  167. package/src/bin/keycloakify/generateResources/generateResourcesForMainTheme.ts +65 -90
  168. package/src/bin/keycloakify/keycloakify.ts +38 -21
  169. package/src/bin/keycloakify/replacers/replaceImportsInCssCode.ts +2 -2
  170. package/src/bin/keycloakify/replacers/replaceImportsInJsCode/vite.ts +3 -3
  171. package/src/bin/keycloakify/replacers/replaceImportsInJsCode/webpack.ts +3 -3
  172. package/src/bin/shared/buildContext.ts +1 -8
  173. package/src/bin/shared/constants.ts +5 -7
  174. package/src/bin/shared/copyKeycloakResourcesToPublic.ts +30 -40
  175. package/src/bin/start-keycloak/start-keycloak.ts +3 -7
  176. package/src/login/KcContext/KcContext.ts +9 -18
  177. package/src/login/KcContext/kcContextMocks.ts +5 -13
  178. package/src/login/Template.tsx +4 -67
  179. package/src/login/Template.useStylesAndScripts.ts +94 -0
  180. package/src/login/pages/Login.tsx +1 -1
  181. package/src/login/pages/LoginIdpLinkConfirmOverride.tsx +0 -1
  182. package/src/login/pages/LoginPasskeysConditionalAuthenticate.tsx +6 -81
  183. package/src/login/pages/LoginPasskeysConditionalAuthenticate.useScript.tsx +72 -0
  184. package/src/login/pages/LoginRecoveryAuthnCodeConfig.tsx +4 -126
  185. package/src/login/pages/LoginRecoveryAuthnCodeConfig.useScript.tsx +142 -0
  186. package/src/login/pages/LoginUsername.tsx +1 -1
  187. package/src/login/pages/Register.tsx +35 -13
  188. package/src/login/pages/WebauthnAuthenticate.tsx +20 -133
  189. package/src/login/pages/WebauthnAuthenticate.useScript.tsx +64 -0
  190. package/src/login/pages/WebauthnRegister.tsx +8 -195
  191. package/src/login/pages/WebauthnRegister.useScript.tsx +93 -0
  192. package/src/tools/useInsertScriptTags.ts +14 -4
  193. package/src/vite-plugin/vite-plugin.ts +11 -15
  194. package/tools/useInsertScriptTags.d.ts +2 -2
  195. package/tools/useInsertScriptTags.js +8 -2
  196. package/tools/useInsertScriptTags.js.map +1 -1
  197. package/vite-plugin/index.js +3357 -47132
  198. package/bin/697.index.js +0 -4749
  199. package/bin/shared/downloadKeycloakStaticResources.d.ts +0 -9
  200. package/bin/shared/downloadKeycloakStaticResources.js.map +0 -1
  201. package/src/bin/keycloakify/generateResources/bringInAccountV1.ts +0 -89
  202. package/src/bin/shared/downloadKeycloakDefaultTheme/downloadKeycloakDefaultTheme.ts +0 -337
  203. package/src/bin/shared/downloadKeycloakDefaultTheme/index.ts +0 -1
  204. package/src/bin/shared/downloadKeycloakStaticResources.ts +0 -53
  205. /package/{src/bin/shared/downloadKeycloakDefaultTheme/extra-assets → res/public/.keycloakify/login/js}/webauthnAuthenticate.js +0 -0
@@ -0,0 +1,49 @@
1
+ import { useEffect } from "react";
2
+ import { useInsertScriptTags } from "../../tools/useInsertScriptTags";
3
+ import { assert } from "../../tools/assert";
4
+ assert();
5
+ assert();
6
+ export function useScript(params) {
7
+ const { authButtonId, kcContext, i18n } = params;
8
+ const { url, challenge, userid, username, signatureAlgorithms, rpEntityName, rpId, attestationConveyancePreference, authenticatorAttachment, requireResidentKey, userVerificationRequirement, createTimeout, excludeCredentialIds } = kcContext;
9
+ const { msgStr, isFetchingTranslations } = i18n;
10
+ const { insertScriptTags } = useInsertScriptTags({
11
+ componentOrHookName: "LoginRecoveryAuthnCodeConfig",
12
+ scriptTags: [
13
+ {
14
+ type: "module",
15
+ textContent: () => `
16
+ import { registerByWebAuthn } from "${url.resourcesPath}/js/webauthnRegister.js";
17
+ const registerButton = document.getElementById('${authButtonId}');
18
+ registerButton.addEventListener("click", function() {
19
+ const input = {
20
+ challenge : '${challenge}',
21
+ userid : '${userid}',
22
+ username : '${username}',
23
+ signatureAlgorithms : ${JSON.stringify(signatureAlgorithms)},
24
+ rpEntityName : ${JSON.stringify(rpEntityName)},
25
+ rpId : ${JSON.stringify(rpId)},
26
+ attestationConveyancePreference : ${JSON.stringify(attestationConveyancePreference)},
27
+ authenticatorAttachment : ${JSON.stringify(authenticatorAttachment)},
28
+ requireResidentKey : ${JSON.stringify(requireResidentKey)},
29
+ userVerificationRequirement : ${JSON.stringify(userVerificationRequirement)},
30
+ createTimeout : ${createTimeout},
31
+ excludeCredentialIds : ${JSON.stringify(excludeCredentialIds)},
32
+ initLabel : ${JSON.stringify(msgStr("webauthn-registration-init-label"))},
33
+ initLabelPrompt : ${JSON.stringify(msgStr("webauthn-registration-init-label-prompt"))},
34
+ errmsg : ${JSON.stringify(msgStr("webauthn-unsupported-browser-text"))}
35
+ };
36
+ registerByWebAuthn(input);
37
+ });
38
+ `
39
+ }
40
+ ]
41
+ });
42
+ useEffect(() => {
43
+ if (isFetchingTranslations) {
44
+ return;
45
+ }
46
+ insertScriptTags();
47
+ }, [isFetchingTranslations]);
48
+ }
49
+ //# sourceMappingURL=WebauthnRegister.useScript.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebauthnRegister.useScript.js","sourceRoot":"","sources":["../../src/login/pages/WebauthnRegister.useScript.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAqBlD,MAAM,EAA+E,CAAC;AACtF,MAAM,EAAmE,CAAC;AAO1E,MAAM,UAAU,SAAS,CAAC,MAA0E;IAChG,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;IAEjD,MAAM,EACF,GAAG,EACH,SAAS,EACT,MAAM,EACN,QAAQ,EACR,mBAAmB,EACnB,YAAY,EACZ,IAAI,EACJ,+BAA+B,EAC/B,uBAAuB,EACvB,kBAAkB,EAClB,2BAA2B,EAC3B,aAAa,EACb,oBAAoB,EACvB,GAAG,SAAS,CAAC;IAEd,MAAM,EAAE,MAAM,EAAE,sBAAsB,EAAE,GAAG,IAAI,CAAC;IAEhD,MAAM,EAAE,gBAAgB,EAAE,GAAG,mBAAmB,CAAC;QAC7C,mBAAmB,EAAE,8BAA8B;QACnD,UAAU,EAAE;YACR;gBACI,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,GAAG,EAAE,CAAC;0DACuB,GAAG,CAAC,aAAa;sEACL,YAAY;;;2CAGvC,SAAS;wCACZ,MAAM;0CACJ,QAAQ;oDACE,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC;6CAC1C,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;qCACpC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;gEACO,IAAI,CAAC,SAAS,CAAC,+BAA+B,CAAC;wDACvD,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC;mDAC5C,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC;4DACzB,IAAI,CAAC,SAAS,CAAC,2BAA2B,CAAC;8CACzD,aAAa;qDACN,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC;0CAC/C,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,kCAAkC,CAAC,CAAC;gDACpD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,yCAAyC,CAAC,CAAC;uCAC1E,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,mCAAmC,CAAC,CAAC;;;;iBAIjF;aACJ;SACJ;KACJ,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,sBAAsB,EAAE;YACxB,OAAO;SACV;QAED,gBAAgB,EAAE,CAAC;IACvB,CAAC,EAAE,CAAC,sBAAsB,CAAC,CAAC,CAAC;AACjC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "keycloakify",
3
- "version": "10.1.0-rc.0",
3
+ "version": "10.1.0",
4
4
  "description": "Create Keycloak themes using React",
5
5
  "repository": {
6
6
  "type": "git",
@@ -184,6 +184,9 @@
184
184
  "login/Template.d.ts",
185
185
  "login/Template.js",
186
186
  "login/Template.js.map",
187
+ "login/Template.useStylesAndScripts.d.ts",
188
+ "login/Template.useStylesAndScripts.js",
189
+ "login/Template.useStylesAndScripts.js.map",
187
190
  "login/TemplateProps.d.ts",
188
191
  "login/TemplateProps.js",
189
192
  "login/TemplateProps.js.map",
@@ -358,12 +361,18 @@
358
361
  "login/pages/LoginPasskeysConditionalAuthenticate.d.ts",
359
362
  "login/pages/LoginPasskeysConditionalAuthenticate.js",
360
363
  "login/pages/LoginPasskeysConditionalAuthenticate.js.map",
364
+ "login/pages/LoginPasskeysConditionalAuthenticate.useScript.d.ts",
365
+ "login/pages/LoginPasskeysConditionalAuthenticate.useScript.js",
366
+ "login/pages/LoginPasskeysConditionalAuthenticate.useScript.js.map",
361
367
  "login/pages/LoginPassword.d.ts",
362
368
  "login/pages/LoginPassword.js",
363
369
  "login/pages/LoginPassword.js.map",
364
370
  "login/pages/LoginRecoveryAuthnCodeConfig.d.ts",
365
371
  "login/pages/LoginRecoveryAuthnCodeConfig.js",
366
372
  "login/pages/LoginRecoveryAuthnCodeConfig.js.map",
373
+ "login/pages/LoginRecoveryAuthnCodeConfig.useScript.d.ts",
374
+ "login/pages/LoginRecoveryAuthnCodeConfig.useScript.js",
375
+ "login/pages/LoginRecoveryAuthnCodeConfig.useScript.js.map",
367
376
  "login/pages/LoginRecoveryAuthnCodeInput.d.ts",
368
377
  "login/pages/LoginRecoveryAuthnCodeInput.js",
369
378
  "login/pages/LoginRecoveryAuthnCodeInput.js.map",
@@ -412,12 +421,117 @@
412
421
  "login/pages/WebauthnAuthenticate.d.ts",
413
422
  "login/pages/WebauthnAuthenticate.js",
414
423
  "login/pages/WebauthnAuthenticate.js.map",
424
+ "login/pages/WebauthnAuthenticate.useScript.d.ts",
425
+ "login/pages/WebauthnAuthenticate.useScript.js",
426
+ "login/pages/WebauthnAuthenticate.useScript.js.map",
415
427
  "login/pages/WebauthnError.d.ts",
416
428
  "login/pages/WebauthnError.js",
417
429
  "login/pages/WebauthnError.js.map",
418
430
  "login/pages/WebauthnRegister.d.ts",
419
431
  "login/pages/WebauthnRegister.js",
420
432
  "login/pages/WebauthnRegister.js.map",
433
+ "login/pages/WebauthnRegister.useScript.d.ts",
434
+ "login/pages/WebauthnRegister.useScript.js",
435
+ "login/pages/WebauthnRegister.useScript.js.map",
436
+ "res/account-v1/account.ftl",
437
+ "res/account-v1/applications.ftl",
438
+ "res/account-v1/federatedIdentity.ftl",
439
+ "res/account-v1/log.ftl",
440
+ "res/account-v1/messages/messages_ar.properties",
441
+ "res/account-v1/messages/messages_ca.properties",
442
+ "res/account-v1/messages/messages_cs.properties",
443
+ "res/account-v1/messages/messages_da.properties",
444
+ "res/account-v1/messages/messages_de.properties",
445
+ "res/account-v1/messages/messages_en.properties",
446
+ "res/account-v1/messages/messages_es.properties",
447
+ "res/account-v1/messages/messages_fi.properties",
448
+ "res/account-v1/messages/messages_fr.properties",
449
+ "res/account-v1/messages/messages_hu.properties",
450
+ "res/account-v1/messages/messages_it.properties",
451
+ "res/account-v1/messages/messages_ja.properties",
452
+ "res/account-v1/messages/messages_lt.properties",
453
+ "res/account-v1/messages/messages_lv.properties",
454
+ "res/account-v1/messages/messages_nl.properties",
455
+ "res/account-v1/messages/messages_no.properties",
456
+ "res/account-v1/messages/messages_pl.properties",
457
+ "res/account-v1/messages/messages_pt_BR.properties",
458
+ "res/account-v1/messages/messages_ru.properties",
459
+ "res/account-v1/messages/messages_sk.properties",
460
+ "res/account-v1/messages/messages_sv.properties",
461
+ "res/account-v1/messages/messages_tr.properties",
462
+ "res/account-v1/messages/messages_zh_CN.properties",
463
+ "res/account-v1/password.ftl",
464
+ "res/account-v1/resource-detail.ftl",
465
+ "res/account-v1/resources/css/account.css",
466
+ "res/account-v1/resources/img/icon-sidebar-active.png",
467
+ "res/account-v1/resources/img/keycloak-logo.png",
468
+ "res/account-v1/resources/img/logo.png",
469
+ "res/account-v1/resources/resources-common/img/favicon.ico",
470
+ "res/account-v1/resources/resources-common/node_modules/patternfly/dist/css/patternfly-additions.min.css",
471
+ "res/account-v1/resources/resources-common/node_modules/patternfly/dist/css/patternfly.min.css",
472
+ "res/account-v1/resources/resources-common/node_modules/patternfly/dist/fonts/OpenSans-Bold-webfont.woff2",
473
+ "res/account-v1/resources/resources-common/node_modules/patternfly/dist/fonts/OpenSans-Light-webfont.woff2",
474
+ "res/account-v1/resources/resources-common/node_modules/patternfly/dist/fonts/OpenSans-Regular-webfont.woff2",
475
+ "res/account-v1/resources/resources-common/node_modules/patternfly/dist/fonts/OpenSans-Semibold-webfont.woff2",
476
+ "res/account-v1/resources/resources-common/node_modules/patternfly/dist/fonts/PatternFlyIcons-webfont.ttf",
477
+ "res/account-v1/resources/resources-common/node_modules/patternfly/dist/fonts/PatternFlyIcons-webfont.woff",
478
+ "res/account-v1/resources.ftl",
479
+ "res/account-v1/sessions.ftl",
480
+ "res/account-v1/template.ftl",
481
+ "res/account-v1/theme.properties",
482
+ "res/account-v1/totp.ftl",
483
+ "res/public/.keycloakify/account/css/account.css",
484
+ "res/public/.keycloakify/account/img/icon-sidebar-active.png",
485
+ "res/public/.keycloakify/account/img/keycloak-logo.png",
486
+ "res/public/.keycloakify/account/img/logo.png",
487
+ "res/public/.keycloakify/account/resources-common/img/favicon.ico",
488
+ "res/public/.keycloakify/account/resources-common/node_modules/patternfly/dist/css/patternfly-additions.min.css",
489
+ "res/public/.keycloakify/account/resources-common/node_modules/patternfly/dist/css/patternfly.min.css",
490
+ "res/public/.keycloakify/account/resources-common/node_modules/patternfly/dist/fonts/OpenSans-Bold-webfont.woff2",
491
+ "res/public/.keycloakify/account/resources-common/node_modules/patternfly/dist/fonts/OpenSans-Light-webfont.woff2",
492
+ "res/public/.keycloakify/account/resources-common/node_modules/patternfly/dist/fonts/OpenSans-Regular-webfont.woff2",
493
+ "res/public/.keycloakify/account/resources-common/node_modules/patternfly/dist/fonts/OpenSans-Semibold-webfont.woff2",
494
+ "res/public/.keycloakify/account/resources-common/node_modules/patternfly/dist/fonts/PatternFlyIcons-webfont.ttf",
495
+ "res/public/.keycloakify/account/resources-common/node_modules/patternfly/dist/fonts/PatternFlyIcons-webfont.woff",
496
+ "res/public/.keycloakify/login/css/login.css",
497
+ "res/public/.keycloakify/login/img/feedback-error-arrow-down.png",
498
+ "res/public/.keycloakify/login/img/feedback-error-sign.png",
499
+ "res/public/.keycloakify/login/img/feedback-success-arrow-down.png",
500
+ "res/public/.keycloakify/login/img/feedback-success-sign.png",
501
+ "res/public/.keycloakify/login/img/feedback-warning-arrow-down.png",
502
+ "res/public/.keycloakify/login/img/feedback-warning-sign.png",
503
+ "res/public/.keycloakify/login/img/keycloak-bg.png",
504
+ "res/public/.keycloakify/login/img/keycloak-logo-text.png",
505
+ "res/public/.keycloakify/login/img/keycloak-logo.png",
506
+ "res/public/.keycloakify/login/js/authChecker.js",
507
+ "res/public/.keycloakify/login/js/common.js",
508
+ "res/public/.keycloakify/login/js/kcMultivalued.js",
509
+ "res/public/.keycloakify/login/js/kcNumberFormat.js",
510
+ "res/public/.keycloakify/login/js/kcNumberUnFormat.js",
511
+ "res/public/.keycloakify/login/js/menu-button-links.js",
512
+ "res/public/.keycloakify/login/js/passkeysConditionalAuth.js",
513
+ "res/public/.keycloakify/login/js/passwordVisibility.js",
514
+ "res/public/.keycloakify/login/js/userProfile.js",
515
+ "res/public/.keycloakify/login/js/webauthnAuthenticate.js",
516
+ "res/public/.keycloakify/login/js/webauthnRegister.js",
517
+ "res/public/.keycloakify/login/resources-common/img/favicon.ico",
518
+ "res/public/.keycloakify/login/resources-common/lib/pficon/pficon.css",
519
+ "res/public/.keycloakify/login/resources-common/lib/pficon/pficon.woff2",
520
+ "res/public/.keycloakify/login/resources-common/node_modules/@patternfly/patternfly/patternfly.min.css",
521
+ "res/public/.keycloakify/login/resources-common/node_modules/jquery/dist/jquery.min.js",
522
+ "res/public/.keycloakify/login/resources-common/node_modules/patternfly/dist/css/patternfly-additions.min.css",
523
+ "res/public/.keycloakify/login/resources-common/node_modules/patternfly/dist/css/patternfly.min.css",
524
+ "res/public/.keycloakify/login/resources-common/node_modules/patternfly/dist/fonts/OpenSans-Bold-webfont.ttf",
525
+ "res/public/.keycloakify/login/resources-common/node_modules/patternfly/dist/fonts/OpenSans-Bold-webfont.woff",
526
+ "res/public/.keycloakify/login/resources-common/node_modules/patternfly/dist/fonts/OpenSans-Bold-webfont.woff2",
527
+ "res/public/.keycloakify/login/resources-common/node_modules/patternfly/dist/fonts/OpenSans-Light-webfont.woff2",
528
+ "res/public/.keycloakify/login/resources-common/node_modules/patternfly/dist/fonts/OpenSans-Regular-webfont.woff2",
529
+ "res/public/.keycloakify/login/resources-common/node_modules/patternfly/dist/fonts/OpenSans-Semibold-webfont.woff2",
530
+ "res/public/.keycloakify/login/resources-common/node_modules/patternfly/dist/fonts/PatternFlyIcons-webfont.ttf",
531
+ "res/public/.keycloakify/login/resources-common/node_modules/patternfly/dist/fonts/PatternFlyIcons-webfont.woff",
532
+ "res/public/.keycloakify/login/resources-common/node_modules/patternfly/dist/fonts/fontawesome-webfont.woff2",
533
+ "res/public/.keycloakify/login/resources-common/node_modules/patternfly/dist/img/bg-login.jpg",
534
+ "res/public/.keycloakify/login/resources-common/node_modules/rfc4648/lib/rfc4648.js",
421
535
  "src/PUBLIC_URL.ts",
422
536
  "src/account/DefaultPage.tsx",
423
537
  "src/account/KcContext/KcContext.ts",
@@ -489,7 +603,6 @@
489
603
  "src/bin/keycloakify/generateFtl/generateFtl.ts",
490
604
  "src/bin/keycloakify/generateFtl/index.ts",
491
605
  "src/bin/keycloakify/generateFtl/kcContextDeclarationTemplate.ftl",
492
- "src/bin/keycloakify/generateResources/bringInAccountV1.ts",
493
606
  "src/bin/keycloakify/generateResources/generateMessageProperties.ts",
494
607
  "src/bin/keycloakify/generateResources/generateResources.ts",
495
608
  "src/bin/keycloakify/generateResources/generateResourcesForMainTheme.ts",
@@ -509,11 +622,6 @@
509
622
  "src/bin/shared/buildContext.ts",
510
623
  "src/bin/shared/constants.ts",
511
624
  "src/bin/shared/copyKeycloakResourcesToPublic.ts",
512
- "src/bin/shared/downloadKeycloakDefaultTheme/downloadKeycloakDefaultTheme.ts",
513
- "src/bin/shared/downloadKeycloakDefaultTheme/extra-assets/passkeysConditionalAuth.js",
514
- "src/bin/shared/downloadKeycloakDefaultTheme/extra-assets/webauthnAuthenticate.js",
515
- "src/bin/shared/downloadKeycloakDefaultTheme/index.ts",
516
- "src/bin/shared/downloadKeycloakStaticResources.ts",
517
625
  "src/bin/shared/generateKcGenTs.ts",
518
626
  "src/bin/shared/getLatestsSemVersionedTag.ts",
519
627
  "src/bin/shared/metaInfKeycloakThemes.ts",
@@ -565,6 +673,7 @@
565
673
  "src/login/KcContext/index.ts",
566
674
  "src/login/KcContext/kcContextMocks.ts",
567
675
  "src/login/Template.tsx",
676
+ "src/login/Template.useStylesAndScripts.ts",
568
677
  "src/login/TemplateProps.ts",
569
678
  "src/login/UserProfileFormFields.tsx",
570
679
  "src/login/UserProfileFormFieldsProps.tsx",
@@ -623,8 +732,10 @@
623
732
  "src/login/pages/LoginOtp.tsx",
624
733
  "src/login/pages/LoginPageExpired.tsx",
625
734
  "src/login/pages/LoginPasskeysConditionalAuthenticate.tsx",
735
+ "src/login/pages/LoginPasskeysConditionalAuthenticate.useScript.tsx",
626
736
  "src/login/pages/LoginPassword.tsx",
627
737
  "src/login/pages/LoginRecoveryAuthnCodeConfig.tsx",
738
+ "src/login/pages/LoginRecoveryAuthnCodeConfig.useScript.tsx",
628
739
  "src/login/pages/LoginRecoveryAuthnCodeInput.tsx",
629
740
  "src/login/pages/LoginResetOtp.tsx",
630
741
  "src/login/pages/LoginResetPassword.tsx",
@@ -641,8 +752,10 @@
641
752
  "src/login/pages/Terms.tsx",
642
753
  "src/login/pages/UpdateEmail.tsx",
643
754
  "src/login/pages/WebauthnAuthenticate.tsx",
755
+ "src/login/pages/WebauthnAuthenticate.useScript.tsx",
644
756
  "src/login/pages/WebauthnError.tsx",
645
757
  "src/login/pages/WebauthnRegister.tsx",
758
+ "src/login/pages/WebauthnRegister.useScript.tsx",
646
759
  "src/tools/Array.prototype.every.ts",
647
760
  "src/tools/DeepPartial.ts",
648
761
  "src/tools/HTMLElement.prototype.prepend.ts",
@@ -796,24 +909,23 @@
796
909
  "tools/useSetClassName.js.map",
797
910
  "bin/main.js",
798
911
  "bin/193.index.js",
912
+ "bin/20.index.js",
799
913
  "bin/246.index.js",
800
914
  "bin/266.index.js",
801
915
  "bin/304.index.js",
802
916
  "bin/31.index.js",
803
- "bin/365.index.js",
804
- "bin/430.index.js",
805
- "bin/440.index.js",
917
+ "bin/33.index.js",
918
+ "bin/36.index.js",
806
919
  "bin/453.index.js",
807
- "bin/525.index.js",
920
+ "bin/499.index.js",
808
921
  "bin/526.index.js",
809
922
  "bin/599.index.js",
810
- "bin/678.index.js",
811
- "bin/697.index.js",
812
923
  "bin/720.index.js",
813
924
  "bin/743.index.js",
814
925
  "bin/780.index.js",
815
926
  "bin/786.index.js",
816
927
  "bin/877.index.js",
928
+ "bin/903.index.js",
817
929
  "bin/932.index.js",
818
930
  "bin/941.index.js",
819
931
  "bin/97.index.js",
@@ -821,7 +933,6 @@
821
933
  "bin/shared/buildContext.d.ts",
822
934
  "bin/shared/constants.d.ts",
823
935
  "bin/shared/copyKeycloakResourcesToPublic.d.ts",
824
- "bin/shared/downloadKeycloakStaticResources.d.ts",
825
936
  "bin/shared/generateKcGenTs.d.ts",
826
937
  "bin/shared/getLatestsSemVersionedTag.d.ts",
827
938
  "bin/shared/KeycloakVersionRange.d.ts",
@@ -830,7 +941,6 @@
830
941
  "bin/shared/buildContext.js.map",
831
942
  "bin/shared/constants.js.map",
832
943
  "bin/shared/copyKeycloakResourcesToPublic.js.map",
833
- "bin/shared/downloadKeycloakStaticResources.js.map",
834
944
  "bin/shared/generateKcGenTs.js.map",
835
945
  "bin/shared/getLatestsSemVersionedTag.js.map",
836
946
  "bin/shared/KeycloakVersionRange.js.map",
@@ -0,0 +1,70 @@
1
+ <#import "template.ftl" as layout>
2
+ <@layout.mainLayout active='account' bodyClass='user'; section>
3
+
4
+ <div class="row">
5
+ <div class="col-md-10">
6
+ <h2>${msg("editAccountHtmlTitle")}</h2>
7
+ </div>
8
+ <div class="col-md-2 subtitle">
9
+ <span class="subtitle"><span class="required">*</span> ${msg("requiredFields")}</span>
10
+ </div>
11
+ </div>
12
+
13
+ <form action="${url.accountUrl}" class="form-horizontal" method="post">
14
+
15
+ <input type="hidden" id="stateChecker" name="stateChecker" value="${stateChecker}">
16
+
17
+ <#if !realm.registrationEmailAsUsername>
18
+ <div class="form-group ${messagesPerField.printIfExists('username','has-error')}">
19
+ <div class="col-sm-2 col-md-2">
20
+ <label for="username" class="control-label">${msg("username")}</label> <#if realm.editUsernameAllowed><span class="required">*</span></#if>
21
+ </div>
22
+
23
+ <div class="col-sm-10 col-md-10">
24
+ <input type="text" class="form-control" id="username" name="username" <#if !realm.editUsernameAllowed>disabled="disabled"</#if> value="${(account.username!'')}"/>
25
+ </div>
26
+ </div>
27
+ </#if>
28
+
29
+ <div class="form-group ${messagesPerField.printIfExists('email','has-error')}">
30
+ <div class="col-sm-2 col-md-2">
31
+ <label for="email" class="control-label">${msg("email")}</label> <span class="required">*</span>
32
+ </div>
33
+
34
+ <div class="col-sm-10 col-md-10">
35
+ <input type="text" class="form-control" id="email" name="email" autofocus value="${(account.email!'')}"/>
36
+ </div>
37
+ </div>
38
+
39
+ <div class="form-group ${messagesPerField.printIfExists('firstName','has-error')}">
40
+ <div class="col-sm-2 col-md-2">
41
+ <label for="firstName" class="control-label">${msg("firstName")}</label> <span class="required">*</span>
42
+ </div>
43
+
44
+ <div class="col-sm-10 col-md-10">
45
+ <input type="text" class="form-control" id="firstName" name="firstName" value="${(account.firstName!'')}"/>
46
+ </div>
47
+ </div>
48
+
49
+ <div class="form-group ${messagesPerField.printIfExists('lastName','has-error')}">
50
+ <div class="col-sm-2 col-md-2">
51
+ <label for="lastName" class="control-label">${msg("lastName")}</label> <span class="required">*</span>
52
+ </div>
53
+
54
+ <div class="col-sm-10 col-md-10">
55
+ <input type="text" class="form-control" id="lastName" name="lastName" value="${(account.lastName!'')}"/>
56
+ </div>
57
+ </div>
58
+
59
+ <div class="form-group">
60
+ <div id="kc-form-buttons" class="col-md-offset-2 col-md-10 submit">
61
+ <div class="">
62
+ <#if url.referrerURI??><a href="${url.referrerURI}">${kcSanitize(msg("backToApplication")?no_esc)}</a></#if>
63
+ <button type="submit" class="${properties.kcButtonClass!} ${properties.kcButtonPrimaryClass!} ${properties.kcButtonLargeClass!}" name="submitAction" value="Save">${msg("doSave")}</button>
64
+ <button type="submit" class="${properties.kcButtonClass!} ${properties.kcButtonDefaultClass!} ${properties.kcButtonLargeClass!}" name="submitAction" value="Cancel">${msg("doCancel")}</button>
65
+ </div>
66
+ </div>
67
+ </div>
68
+ </form>
69
+
70
+ </@layout.mainLayout>
@@ -0,0 +1,76 @@
1
+ <#import "template.ftl" as layout>
2
+ <@layout.mainLayout active='applications' bodyClass='applications'; section>
3
+
4
+ <div class="row">
5
+ <div class="col-md-10">
6
+ <h2>${msg("applicationsHtmlTitle")}</h2>
7
+ </div>
8
+ </div>
9
+
10
+ <form action="${url.applicationsUrl}" method="post">
11
+ <input type="hidden" id="stateChecker" name="stateChecker" value="${stateChecker}">
12
+ <input type="hidden" id="referrer" name="referrer" value="${stateChecker}">
13
+
14
+ <table class="table table-striped table-bordered">
15
+ <thead>
16
+ <tr>
17
+ <td>${msg("application")}</td>
18
+ <td>${msg("availableRoles")}</td>
19
+ <td>${msg("grantedPermissions")}</td>
20
+ <td>${msg("additionalGrants")}</td>
21
+ <td>${msg("action")}</td>
22
+ </tr>
23
+ </thead>
24
+
25
+ <tbody>
26
+ <#list applications.applications as application>
27
+ <tr>
28
+ <td>
29
+ <#if application.effectiveUrl?has_content><a href="${application.effectiveUrl}"></#if>
30
+ <#if application.client.name?has_content>${advancedMsg(application.client.name)}<#else>${application.client.clientId}</#if>
31
+ <#if application.effectiveUrl?has_content></a></#if>
32
+ </td>
33
+
34
+ <td>
35
+ <#list application.realmRolesAvailable as role>
36
+ <#if role.description??>${advancedMsg(role.description)}<#else>${advancedMsg(role.name)}</#if>
37
+ <#if role_has_next>, </#if>
38
+ </#list>
39
+ <#list application.resourceRolesAvailable?keys as resource>
40
+ <#if application.realmRolesAvailable?has_content>, </#if>
41
+ <#list application.resourceRolesAvailable[resource] as clientRole>
42
+ <#if clientRole.roleDescription??>${advancedMsg(clientRole.roleDescription)}<#else>${advancedMsg(clientRole.roleName)}</#if>
43
+ ${msg("inResource")} <strong><#if clientRole.clientName??>${advancedMsg(clientRole.clientName)}<#else>${clientRole.clientId}</#if></strong>
44
+ <#if clientRole_has_next>, </#if>
45
+ </#list>
46
+ </#list>
47
+ </td>
48
+
49
+ <td>
50
+ <#if application.client.consentRequired>
51
+ <#list application.clientScopesGranted as claim>
52
+ ${advancedMsg(claim)}<#if claim_has_next>, </#if>
53
+ </#list>
54
+ <#else>
55
+ <strong>${msg("fullAccess")}</strong>
56
+ </#if>
57
+ </td>
58
+
59
+ <td>
60
+ <#list application.additionalGrants as grant>
61
+ ${advancedMsg(grant)}<#if grant_has_next>, </#if>
62
+ </#list>
63
+ </td>
64
+
65
+ <td>
66
+ <#if (application.client.consentRequired && application.clientScopesGranted?has_content) || application.additionalGrants?has_content>
67
+ <button type='submit' class='${properties.kcButtonClass!} ${properties.kcButtonPrimaryClass!}' id='revoke-${application.client.clientId}' name='clientId' value="${application.client.id}">${msg("revoke")}</button>
68
+ </#if>
69
+ </td>
70
+ </tr>
71
+ </#list>
72
+ </tbody>
73
+ </table>
74
+ </form>
75
+
76
+ </@layout.mainLayout>
@@ -0,0 +1,42 @@
1
+ <#import "template.ftl" as layout>
2
+ <@layout.mainLayout active='social' bodyClass='social'; section>
3
+
4
+ <div class="row">
5
+ <div class="col-md-10">
6
+ <h2>${msg("federatedIdentitiesHtmlTitle")}</h2>
7
+ </div>
8
+ </div>
9
+
10
+ <div id="federated-identities">
11
+ <#list federatedIdentity.identities as identity>
12
+ <div class="row margin-bottom">
13
+ <div class="col-sm-2 col-md-2">
14
+ <label for="${identity.providerId!}" class="control-label">${identity.displayName!}</label>
15
+ </div>
16
+ <div class="col-sm-5 col-md-5">
17
+ <input disabled="true" class="form-control" value="${identity.userName!}">
18
+ </div>
19
+ <div class="col-sm-5 col-md-5">
20
+ <#if identity.connected>
21
+ <#if federatedIdentity.removeLinkPossible>
22
+ <form action="${url.socialUrl}" method="post" class="form-inline">
23
+ <input type="hidden" id="stateChecker" name="stateChecker" value="${stateChecker}">
24
+ <input type="hidden" id="action" name="action" value="remove">
25
+ <input type="hidden" id="providerId" name="providerId" value="${identity.providerId!}">
26
+ <button id="remove-link-${identity.providerId!}" class="btn btn-default">${msg("doRemove")}</button>
27
+ </form>
28
+ </#if>
29
+ <#else>
30
+ <form action="${url.socialUrl}" method="post" class="form-inline">
31
+ <input type="hidden" id="stateChecker" name="stateChecker" value="${stateChecker}">
32
+ <input type="hidden" id="action" name="action" value="add">
33
+ <input type="hidden" id="providerId" name="providerId" value="${identity.providerId!}">
34
+ <button id="add-link-${identity.providerId!}" class="btn btn-default">${msg("doAdd")}</button>
35
+ </form>
36
+ </#if>
37
+ </div>
38
+ </div>
39
+ </#list>
40
+ </div>
41
+
42
+ </@layout.mainLayout>
@@ -0,0 +1,35 @@
1
+ <#import "template.ftl" as layout>
2
+ <@layout.mainLayout active='log' bodyClass='log'; section>
3
+
4
+ <div class="row">
5
+ <div class="col-md-10">
6
+ <h2>${msg("accountLogHtmlTitle")}</h2>
7
+ </div>
8
+ </div>
9
+
10
+ <table class="table table-striped table-bordered">
11
+ <thead>
12
+ <tr>
13
+ <td>${msg("date")}</td>
14
+ <td>${msg("event")}</td>
15
+ <td>${msg("ip")}</td>
16
+ <td>${msg("client")}</td>
17
+ <td>${msg("details")}</td>
18
+ </tr>
19
+ </thead>
20
+
21
+ <tbody>
22
+ <#list log.events as event>
23
+ <tr>
24
+ <td>${event.date?datetime}</td>
25
+ <td>${event.event}</td>
26
+ <td>${event.ipAddress}</td>
27
+ <td>${event.client!}</td>
28
+ <td><#list event.details as detail>${detail.key} = ${detail.value} <#if detail_has_next>, </#if></#list></td>
29
+ </tr>
30
+ </#list>
31
+ </tbody>
32
+
33
+ </table>
34
+
35
+ </@layout.mainLayout>