keycloakify 9.6.7 → 10.0.0-rc.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 (417) hide show
  1. package/account/Template.js +34 -14
  2. package/account/Template.js.map +1 -1
  3. package/account/i18n/baseMessages/de.d.ts +1 -1
  4. package/account/i18n/baseMessages/de.js +1 -1
  5. package/account/i18n/baseMessages/de.js.map +1 -1
  6. package/account/i18n/baseMessages/en.d.ts +2 -0
  7. package/account/i18n/baseMessages/en.js +2 -0
  8. package/account/i18n/baseMessages/en.js.map +1 -1
  9. package/account/i18n/baseMessages/es.d.ts +230 -0
  10. package/account/i18n/baseMessages/es.js +231 -1
  11. package/account/i18n/baseMessages/es.js.map +1 -1
  12. package/account/i18n/baseMessages/index.d.ts +353 -407
  13. package/account/i18n/baseMessages/index.js +1 -0
  14. package/account/i18n/baseMessages/index.js.map +1 -1
  15. package/account/i18n/baseMessages/pl.d.ts +115 -1
  16. package/account/i18n/baseMessages/pl.js +115 -1
  17. package/account/i18n/baseMessages/pl.js.map +1 -1
  18. package/account/i18n/baseMessages/tr.d.ts +1 -1
  19. package/account/i18n/baseMessages/tr.js +1 -1
  20. package/account/i18n/baseMessages/tr.js.map +1 -1
  21. package/account/i18n/baseMessages/uk.d.ts +337 -0
  22. package/account/i18n/baseMessages/uk.js +342 -0
  23. package/account/i18n/baseMessages/uk.js.map +1 -0
  24. package/account/i18n/baseMessages/zh-CN.d.ts +10 -0
  25. package/account/i18n/baseMessages/zh-CN.js +10 -0
  26. package/account/i18n/baseMessages/zh-CN.js.map +1 -1
  27. package/bin/constants.d.ts +0 -1
  28. package/bin/constants.js +1 -2
  29. package/bin/constants.js.map +1 -1
  30. package/bin/keycloakify/buildJars/buildJar.d.ts +14 -0
  31. package/bin/keycloakify/buildJars/buildJar.js +216 -0
  32. package/bin/keycloakify/buildJars/buildJar.js.map +1 -0
  33. package/bin/keycloakify/buildJars/buildJars.d.ts +10 -0
  34. package/bin/keycloakify/buildJars/buildJars.js +95 -0
  35. package/bin/keycloakify/buildJars/buildJars.js.map +1 -0
  36. package/bin/keycloakify/buildJars/extensionVersions.d.ts +12 -0
  37. package/bin/keycloakify/buildJars/extensionVersions.js +7 -0
  38. package/bin/keycloakify/buildJars/extensionVersions.js.map +1 -0
  39. package/bin/keycloakify/buildJars/generatePom.d.ts +13 -0
  40. package/bin/keycloakify/buildJars/generatePom.js +94 -0
  41. package/bin/keycloakify/buildJars/generatePom.js.map +1 -0
  42. package/bin/keycloakify/buildJars/getKeycloakVersionRangeForJar.d.ts +6 -0
  43. package/bin/keycloakify/buildJars/getKeycloakVersionRangeForJar.js +35 -0
  44. package/bin/keycloakify/buildJars/getKeycloakVersionRangeForJar.js.map +1 -0
  45. package/bin/keycloakify/buildJars/index.d.ts +1 -0
  46. package/bin/keycloakify/buildJars/index.js +18 -0
  47. package/bin/keycloakify/buildJars/index.js.map +1 -0
  48. package/bin/keycloakify/buildOptions/UserProvidedBuildOptions.d.ts +0 -8
  49. package/bin/keycloakify/buildOptions/UserProvidedBuildOptions.js +1 -3
  50. package/bin/keycloakify/buildOptions/UserProvidedBuildOptions.js.map +1 -1
  51. package/bin/keycloakify/buildOptions/buildOptions.d.ts +0 -2
  52. package/bin/keycloakify/buildOptions/buildOptions.js +3 -5
  53. package/bin/keycloakify/buildOptions/buildOptions.js.map +1 -1
  54. package/bin/keycloakify/generateFtl/ftl_object_to_js_code_declaring_an_object.ftl +103 -232
  55. package/bin/keycloakify/generateFtl/generateFtl.js +17 -39
  56. package/bin/keycloakify/generateFtl/generateFtl.js.map +1 -1
  57. package/bin/keycloakify/generateFtl/pageId.d.ts +1 -1
  58. package/bin/keycloakify/generateFtl/pageId.js +11 -3
  59. package/bin/keycloakify/generateFtl/pageId.js.map +1 -1
  60. package/bin/keycloakify/generateStartKeycloakTestingContainer.d.ts +0 -1
  61. package/bin/keycloakify/generateStartKeycloakTestingContainer.js +3 -6
  62. package/bin/keycloakify/generateStartKeycloakTestingContainer.js.map +1 -1
  63. package/bin/keycloakify/generateTheme/bringInAccountV1.d.ts +1 -1
  64. package/bin/keycloakify/generateTheme/bringInAccountV1.js +5 -9
  65. package/bin/keycloakify/generateTheme/bringInAccountV1.js.map +1 -1
  66. package/bin/keycloakify/generateTheme/generateSrcMainResources.d.ts +21 -0
  67. package/bin/keycloakify/generateTheme/generateSrcMainResources.js +340 -0
  68. package/bin/keycloakify/generateTheme/generateSrcMainResources.js.map +1 -0
  69. package/bin/keycloakify/generateTheme/generateTheme.d.ts +5 -13
  70. package/bin/keycloakify/generateTheme/generateTheme.js +30 -293
  71. package/bin/keycloakify/generateTheme/generateTheme.js.map +1 -1
  72. package/bin/keycloakify/generateTheme/generateThemeVariants.d.ts +5 -0
  73. package/bin/keycloakify/generateTheme/generateThemeVariants.js +67 -0
  74. package/bin/keycloakify/generateTheme/generateThemeVariants.js.map +1 -0
  75. package/bin/keycloakify/generateTheme/readFieldNameUsage.js +54 -18
  76. package/bin/keycloakify/generateTheme/readFieldNameUsage.js.map +1 -1
  77. package/bin/keycloakify/keycloakify.js +28 -104
  78. package/bin/keycloakify/keycloakify.js.map +1 -1
  79. package/lib/useGetClassName.js +2 -2
  80. package/lib/useGetClassName.js.map +1 -1
  81. package/login/Fallback.d.ts +7 -1
  82. package/login/Fallback.js +32 -8
  83. package/login/Fallback.js.map +1 -1
  84. package/login/Template.js +76 -20
  85. package/login/Template.js.map +1 -1
  86. package/login/TemplateProps.d.ts +4 -2
  87. package/login/UserProfileFormFields.d.ts +22 -0
  88. package/login/UserProfileFormFields.js +327 -0
  89. package/login/UserProfileFormFields.js.map +1 -0
  90. package/login/i18n/baseMessages/ar.d.ts +3 -0
  91. package/login/i18n/baseMessages/ar.js +3 -0
  92. package/login/i18n/baseMessages/ar.js.map +1 -1
  93. package/login/i18n/baseMessages/ca.d.ts +1 -0
  94. package/login/i18n/baseMessages/ca.js +1 -0
  95. package/login/i18n/baseMessages/ca.js.map +1 -1
  96. package/login/i18n/baseMessages/cs.d.ts +3 -0
  97. package/login/i18n/baseMessages/cs.js +3 -0
  98. package/login/i18n/baseMessages/cs.js.map +1 -1
  99. package/login/i18n/baseMessages/da.d.ts +1 -0
  100. package/login/i18n/baseMessages/da.js +1 -0
  101. package/login/i18n/baseMessages/da.js.map +1 -1
  102. package/login/i18n/baseMessages/de.d.ts +1 -0
  103. package/login/i18n/baseMessages/de.js +1 -0
  104. package/login/i18n/baseMessages/de.js.map +1 -1
  105. package/login/i18n/baseMessages/el.d.ts +1 -0
  106. package/login/i18n/baseMessages/el.js +1 -0
  107. package/login/i18n/baseMessages/el.js.map +1 -1
  108. package/login/i18n/baseMessages/en.d.ts +7 -0
  109. package/login/i18n/baseMessages/en.js +23 -16
  110. package/login/i18n/baseMessages/en.js.map +1 -1
  111. package/login/i18n/baseMessages/es.d.ts +239 -0
  112. package/login/i18n/baseMessages/es.js +240 -1
  113. package/login/i18n/baseMessages/es.js.map +1 -1
  114. package/login/i18n/baseMessages/fa.d.ts +1 -0
  115. package/login/i18n/baseMessages/fa.js +1 -0
  116. package/login/i18n/baseMessages/fa.js.map +1 -1
  117. package/login/i18n/baseMessages/fi.d.ts +1 -0
  118. package/login/i18n/baseMessages/fi.js +1 -0
  119. package/login/i18n/baseMessages/fi.js.map +1 -1
  120. package/login/i18n/baseMessages/fr.d.ts +1 -0
  121. package/login/i18n/baseMessages/fr.js +2 -1
  122. package/login/i18n/baseMessages/fr.js.map +1 -1
  123. package/login/i18n/baseMessages/hu.d.ts +1 -0
  124. package/login/i18n/baseMessages/hu.js +1 -0
  125. package/login/i18n/baseMessages/hu.js.map +1 -1
  126. package/login/i18n/baseMessages/index.d.ts +211 -416
  127. package/login/i18n/baseMessages/index.js +1 -0
  128. package/login/i18n/baseMessages/index.js.map +1 -1
  129. package/login/i18n/baseMessages/it.d.ts +1 -0
  130. package/login/i18n/baseMessages/it.js +1 -0
  131. package/login/i18n/baseMessages/it.js.map +1 -1
  132. package/login/i18n/baseMessages/ja.d.ts +1 -0
  133. package/login/i18n/baseMessages/ja.js +1 -0
  134. package/login/i18n/baseMessages/ja.js.map +1 -1
  135. package/login/i18n/baseMessages/lt.d.ts +1 -0
  136. package/login/i18n/baseMessages/lt.js +1 -0
  137. package/login/i18n/baseMessages/lt.js.map +1 -1
  138. package/login/i18n/baseMessages/lv.d.ts +1 -0
  139. package/login/i18n/baseMessages/lv.js +1 -0
  140. package/login/i18n/baseMessages/lv.js.map +1 -1
  141. package/login/i18n/baseMessages/nl.d.ts +1 -0
  142. package/login/i18n/baseMessages/nl.js +1 -0
  143. package/login/i18n/baseMessages/nl.js.map +1 -1
  144. package/login/i18n/baseMessages/no.d.ts +1 -0
  145. package/login/i18n/baseMessages/no.js +1 -0
  146. package/login/i18n/baseMessages/no.js.map +1 -1
  147. package/login/i18n/baseMessages/pl.d.ts +1 -0
  148. package/login/i18n/baseMessages/pl.js +1 -0
  149. package/login/i18n/baseMessages/pl.js.map +1 -1
  150. package/login/i18n/baseMessages/pt-BR.d.ts +1 -0
  151. package/login/i18n/baseMessages/pt-BR.js +1 -0
  152. package/login/i18n/baseMessages/pt-BR.js.map +1 -1
  153. package/login/i18n/baseMessages/ru.d.ts +1 -0
  154. package/login/i18n/baseMessages/ru.js +1 -0
  155. package/login/i18n/baseMessages/ru.js.map +1 -1
  156. package/login/i18n/baseMessages/sk.d.ts +2 -0
  157. package/login/i18n/baseMessages/sk.js +3 -1
  158. package/login/i18n/baseMessages/sk.js.map +1 -1
  159. package/login/i18n/baseMessages/sv.d.ts +1 -0
  160. package/login/i18n/baseMessages/sv.js +1 -0
  161. package/login/i18n/baseMessages/sv.js.map +1 -1
  162. package/login/i18n/baseMessages/th.d.ts +1 -0
  163. package/login/i18n/baseMessages/th.js +1 -0
  164. package/login/i18n/baseMessages/th.js.map +1 -1
  165. package/login/i18n/baseMessages/tr.d.ts +1 -0
  166. package/login/i18n/baseMessages/tr.js +1 -0
  167. package/login/i18n/baseMessages/tr.js.map +1 -1
  168. package/login/i18n/baseMessages/uk.d.ts +433 -0
  169. package/login/i18n/baseMessages/uk.js +438 -0
  170. package/login/i18n/baseMessages/uk.js.map +1 -0
  171. package/login/i18n/baseMessages/zh-CN.d.ts +273 -3
  172. package/login/i18n/baseMessages/zh-CN.js +325 -55
  173. package/login/i18n/baseMessages/zh-CN.js.map +1 -1
  174. package/login/i18n/i18n.d.ts +4 -0
  175. package/login/i18n/i18n.js +6 -2
  176. package/login/i18n/i18n.js.map +1 -1
  177. package/login/kcContext/KcContext.d.ts +181 -105
  178. package/login/kcContext/KcContext.js +1 -1
  179. package/login/kcContext/KcContext.js.map +1 -1
  180. package/login/kcContext/createGetKcContext.js +3 -9
  181. package/login/kcContext/createGetKcContext.js.map +1 -1
  182. package/login/kcContext/kcContextMocks.d.ts +1 -1
  183. package/login/kcContext/kcContextMocks.js +92 -198
  184. package/login/kcContext/kcContextMocks.js.map +1 -1
  185. package/login/lib/useDownloadTerms.d.ts +4 -1
  186. package/login/lib/useDownloadTerms.js +9 -4
  187. package/login/lib/useDownloadTerms.js.map +1 -1
  188. package/login/lib/useGetClassName.js +112 -73
  189. package/login/lib/useGetClassName.js.map +1 -1
  190. package/login/lib/useUserProfileForm.d.ts +74 -0
  191. package/login/lib/useUserProfileForm.js +868 -0
  192. package/login/lib/useUserProfileForm.js.map +1 -0
  193. package/login/pages/{UpdateUserProfile.d.ts → Code.d.ts} +2 -2
  194. package/login/pages/Code.js +13 -0
  195. package/login/pages/Code.js.map +1 -0
  196. package/login/pages/DeleteAccountConfirm.d.ts +7 -0
  197. package/login/pages/DeleteAccountConfirm.js +14 -0
  198. package/login/pages/DeleteAccountConfirm.js.map +1 -0
  199. package/login/pages/{RegisterUserProfile.d.ts → DeleteCredential.d.ts} +2 -2
  200. package/login/pages/DeleteCredential.js +14 -0
  201. package/login/pages/DeleteCredential.js.map +1 -0
  202. package/login/pages/Error.js +2 -2
  203. package/login/pages/Error.js.map +1 -1
  204. package/login/pages/FrontchannelLogout.d.ts +7 -0
  205. package/login/pages/FrontchannelLogout.js +14 -0
  206. package/login/pages/FrontchannelLogout.js.map +1 -0
  207. package/login/pages/IdpReviewUserProfile.d.ts +8 -2
  208. package/login/pages/IdpReviewUserProfile.js +3 -4
  209. package/login/pages/IdpReviewUserProfile.js.map +1 -1
  210. package/login/pages/Info.js +14 -1
  211. package/login/pages/Info.js.map +1 -1
  212. package/login/pages/Login.js +24 -38
  213. package/login/pages/Login.js.map +1 -1
  214. package/login/pages/LoginConfigTotp.js +8 -1
  215. package/login/pages/LoginConfigTotp.js.map +1 -1
  216. package/login/pages/{LoginDeviceVerifyUserCode.d.ts → LoginOauth2DeviceVerifyUserCode.d.ts} +1 -1
  217. package/login/pages/{LoginDeviceVerifyUserCode.js → LoginOauth2DeviceVerifyUserCode.js} +2 -2
  218. package/login/pages/LoginOauth2DeviceVerifyUserCode.js.map +1 -0
  219. package/login/pages/LoginOauthGrant.js +3 -2
  220. package/login/pages/LoginOauthGrant.js.map +1 -1
  221. package/login/pages/LoginOtp.js +4 -6
  222. package/login/pages/LoginOtp.js.map +1 -1
  223. package/login/pages/LoginPageExpired.js +1 -1
  224. package/login/pages/LoginPageExpired.js.map +1 -1
  225. package/login/pages/LoginPassword.d.ts +1 -1
  226. package/login/pages/LoginPassword.js +18 -11
  227. package/login/pages/LoginPassword.js.map +1 -1
  228. package/login/pages/LoginRecoveryAuthnCodeConfig.d.ts +7 -0
  229. package/login/pages/LoginRecoveryAuthnCodeConfig.js +147 -0
  230. package/login/pages/LoginRecoveryAuthnCodeConfig.js.map +1 -0
  231. package/login/pages/LoginRecoveryAuthnCodeInput.d.ts +7 -0
  232. package/login/pages/LoginRecoveryAuthnCodeInput.js +14 -0
  233. package/login/pages/LoginRecoveryAuthnCodeInput.js.map +1 -0
  234. package/login/pages/LoginResetOtp.d.ts +7 -0
  235. package/login/pages/LoginResetOtp.js +15 -0
  236. package/login/pages/LoginResetOtp.js.map +1 -0
  237. package/login/pages/LoginResetPassword.js +4 -3
  238. package/login/pages/LoginResetPassword.js.map +1 -1
  239. package/login/pages/LoginUpdatePassword.js +21 -3
  240. package/login/pages/LoginUpdatePassword.js.map +1 -1
  241. package/login/pages/LoginUpdateProfile.d.ts +8 -2
  242. package/login/pages/LoginUpdateProfile.js +11 -5
  243. package/login/pages/LoginUpdateProfile.js.map +1 -1
  244. package/login/pages/LoginUsername.js +11 -35
  245. package/login/pages/LoginUsername.js.map +1 -1
  246. package/login/pages/LoginVerifyEmail.js +1 -1
  247. package/login/pages/LoginVerifyEmail.js.map +1 -1
  248. package/login/pages/LoginX509Info.d.ts +7 -0
  249. package/login/pages/LoginX509Info.js +14 -0
  250. package/login/pages/LoginX509Info.js.map +1 -0
  251. package/login/pages/LogoutConfirm.js +1 -1
  252. package/login/pages/LogoutConfirm.js.map +1 -1
  253. package/login/pages/Register.d.ts +8 -2
  254. package/login/pages/Register.js +26 -4
  255. package/login/pages/Register.js.map +1 -1
  256. package/login/pages/SamlPostForm.js +1 -1
  257. package/login/pages/SamlPostForm.js.map +1 -1
  258. package/login/pages/SelectAuthenticator.js +5 -21
  259. package/login/pages/SelectAuthenticator.js.map +1 -1
  260. package/login/pages/Terms.js +4 -6
  261. package/login/pages/Terms.js.map +1 -1
  262. package/login/pages/UpdateEmail.d.ts +8 -2
  263. package/login/pages/UpdateEmail.js +16 -5
  264. package/login/pages/UpdateEmail.js.map +1 -1
  265. package/login/pages/WebauthnAuthenticate.js +121 -83
  266. package/login/pages/WebauthnAuthenticate.js.map +1 -1
  267. package/login/pages/WebauthnError.d.ts +7 -0
  268. package/login/pages/WebauthnError.js +21 -0
  269. package/login/pages/WebauthnError.js.map +1 -0
  270. package/login/pages/WebauthnRegister.d.ts +7 -0
  271. package/login/pages/WebauthnRegister.js +193 -0
  272. package/login/pages/WebauthnRegister.js.map +1 -0
  273. package/package.json +138 -43
  274. package/src/account/Template.tsx +41 -14
  275. package/src/account/i18n/baseMessages/de.ts +1 -1
  276. package/src/account/i18n/baseMessages/en.ts +2 -0
  277. package/src/account/i18n/baseMessages/es.ts +231 -1
  278. package/src/account/i18n/baseMessages/index.ts +1 -0
  279. package/src/account/i18n/baseMessages/pl.ts +115 -1
  280. package/src/account/i18n/baseMessages/tr.ts +1 -1
  281. package/src/account/i18n/baseMessages/uk.ts +343 -0
  282. package/src/account/i18n/baseMessages/zh-CN.ts +10 -0
  283. package/src/bin/constants.ts +0 -1
  284. package/src/bin/keycloakify/buildJars/buildJar.ts +163 -0
  285. package/src/bin/keycloakify/buildJars/buildJars.ts +62 -0
  286. package/src/bin/keycloakify/buildJars/extensionVersions.ts +16 -0
  287. package/src/bin/keycloakify/buildJars/generatePom.ts +86 -0
  288. package/src/bin/keycloakify/buildJars/getKeycloakVersionRangeForJar.ts +37 -0
  289. package/src/bin/keycloakify/buildJars/index.ts +1 -0
  290. package/src/bin/keycloakify/buildOptions/UserProvidedBuildOptions.ts +1 -5
  291. package/src/bin/keycloakify/buildOptions/buildOptions.ts +1 -5
  292. package/src/bin/keycloakify/generateFtl/ftl_object_to_js_code_declaring_an_object.ftl +103 -232
  293. package/src/bin/keycloakify/generateFtl/generateFtl.ts +15 -31
  294. package/src/bin/keycloakify/generateFtl/pageId.ts +11 -3
  295. package/src/bin/keycloakify/generateStartKeycloakTestingContainer.ts +4 -8
  296. package/src/bin/keycloakify/generateTheme/bringInAccountV1.ts +5 -11
  297. package/src/bin/keycloakify/generateTheme/generateSrcMainResources.ts +267 -0
  298. package/src/bin/keycloakify/generateTheme/generateTheme.ts +22 -309
  299. package/src/bin/keycloakify/generateTheme/generateThemeVariants.ts +50 -0
  300. package/src/bin/keycloakify/generateTheme/readFieldNameUsage.ts +33 -8
  301. package/src/bin/keycloakify/keycloakify.ts +23 -56
  302. package/src/lib/useGetClassName.ts +2 -2
  303. package/src/login/Fallback.tsx +39 -9
  304. package/src/login/Template.tsx +160 -61
  305. package/src/login/TemplateProps.ts +113 -63
  306. package/src/login/UserProfileFormFields.tsx +750 -0
  307. package/src/login/i18n/baseMessages/ar.ts +3 -0
  308. package/src/login/i18n/baseMessages/ca.ts +1 -0
  309. package/src/login/i18n/baseMessages/cs.ts +3 -0
  310. package/src/login/i18n/baseMessages/da.ts +1 -0
  311. package/src/login/i18n/baseMessages/de.ts +1 -0
  312. package/src/login/i18n/baseMessages/el.ts +1 -0
  313. package/src/login/i18n/baseMessages/en.ts +23 -16
  314. package/src/login/i18n/baseMessages/es.ts +240 -1
  315. package/src/login/i18n/baseMessages/fa.ts +1 -0
  316. package/src/login/i18n/baseMessages/fi.ts +1 -0
  317. package/src/login/i18n/baseMessages/fr.ts +2 -1
  318. package/src/login/i18n/baseMessages/hu.ts +1 -0
  319. package/src/login/i18n/baseMessages/index.ts +1 -0
  320. package/src/login/i18n/baseMessages/it.ts +1 -0
  321. package/src/login/i18n/baseMessages/ja.ts +1 -0
  322. package/src/login/i18n/baseMessages/lt.ts +1 -0
  323. package/src/login/i18n/baseMessages/lv.ts +1 -0
  324. package/src/login/i18n/baseMessages/nl.ts +1 -0
  325. package/src/login/i18n/baseMessages/no.ts +1 -0
  326. package/src/login/i18n/baseMessages/pl.ts +1 -0
  327. package/src/login/i18n/baseMessages/pt-BR.ts +1 -0
  328. package/src/login/i18n/baseMessages/ru.ts +1 -0
  329. package/src/login/i18n/baseMessages/sk.ts +3 -1
  330. package/src/login/i18n/baseMessages/sv.ts +1 -0
  331. package/src/login/i18n/baseMessages/th.ts +1 -0
  332. package/src/login/i18n/baseMessages/tr.ts +1 -0
  333. package/src/login/i18n/baseMessages/uk.ts +439 -0
  334. package/src/login/i18n/baseMessages/zh-CN.ts +325 -55
  335. package/src/login/i18n/i18n.tsx +6 -2
  336. package/src/login/kcContext/KcContext.ts +216 -103
  337. package/src/login/kcContext/createGetKcContext.ts +11 -19
  338. package/src/login/kcContext/kcContextMocks.ts +165 -226
  339. package/src/login/lib/useDownloadTerms.ts +15 -7
  340. package/src/login/lib/useGetClassName.ts +112 -83
  341. package/src/login/lib/useUserProfileForm.tsx +1227 -0
  342. package/src/login/pages/Code.tsx +35 -0
  343. package/src/login/pages/DeleteAccountConfirm.tsx +53 -0
  344. package/src/login/pages/DeleteCredential.tsx +45 -0
  345. package/src/login/pages/Error.tsx +2 -2
  346. package/src/login/pages/FrontchannelLogout.tsx +41 -0
  347. package/src/login/pages/IdpReviewUserProfile.tsx +15 -5
  348. package/src/login/pages/Info.tsx +29 -19
  349. package/src/login/pages/Login.tsx +156 -117
  350. package/src/login/pages/LoginConfigTotp.tsx +26 -1
  351. package/src/login/pages/{LoginDeviceVerifyUserCode.tsx → LoginOauth2DeviceVerifyUserCode.tsx} +3 -1
  352. package/src/login/pages/LoginOauthGrant.tsx +38 -2
  353. package/src/login/pages/LoginOtp.tsx +73 -65
  354. package/src/login/pages/LoginPageExpired.tsx +1 -1
  355. package/src/login/pages/LoginPassword.tsx +77 -28
  356. package/src/login/pages/LoginRecoveryAuthnCodeConfig.tsx +260 -0
  357. package/src/login/pages/LoginRecoveryAuthnCodeInput.tsx +73 -0
  358. package/src/login/pages/LoginResetOtp.tsx +70 -0
  359. package/src/login/pages/LoginResetPassword.tsx +11 -4
  360. package/src/login/pages/LoginUpdatePassword.tsx +120 -81
  361. package/src/login/pages/LoginUpdateProfile.tsx +41 -115
  362. package/src/login/pages/LoginUsername.tsx +93 -101
  363. package/src/login/pages/LoginVerifyEmail.tsx +14 -8
  364. package/src/login/pages/LoginX509Info.tsx +94 -0
  365. package/src/login/pages/LogoutConfirm.tsx +2 -2
  366. package/src/login/pages/Register.tsx +83 -131
  367. package/src/login/pages/SamlPostForm.tsx +1 -1
  368. package/src/login/pages/SelectAuthenticator.tsx +29 -52
  369. package/src/login/pages/Terms.tsx +4 -7
  370. package/src/login/pages/UpdateEmail.tsx +69 -54
  371. package/src/login/pages/WebauthnAuthenticate.tsx +205 -165
  372. package/src/login/pages/WebauthnError.tsx +66 -0
  373. package/src/login/pages/WebauthnRegister.tsx +285 -0
  374. package/src/tools/formatNumber.ts +48 -0
  375. package/src/tools/useInsertLinkTags.ts +82 -0
  376. package/src/tools/useInsertScriptTags.ts +106 -0
  377. package/src/tools/useSetClassName.ts +21 -0
  378. package/tools/formatNumber.d.ts +1 -0
  379. package/tools/formatNumber.js +37 -0
  380. package/tools/formatNumber.js.map +1 -0
  381. package/tools/useInsertLinkTags.d.ts +7 -0
  382. package/tools/useInsertLinkTags.js +57 -0
  383. package/tools/useInsertLinkTags.js.map +1 -0
  384. package/tools/useInsertScriptTags.d.ts +20 -0
  385. package/tools/useInsertScriptTags.js +75 -0
  386. package/tools/useInsertScriptTags.js.map +1 -0
  387. package/tools/useSetClassName.d.ts +4 -0
  388. package/tools/useSetClassName.js +16 -0
  389. package/tools/useSetClassName.js.map +1 -0
  390. package/vite-plugin/tsconfig.tsbuildinfo +1 -1
  391. package/bin/keycloakify/generatePom.d.ts +0 -12
  392. package/bin/keycloakify/generatePom.js +0 -59
  393. package/bin/keycloakify/generatePom.js.map +0 -1
  394. package/lib/usePrepareTemplate.d.ts +0 -11
  395. package/lib/usePrepareTemplate.js +0 -80
  396. package/lib/usePrepareTemplate.js.map +0 -1
  397. package/login/lib/useFormValidation.d.ts +0 -47
  398. package/login/lib/useFormValidation.js +0 -316
  399. package/login/lib/useFormValidation.js.map +0 -1
  400. package/login/pages/LoginDeviceVerifyUserCode.js.map +0 -1
  401. package/login/pages/RegisterUserProfile.js +0 -18
  402. package/login/pages/RegisterUserProfile.js.map +0 -1
  403. package/login/pages/UpdateUserProfile.js +0 -17
  404. package/login/pages/UpdateUserProfile.js.map +0 -1
  405. package/login/pages/shared/UserProfileFormFields.d.ts +0 -18
  406. package/login/pages/shared/UserProfileFormFields.js +0 -58
  407. package/login/pages/shared/UserProfileFormFields.js.map +0 -1
  408. package/src/bin/keycloakify/generatePom.ts +0 -70
  409. package/src/lib/usePrepareTemplate.ts +0 -113
  410. package/src/login/lib/useFormValidation.tsx +0 -474
  411. package/src/login/pages/RegisterUserProfile.tsx +0 -72
  412. package/src/login/pages/UpdateUserProfile.tsx +0 -82
  413. package/src/login/pages/shared/UserProfileFormFields.tsx +0 -177
  414. package/src/tools/headInsert.ts +0 -73
  415. package/tools/headInsert.d.ts +0 -12
  416. package/tools/headInsert.js +0 -50
  417. package/tools/headInsert.js.map +0 -1
@@ -9,22 +9,15 @@ import { BASE_URL } from "keycloakify/lib/BASE_URL";
9
9
  const attributes: Attribute[] = [
10
10
  {
11
11
  "validators": {
12
- "username-prohibited-characters": {
13
- "ignore.empty.value": true
14
- },
15
- "up-username-has-value": {},
16
12
  "length": {
17
13
  "ignore.empty.value": true,
18
14
  "min": "3",
19
15
  "max": "255"
20
- },
21
- "up-duplicate-username": {},
22
- "up-username-mutation": {}
16
+ }
23
17
  },
24
18
  "displayName": "${username}",
25
19
  "annotations": {},
26
20
  "required": true,
27
- "groupAnnotations": {},
28
21
  "autocomplete": "username",
29
22
  "readOnly": false,
30
23
  "name": "username",
@@ -32,16 +25,10 @@ const attributes: Attribute[] = [
32
25
  },
33
26
  {
34
27
  "validators": {
35
- "up-email-exists-as-username": {},
36
28
  "length": {
37
29
  "max": "255",
38
30
  "ignore.empty.value": true
39
31
  },
40
- "up-blank-attribute-value": {
41
- "error-message": "missingEmailMessage",
42
- "fail-on-null": false
43
- },
44
- "up-duplicate-email": {},
45
32
  "email": {
46
33
  "ignore.empty.value": true
47
34
  },
@@ -53,7 +40,6 @@ const attributes: Attribute[] = [
53
40
  "displayName": "${email}",
54
41
  "annotations": {},
55
42
  "required": true,
56
- "groupAnnotations": {},
57
43
  "autocomplete": "email",
58
44
  "readOnly": false,
59
45
  "name": "email"
@@ -63,17 +49,11 @@ const attributes: Attribute[] = [
63
49
  "length": {
64
50
  "max": "255",
65
51
  "ignore.empty.value": true
66
- },
67
- "person-name-prohibited-characters": {
68
- "ignore.empty.value": true
69
- },
70
- "up-immutable-attribute": {},
71
- "up-attribute-required-by-metadata-value": {}
52
+ }
72
53
  },
73
54
  "displayName": "${firstName}",
74
55
  "annotations": {},
75
56
  "required": true,
76
- "groupAnnotations": {},
77
57
  "readOnly": false,
78
58
  "name": "firstName"
79
59
  },
@@ -82,17 +62,11 @@ const attributes: Attribute[] = [
82
62
  "length": {
83
63
  "max": "255",
84
64
  "ignore.empty.value": true
85
- },
86
- "person-name-prohibited-characters": {
87
- "ignore.empty.value": true
88
- },
89
- "up-immutable-attribute": {},
90
- "up-attribute-required-by-metadata-value": {}
65
+ }
91
66
  },
92
67
  "displayName": "${lastName}",
93
68
  "annotations": {},
94
69
  "required": true,
95
- "groupAnnotations": {},
96
70
  "readOnly": false,
97
71
  "name": "lastName"
98
72
  }
@@ -112,7 +86,8 @@ export const kcContextCommonMock: KcContext.Common = {
112
86
  resourcesPath,
113
87
  "resourcesCommonPath": `${resourcesPath}/${resources_common}`,
114
88
  "loginRestartFlowUrl": "/auth/realms/myrealm/login-actions/restart?client_id=account&tab_id=HoAx28ja4xg",
115
- "loginUrl": "/auth/realms/myrealm/login-actions/authenticate?client_id=account&tab_id=HoAx28ja4xg"
89
+ "loginUrl": "/auth/realms/myrealm/login-actions/authenticate?client_id=account&tab_id=HoAx28ja4xg",
90
+ "ssoLoginInOtherTabsUrl": "/auth/realms/myrealm/login-actions/switch?client_id=account&tab_id=HoAx28ja4xg"
116
91
  },
117
92
  "realm": {
118
93
  "name": "myrealm",
@@ -126,8 +101,9 @@ export const kcContextCommonMock: KcContext.Common = {
126
101
  return undefined;
127
102
  },
128
103
  "existsError": () => false,
129
- "get": key => `Fake error for ${key}`,
130
- "exists": () => false
104
+ "get": fieldName => `Fake error for ${fieldName}`,
105
+ "exists": () => false,
106
+ "getFirstError": fieldName => `Fake error for ${fieldName}`
131
107
  },
132
108
  "locale": {
133
109
  "supported": [
@@ -237,126 +213,7 @@ export const kcContextCommonMock: KcContext.Common = {
237
213
  },
238
214
  "scripts": [],
239
215
  "isAppInitiatedAction": false,
240
- "properties": {
241
- "kcLogoIdP-facebook": "fa fa-facebook",
242
- "parent": "keycloak",
243
- "kcAuthenticatorOTPClass": "fa fa-mobile list-view-pf-icon-lg",
244
- "kcLogoIdP-bitbucket": "fa fa-bitbucket",
245
- "kcAuthenticatorWebAuthnClass": "fa fa-key list-view-pf-icon-lg",
246
- "kcWebAuthnDefaultIcon": "pficon pficon-key",
247
- "kcLogoIdP-stackoverflow": "fa fa-stack-overflow",
248
- "kcSelectAuthListItemClass": "pf-l-stack__item select-auth-box-parent pf-l-split",
249
- "kcLogoIdP-microsoft": "fa fa-windows",
250
- "kcLocaleItemClass": "pf-c-dropdown__menu-item",
251
- "kcLoginOTPListItemHeaderClass": "pf-c-tile__header",
252
- "kcLoginOTPListItemIconBodyClass": "pf-c-tile__icon",
253
- "kcInputHelperTextAfterClass": "pf-c-form__helper-text pf-c-form__helper-text-after",
254
- "kcFormClass": "form-horizontal",
255
- "kcSelectAuthListClass": "pf-l-stack select-auth-container",
256
- "kcInputClassRadioCheckboxLabelDisabled": "pf-m-disabled",
257
- "kcSelectAuthListItemIconClass": "pf-l-split__item select-auth-box-icon",
258
- "kcRecoveryCodesWarning": "kc-recovery-codes-warning",
259
- "kcFormSettingClass": "login-pf-settings",
260
- "kcWebAuthnBLE": "fa fa-bluetooth-b",
261
- "kcInputWrapperClass": "col-xs-12 col-sm-12 col-md-12 col-lg-12",
262
- "kcSelectAuthListItemArrowIconClass": "fa fa-angle-right fa-lg",
263
- "meta": "viewport==width=device-width,initial-scale=1",
264
- "styles": "css/login.css css/tile.css",
265
- "kcFeedbackAreaClass": "col-md-12",
266
- "kcLogoIdP-google": "fa fa-google",
267
- "kcCheckLabelClass": "pf-c-check__label",
268
- "kcSelectAuthListItemFillClass": "pf-l-split__item pf-m-fill",
269
- "kcAuthenticatorDefaultClass": "fa fa-list list-view-pf-icon-lg",
270
- "kcLogoIdP-gitlab": "fa fa-gitlab",
271
- "kcFormAreaClass": "col-sm-10 col-sm-offset-1 col-md-8 col-md-offset-2 col-lg-8 col-lg-offset-2",
272
- "kcFormButtonsClass": "col-xs-12 col-sm-12 col-md-12 col-lg-12",
273
- "kcInputClassRadioLabel": "pf-c-radio__label",
274
- "kcAuthenticatorWebAuthnPasswordlessClass": "fa fa-key list-view-pf-icon-lg",
275
- "kcSelectAuthListItemHeadingClass": "pf-l-stack__item select-auth-box-headline pf-c-title",
276
- "kcInfoAreaClass": "col-xs-12 col-sm-4 col-md-4 col-lg-5 details",
277
- "kcLogoLink": "http://www.keycloak.org",
278
- "kcContainerClass": "container-fluid",
279
- "kcSelectAuthListItemTitle": "select-auth-box-paragraph",
280
- "kcHtmlClass": "login-pf",
281
- "kcLoginOTPListItemTitleClass": "pf-c-tile__title",
282
- "locales": "ca,cs,da,de,en,es,fr,fi,hu,it,ja,lt,nl,no,pl,pt-BR,ru,sk,sv,tr,zh-CN",
283
- "serviceTitle": "CodeGouv",
284
- "kcLogoIdP-openshift-v4": "pf-icon pf-icon-openshift",
285
- "kcWebAuthnUnknownIcon": "pficon pficon-key unknown-transport-class",
286
- "kcFormSocialAccountNameClass": "kc-social-provider-name",
287
- "kcLogoIdP-openshift-v3": "pf-icon pf-icon-openshift",
288
- "kcLoginOTPListInputClass": "pf-c-tile__input",
289
- "kcWebAuthnUSB": "fa fa-usb",
290
- "kcInputClassRadio": "pf-c-radio",
291
- "kcWebAuthnKeyIcon": "pficon pficon-key",
292
- "kcFeedbackInfoIcon": "fa fa-fw fa-info-circle",
293
- "kcCommonLogoIdP": "kc-social-provider-logo kc-social-gray",
294
- "stylesCommon":
295
- "web_modules/@patternfly/react-core/dist/styles/base.css web_modules/@patternfly/react-core/dist/styles/app.css node_modules/patternfly/dist/css/patternfly.min.css node_modules/patternfly/dist/css/patternfly-additions.min.css lib/pficon/pficon.css",
296
- "kcRecoveryCodesActions": "kc-recovery-codes-actions",
297
- "kcFormGroupHeader": "pf-c-form__group",
298
- "kcFormSocialAccountSectionClass": "kc-social-section kc-social-gray",
299
- "kcLogoIdP-instagram": "fa fa-instagram",
300
- "kcAlertClass": "pf-c-alert pf-m-inline",
301
- "kcHeaderClass": "login-pf-page-header",
302
- "kcLabelWrapperClass": "col-xs-12 col-sm-12 col-md-12 col-lg-12",
303
- "kcFormSocialAccountLinkClass": "pf-c-login__main-footer-links-item-link",
304
- "kcLocaleMainClass": "pf-c-dropdown",
305
- "kcTextareaClass": "form-control",
306
- "kcButtonBlockClass": "pf-m-block",
307
- "kcButtonClass": "pf-c-button",
308
- "kcWebAuthnNFC": "fa fa-wifi",
309
- "kcLocaleClass": "col-xs-12 col-sm-1",
310
- "kcInputClassCheckboxInput": "pf-c-check__input",
311
- "kcFeedbackErrorIcon": "fa fa-fw fa-exclamation-circle",
312
- "kcInputLargeClass": "input-lg",
313
- "kcInputErrorMessageClass": "pf-c-form__helper-text pf-m-error required kc-feedback-text",
314
- "kcRecoveryCodesList": "kc-recovery-codes-list",
315
- "kcFormSocialAccountListClass": "pf-c-login__main-footer-links kc-social-links",
316
- "kcAlertTitleClass": "pf-c-alert__title kc-feedback-text",
317
- "kcAuthenticatorPasswordClass": "fa fa-unlock list-view-pf-icon-lg",
318
- "kcCheckInputClass": "pf-c-check__input",
319
- "kcLogoIdP-linkedin": "fa fa-linkedin",
320
- "kcLogoIdP-twitter": "fa fa-twitter",
321
- "kcFeedbackWarningIcon": "fa fa-fw fa-exclamation-triangle",
322
- "kcResetFlowIcon": "pficon pficon-arrow fa",
323
- "kcSelectAuthListItemIconPropertyClass": "fa-2x select-auth-box-icon-properties",
324
- "kcFeedbackSuccessIcon": "fa fa-fw fa-check-circle",
325
- "kcLoginOTPListClass": "pf-c-tile",
326
- "kcSrOnlyClass": "sr-only",
327
- "kcFormSocialAccountListGridClass": "pf-l-grid kc-social-grid",
328
- "kcButtonDefaultClass": "btn-default",
329
- "kcFormGroupErrorClass": "has-error",
330
- "kcSelectAuthListItemDescriptionClass": "pf-l-stack__item select-auth-box-desc",
331
- "kcSelectAuthListItemBodyClass": "pf-l-split__item pf-l-stack",
332
- "import": "common/keycloak",
333
- "kcWebAuthnInternal": "pficon pficon-key",
334
- "kcSelectAuthListItemArrowClass": "pf-l-split__item select-auth-box-arrow",
335
- "kcCheckClass": "pf-c-check",
336
- "kcContentClass": "col-sm-8 col-sm-offset-2 col-md-6 col-md-offset-3 col-lg-6 col-lg-offset-3",
337
- "kcLogoClass": "login-pf-brand",
338
- "kcLoginOTPListItemIconClass": "fa fa-mobile",
339
- "kcLoginClass": "login-pf-page",
340
- "kcSignUpClass": "login-pf-signup",
341
- "kcButtonLargeClass": "btn-lg",
342
- "kcFormCardClass": "card-pf",
343
- "kcLocaleListClass": "pf-c-dropdown__menu pf-m-align-right",
344
- "kcInputClass": "pf-c-form-control",
345
- "kcFormGroupClass": "form-group",
346
- "kcLogoIdP-paypal": "fa fa-paypal",
347
- "kcInputClassCheckbox": "pf-c-check",
348
- "kcRecoveryCodesConfirmation": "kc-recovery-codes-confirmation",
349
- "kcInputClassRadioInput": "pf-c-radio__input",
350
- "kcFormSocialAccountListButtonClass": "pf-c-button pf-m-control pf-m-block kc-social-item kc-social-gray",
351
- "kcInputClassCheckboxLabel": "pf-c-check__label",
352
- "kcFormOptionsClass": "col-xs-12 col-sm-12 col-md-12 col-lg-12",
353
- "kcFormHeaderClass": "login-pf-header",
354
- "kcFormSocialAccountGridItem": "pf-l-grid__item",
355
- "kcButtonPrimaryClass": "pf-m-primary",
356
- "kcInputHelperTextBeforeClass": "pf-c-form__helper-text pf-c-form__helper-text-before",
357
- "kcLogoIdP-github": "fa fa-github",
358
- "kcLabelClass": "pf-c-form__label pf-c-form__label-text"
359
- }
216
+ "properties": {}
360
217
  };
361
218
 
362
219
  const loginUrl = {
@@ -388,42 +245,25 @@ export const kcContextMocks = [
388
245
  "login": {},
389
246
  "registrationDisabled": false
390
247
  }),
391
- ...(() => {
392
- const registerCommon: KcContext.RegisterUserProfile.CommonWithLegacy = {
393
- ...kcContextCommonMock,
394
- "url": {
395
- ...loginUrl,
396
- "registrationAction":
397
- "http://localhost:8080/auth/realms/myrealm/login-actions/registration?session_code=gwZdUeO7pbYpFTRxiIxRg_QtzMbtFTKrNu6XW_f8asM&execution=12146ce0-b139-4bbd-b25b-0eccfee6577e&client_id=account&tab_id=uS8lYfebLa0"
398
- },
399
- "scripts": [],
400
- "isAppInitiatedAction": false,
401
- "passwordRequired": true,
402
- "recaptchaRequired": false,
403
- "social": {
404
- "displayInfo": true
405
- }
406
- };
407
-
408
- return [
409
- id<KcContext.Register>({
410
- "pageId": "register.ftl",
411
- ...registerCommon,
412
- "register": {
413
- "formData": {}
414
- }
415
- }),
416
- id<KcContext.RegisterUserProfile>({
417
- "pageId": "register-user-profile.ftl",
418
- ...registerCommon,
419
- "profile": {
420
- "context": "REGISTRATION_PROFILE" as const,
421
- attributes,
422
- attributesByName
423
- }
424
- })
425
- ];
426
- })(),
248
+ id<KcContext.Register>({
249
+ ...kcContextCommonMock,
250
+ "url": {
251
+ ...loginUrl,
252
+ "registrationAction":
253
+ "http://localhost:8080/auth/realms/myrealm/login-actions/registration?session_code=gwZdUeO7pbYpFTRxiIxRg_QtzMbtFTKrNu6XW_f8asM&execution=12146ce0-b139-4bbd-b25b-0eccfee6577e&client_id=account&tab_id=uS8lYfebLa0"
254
+ },
255
+ "isAppInitiatedAction": false,
256
+ "passwordRequired": true,
257
+ "recaptchaRequired": false,
258
+ "pageId": "register.ftl",
259
+ "profile": {
260
+ attributes,
261
+ attributesByName
262
+ },
263
+ "scripts": [
264
+ //"https://www.google.com/recaptcha/api.js"
265
+ ]
266
+ }),
427
267
  id<KcContext.Info>({
428
268
  ...kcContextCommonMock,
429
269
  "pageId": "info.ftl",
@@ -455,9 +295,11 @@ export const kcContextMocks = [
455
295
  "pageId": "login-reset-password.ftl",
456
296
  "realm": {
457
297
  ...kcContextCommonMock.realm,
458
- "loginWithEmailAllowed": false
298
+ "loginWithEmailAllowed": false,
299
+ "duplicateEmailsAllowed": false
459
300
  },
460
- url: loginUrl
301
+ "url": loginUrl,
302
+ "auth": {}
461
303
  }),
462
304
  id<KcContext.LoginVerifyEmail>({
463
305
  ...kcContextCommonMock,
@@ -534,8 +376,7 @@ export const kcContextMocks = [
534
376
  },
535
377
  "social": {
536
378
  "displayInfo": false
537
- },
538
- "login": {}
379
+ }
539
380
  }),
540
381
  id<KcContext.WebauthnAuthenticate>({
541
382
  ...kcContextCommonMock,
@@ -545,7 +386,9 @@ export const kcContextMocks = [
545
386
  "authenticators": []
546
387
  },
547
388
  "realm": {
548
- ...kcContextCommonMock.realm
389
+ ...kcContextCommonMock.realm,
390
+ "password": true,
391
+ "registrationAllowed": true
549
392
  },
550
393
  "challenge": "",
551
394
  "userVerification": "not specified",
@@ -560,18 +403,14 @@ export const kcContextMocks = [
560
403
  }),
561
404
  id<KcContext.LoginUpdatePassword>({
562
405
  ...kcContextCommonMock,
563
- "pageId": "login-update-password.ftl",
564
- "username": "anUsername"
406
+ "pageId": "login-update-password.ftl"
565
407
  }),
566
408
  id<KcContext.LoginUpdateProfile>({
567
409
  ...kcContextCommonMock,
568
410
  "pageId": "login-update-profile.ftl",
569
- "user": {
570
- "editUsernameAllowed": true,
571
- "username": "anUsername",
572
- "email": "foo@example.com",
573
- "firstName": "aFirstName",
574
- "lastName": "aLastName"
411
+ "profile": {
412
+ attributes,
413
+ attributesByName
575
414
  }
576
415
  }),
577
416
  id<KcContext.LoginIdpLinkConfirm>({
@@ -590,21 +429,21 @@ export const kcContextMocks = [
590
429
  id<KcContext.LoginConfigTotp>({
591
430
  ...kcContextCommonMock,
592
431
  "pageId": "login-config-totp.ftl",
593
- totp: {
594
- totpSecretEncoded: "KVVF G2BY N4YX S6LB IUYT K2LH IFYE 4SBV",
595
- qrUrl: "#",
596
- totpSecretQrCode:
432
+ "totp": {
433
+ "totpSecretEncoded": "KVVF G2BY N4YX S6LB IUYT K2LH IFYE 4SBV",
434
+ "qrUrl": "#",
435
+ "totpSecretQrCode":
597
436
  "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=",
598
- manualUrl: "#",
599
- totpSecret: "G4nsI8lQagRMUchH8jEG",
600
- otpCredentials: [],
601
- supportedApplications: ["FreeOTP", "Google Authenticator"],
602
- policy: {
603
- algorithm: "HmacSHA1",
604
- digits: 6,
605
- lookAheadWindow: 1,
606
- type: "totp",
607
- period: 30
437
+ "manualUrl": "#",
438
+ "totpSecret": "G4nsI8lQagRMUchH8jEG",
439
+ "otpCredentials": [],
440
+ "supportedApplications": ["FreeOTP", "Google Authenticator"],
441
+ "policy": {
442
+ "algorithm": "HmacSHA1",
443
+ "digits": 6,
444
+ "lookAheadWindow": 1,
445
+ "type": "totp",
446
+ "period": 30
608
447
  }
609
448
  }
610
449
  }),
@@ -622,19 +461,10 @@ export const kcContextMocks = [
622
461
  },
623
462
  "logoutConfirm": { "code": "123", skipLink: false }
624
463
  }),
625
- id<KcContext.UpdateUserProfile>({
626
- ...kcContextCommonMock,
627
- "pageId": "update-user-profile.ftl",
628
- "profile": {
629
- attributes,
630
- attributesByName
631
- }
632
- }),
633
464
  id<KcContext.IdpReviewUserProfile>({
634
465
  ...kcContextCommonMock,
635
466
  "pageId": "idp-review-user-profile.ftl",
636
467
  "profile": {
637
- context: "IDP_REVIEW",
638
468
  attributes,
639
469
  attributesByName
640
470
  }
@@ -642,8 +472,11 @@ export const kcContextMocks = [
642
472
  id<KcContext.UpdateEmail>({
643
473
  ...kcContextCommonMock,
644
474
  "pageId": "update-email.ftl",
645
- "email": {
646
- value: "email@example.com"
475
+ "profile": {
476
+ "attributes": attributes.filter(attribute => attribute.name === "email"),
477
+ "attributesByName": Object.fromEntries(
478
+ attributes.filter(attribute => attribute.name === "email").map(attribute => [attribute.name, attribute])
479
+ )
647
480
  }
648
481
  }),
649
482
  id<KcContext.SelectAuthenticator>({
@@ -676,6 +509,112 @@ export const kcContextMocks = [
676
509
  id<KcContext.LoginPageExpired>({
677
510
  ...kcContextCommonMock,
678
511
  pageId: "login-page-expired.ftl"
512
+ }),
513
+
514
+ id<KcContext.FrontchannelLogout>({
515
+ ...kcContextCommonMock,
516
+ pageId: "frontchannel-logout.ftl",
517
+ "logout": {
518
+ "clients": [
519
+ {
520
+ "name": "myApp",
521
+ "frontChannelLogoutUrl": "#"
522
+ },
523
+ {
524
+ "name": "myApp2",
525
+ "frontChannelLogoutUrl": "#"
526
+ }
527
+ ]
528
+ }
529
+ }),
530
+ id<KcContext.WebauthnRegister>({
531
+ "pageId": "webauthn-register.ftl",
532
+ ...kcContextCommonMock,
533
+ "challenge": "random-challenge-string",
534
+ "userid": "user123",
535
+ "username": "johndoe",
536
+ "signatureAlgorithms": ["ES256", "RS256"],
537
+ "rpEntityName": "Example Corp",
538
+ "rpId": "example.com",
539
+ "attestationConveyancePreference": "direct",
540
+ "authenticatorAttachment": "platform",
541
+ "requireResidentKey": "required",
542
+ "userVerificationRequirement": "preferred",
543
+ "createTimeout": 60000,
544
+ "excludeCredentialIds": "credId123,credId456",
545
+ "isSetRetry": false,
546
+ "isAppInitiatedAction": true
547
+ }),
548
+ id<KcContext.DeleteCredential>({
549
+ "pageId": "delete-credential.ftl",
550
+ ...kcContextCommonMock,
551
+ "credentialLabel": "myCredential"
552
+ }),
553
+ id<KcContext.Code>({
554
+ "pageId": "code.ftl",
555
+ ...kcContextCommonMock,
556
+ "code": {
557
+ "success": true,
558
+ "code": "123456"
559
+ }
560
+ }),
561
+ id<KcContext.DeleteAccountConfirm>({
562
+ "pageId": "delete-account-confirm.ftl",
563
+ ...kcContextCommonMock,
564
+ "triggered_from_aia": true
565
+ }),
566
+ id<KcContext.LoginRecoveryAuthnCodeConfig>({
567
+ "pageId": "login-recovery-authn-code-config.ftl",
568
+ ...kcContextCommonMock,
569
+ "recoveryAuthnCodesConfigBean": {
570
+ "generatedRecoveryAuthnCodesList": ["code123", "code456", "code789"],
571
+ "generatedRecoveryAuthnCodesAsString": "code123, code456, code789",
572
+ "generatedAt": new Date().getTime()
573
+ }
574
+ }),
575
+ id<KcContext.LoginRecoveryAuthnCodeInput>({
576
+ "pageId": "login-recovery-authn-code-input.ftl",
577
+ ...kcContextCommonMock,
578
+ "recoveryAuthnCodesInputBean": {
579
+ "codeNumber": 1234
580
+ }
581
+ }),
582
+ id<KcContext.LoginResetOtp>({
583
+ "pageId": "login-reset-otp.ftl",
584
+ ...kcContextCommonMock,
585
+ "configuredOtpCredentials": {
586
+ "userOtpCredentials": [
587
+ {
588
+ "id": "otpId1",
589
+ "userLabel": "OTP Device 1"
590
+ },
591
+ {
592
+ "id": "otpId2",
593
+ "userLabel": "OTP Device 2"
594
+ },
595
+ {
596
+ "id": "otpId3",
597
+ "userLabel": "Backup OTP"
598
+ }
599
+ ],
600
+ "selectedCredentialId": "otpId2"
601
+ }
602
+ }),
603
+ id<KcContext.LoginX509Info>({
604
+ "pageId": "login-x509-info.ftl",
605
+ ...kcContextCommonMock,
606
+ "x509": {
607
+ "formData": {
608
+ "subjectDN": "CN=John Doe, O=Example Corp, C=US",
609
+ "isUserEnabled": true,
610
+ "username": "johndoe"
611
+ }
612
+ }
613
+ }),
614
+ id<KcContext.WebauthnError>({
615
+ "pageId": "webauthn-error.ftl",
616
+ ...kcContextCommonMock,
617
+ "isAppInitiatedAction": true
679
618
  })
680
619
  ];
681
620
 
@@ -5,15 +5,17 @@ import { useConst } from "keycloakify/tools/useConst";
5
5
  import { useConstCallback } from "keycloakify/tools/useConstCallback";
6
6
  import { assert } from "tsafe/assert";
7
7
  import { Evt } from "evt";
8
+ import { useRerenderOnStateChange } from "evt/hooks/useRerenderOnStateChange";
8
9
  import { KcContext } from "../kcContext";
9
10
 
10
- export const evtTermMarkdown = Evt.create<string | undefined>(undefined);
11
+ const evtTermsMarkdown = Evt.create<string | undefined>(undefined);
11
12
 
12
13
  export type KcContextLike = {
13
14
  pageId: string;
14
15
  locale?: {
15
16
  currentLanguageTag: string;
16
17
  };
18
+ termsAcceptanceRequired?: boolean;
17
19
  };
18
20
 
19
21
  assert<KcContext extends KcContextLike ? true : false>();
@@ -38,12 +40,18 @@ export function useDownloadTerms(params: {
38
40
  })();
39
41
 
40
42
  useEffect(() => {
41
- if (kcContext.pageId !== "terms.ftl") {
42
- return;
43
+ if (kcContext.pageId === "terms.ftl" || kcContext.termsAcceptanceRequired) {
44
+ downloadTermMarkdownMemoized(kcContext.locale?.currentLanguageTag ?? fallbackLanguageTag).then(
45
+ thermMarkdown => (evtTermsMarkdown.state = thermMarkdown)
46
+ );
43
47
  }
44
-
45
- downloadTermMarkdownMemoized(kcContext.locale?.currentLanguageTag ?? fallbackLanguageTag).then(
46
- thermMarkdown => (evtTermMarkdown.state = thermMarkdown)
47
- );
48
48
  }, []);
49
49
  }
50
+
51
+ export function useTermsMarkdown() {
52
+ useRerenderOnStateChange(evtTermsMarkdown);
53
+
54
+ const termsMarkdown = evtTermsMarkdown.state;
55
+
56
+ return { termsMarkdown };
57
+ }