generator-jhipster 7.1.0 → 7.4.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 (917) hide show
  1. package/README.md +1 -1
  2. package/cli/commands.js +21 -0
  3. package/cli/environment-builder.js +10 -2
  4. package/cli/import-jdl.js +7 -10
  5. package/cli/jdl.js +1 -0
  6. package/cli/jhipster-command.js +14 -28
  7. package/cli/program.js +37 -29
  8. package/generators/add/index.cjs +78 -0
  9. package/generators/app/esm.mjs +21 -0
  10. package/generators/app/generator.spec.mjs +47 -0
  11. package/generators/app/index.js +38 -34
  12. package/generators/app/prompts.js +1 -1
  13. package/generators/aws/esm.mjs +21 -0
  14. package/generators/aws/generator.spec.mjs +47 -0
  15. package/generators/aws/index.js +8 -8
  16. package/generators/aws/lib/eb.js +1 -1
  17. package/generators/azure-app-service/esm.mjs +21 -0
  18. package/generators/azure-app-service/generator.spec.mjs +47 -0
  19. package/generators/azure-app-service/index.js +30 -19
  20. package/generators/azure-app-service/templates/github/workflows/azure-app-service.yml.ejs +3 -3
  21. package/generators/azure-spring-cloud/esm.mjs +21 -0
  22. package/generators/azure-spring-cloud/generator.spec.mjs +47 -0
  23. package/generators/azure-spring-cloud/index.js +68 -46
  24. package/generators/azure-spring-cloud/templates/application-azure.yml.ejs +4 -4
  25. package/generators/azure-spring-cloud/templates/github/workflows/azure-spring-cloud.yml.ejs +3 -3
  26. package/generators/base/esm.mjs +21 -0
  27. package/generators/base/generator.spec.mjs +44 -0
  28. package/generators/bootstrap/esm.mjs +21 -0
  29. package/generators/bootstrap/generator.spec.mjs +44 -0
  30. package/generators/bootstrap/index.js +55 -58
  31. package/generators/ci-cd/esm.mjs +21 -0
  32. package/generators/ci-cd/generator.spec.mjs +47 -0
  33. package/generators/ci-cd/index.js +30 -47
  34. package/generators/ci-cd/templates/github-actions.yml.ejs +5 -2
  35. package/generators/ci-cd/templates/travis.yml.ejs +9 -4
  36. package/generators/cleanup.js +5 -0
  37. package/generators/client/__workflow/devserver-angular.json +13 -0
  38. package/generators/client/__workflow/devserver-react.json +13 -0
  39. package/generators/client/__workflow/devserver-vue.json +13 -0
  40. package/generators/client/esm.mjs +21 -0
  41. package/generators/client/files-angular.js +8 -9
  42. package/generators/client/files-common.js +7 -3
  43. package/generators/client/files-react.js +11 -1
  44. package/generators/client/files-vue.js +56 -6
  45. package/generators/client/generator.spec.mjs +47 -0
  46. package/generators/client/index.js +127 -51
  47. package/generators/client/needle-api/needle-client-vue.js +5 -5
  48. package/generators/client/templates/angular/.eslintrc.json.ejs +1 -0
  49. package/generators/client/templates/angular/README.md.jhi.client.angular.ejs +48 -0
  50. package/generators/client/templates/angular/angular.json.ejs +0 -1
  51. package/generators/client/templates/angular/package.json +28 -25
  52. package/generators/client/templates/angular/package.json.ejs +18 -18
  53. package/generators/client/templates/angular/src/main/webapp/app/account/activate/activate.component.spec.ts.ejs +52 -54
  54. package/generators/client/templates/angular/src/main/webapp/app/account/activate/activate.service.spec.ts.ejs +65 -0
  55. package/generators/client/templates/angular/src/main/webapp/app/account/password/password-strength-bar/password-strength-bar.component.spec.ts.ejs +35 -37
  56. package/generators/client/templates/angular/src/main/webapp/app/account/password/password.component.spec.ts.ejs +78 -80
  57. package/generators/client/templates/angular/src/main/webapp/app/account/password/password.service.spec.ts.ejs +41 -0
  58. package/generators/client/templates/angular/src/main/webapp/app/account/password-reset/finish/password-reset-finish.component.spec.ts.ejs +73 -75
  59. package/generators/client/templates/angular/src/main/webapp/app/account/password-reset/finish/password-reset-finish.service.spec.ts.ejs +62 -0
  60. package/generators/client/templates/angular/src/main/webapp/app/account/password-reset/init/password-reset-init.component.spec.ts.ejs +44 -46
  61. package/generators/client/templates/angular/src/main/webapp/app/account/password-reset/init/password-reset-init.service.spec.ts.ejs +61 -0
  62. package/generators/client/templates/angular/src/main/webapp/app/account/register/register.component.spec.ts.ejs +116 -118
  63. package/generators/client/templates/angular/src/main/webapp/app/account/register/register.service.spec.ts.ejs +66 -0
  64. package/generators/client/templates/angular/src/main/webapp/app/account/sessions/sessions.component.spec.ts.ejs +75 -77
  65. package/generators/client/templates/angular/src/main/webapp/app/account/settings/settings.component.spec.ts.ejs +74 -76
  66. package/generators/client/templates/angular/src/main/webapp/app/admin/configuration/configuration.component.html.ejs +1 -1
  67. package/generators/client/templates/angular/src/main/webapp/app/admin/configuration/configuration.component.spec.ts.ejs +48 -50
  68. package/generators/client/templates/angular/src/main/webapp/app/admin/configuration/configuration.service.spec.ts.ejs +50 -52
  69. package/generators/client/templates/angular/src/main/webapp/app/admin/health/health.component.spec.ts.ejs +45 -47
  70. package/generators/client/templates/angular/src/main/webapp/app/admin/health/health.component.ts.ejs +1 -2
  71. package/generators/client/templates/angular/src/main/webapp/app/admin/health/health.service.spec.ts.ejs +66 -0
  72. package/generators/client/templates/angular/src/main/webapp/app/admin/health/modal/health-modal.component.spec.ts.ejs +99 -101
  73. package/generators/client/templates/angular/src/main/webapp/app/admin/health/modal/health-modal.component.ts.ejs +3 -5
  74. package/generators/client/templates/angular/src/main/webapp/app/admin/logs/logs.component.html.ejs +1 -1
  75. package/generators/client/templates/angular/src/main/webapp/app/admin/logs/logs.component.spec.ts.ejs +61 -63
  76. package/generators/client/templates/angular/src/main/webapp/app/admin/logs/logs.service.spec.ts.ejs +19 -21
  77. package/generators/client/templates/angular/src/main/webapp/app/admin/logs/logs.service.ts.ejs +1 -1
  78. package/generators/client/templates/angular/src/main/webapp/app/admin/metrics/blocks/jvm-memory/jvm-memory.component.html.ejs +2 -2
  79. package/generators/client/templates/angular/src/main/webapp/app/admin/metrics/blocks/metrics-system/metrics-system.component.ts.ejs +1 -1
  80. package/generators/client/templates/angular/src/main/webapp/app/admin/metrics/metrics.component.spec.ts.ejs +28 -30
  81. package/generators/client/templates/angular/src/main/webapp/app/admin/metrics/metrics.service.spec.ts.ejs +62 -64
  82. package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/delete/user-management-delete-dialog.component.spec.ts.ejs +35 -37
  83. package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/detail/user-management-detail.component.spec.ts.ejs +40 -42
  84. package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/list/user-management.component.html.ejs +1 -1
  85. package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/list/user-management.component.spec.ts.ejs +87 -89
  86. package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/list/user-management.component.ts.ejs +3 -3
  87. package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/service/user-management.service.spec.ts.ejs +41 -43
  88. package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/update/user-management-update.component.spec.ts.ejs +81 -83
  89. package/generators/client/templates/angular/src/main/webapp/app/app.constants.ts.ejs +0 -4
  90. package/generators/client/templates/angular/src/main/webapp/app/app.module.ts.ejs +3 -1
  91. package/generators/client/templates/angular/src/main/webapp/app/config/error.constants.ts.ejs +2 -2
  92. package/generators/client/templates/angular/src/main/webapp/app/config/translation.config.ts.ejs +1 -2
  93. package/generators/client/templates/angular/src/main/webapp/app/core/auth/account.service.spec.ts.ejs +179 -172
  94. package/generators/client/templates/angular/src/main/webapp/app/core/auth/account.service.ts.ejs +9 -9
  95. package/generators/client/templates/angular/src/main/webapp/app/core/config/application-config.service.ts.ejs +9 -0
  96. package/generators/client/templates/angular/src/main/webapp/app/core/util/data-util.service.spec.ts.ejs +2 -1
  97. package/generators/client/templates/angular/src/main/webapp/app/core/util/data-util.service.ts.ejs +14 -22
  98. package/generators/client/templates/angular/src/main/webapp/app/entities/user/user.service.spec.ts.ejs +87 -89
  99. package/generators/client/templates/angular/src/main/webapp/app/home/home.component.spec.ts.ejs +93 -95
  100. package/generators/client/templates/angular/src/main/webapp/app/layouts/main/main.component.spec.ts.ejs +166 -168
  101. package/generators/client/templates/angular/src/main/webapp/app/layouts/main/main.component.ts.ejs +2 -2
  102. package/generators/client/templates/angular/src/main/webapp/app/layouts/navbar/navbar.component.spec.ts.ejs +66 -68
  103. package/generators/client/templates/angular/src/main/webapp/app/layouts/navbar/navbar.component.ts.ejs +1 -1
  104. package/generators/client/templates/angular/src/main/webapp/app/layouts/profiles/page-ribbon.component.spec.ts.ejs +27 -29
  105. package/generators/client/templates/angular/src/main/webapp/app/login/login.component.spec.ts.ejs +112 -114
  106. package/generators/client/templates/angular/src/main/webapp/app/login/login.service.ts.ejs +1 -11
  107. package/generators/client/templates/angular/src/main/webapp/app/login/logout.model.ts.ejs +1 -1
  108. package/generators/client/templates/angular/src/main/webapp/app/shared/alert/alert-error.component.spec.ts.ejs +132 -134
  109. package/generators/client/templates/angular/src/main/webapp/app/shared/alert/alert.component.spec.ts.ejs +29 -31
  110. package/generators/client/templates/angular/src/main/webapp/app/shared/sort/sort-by.directive.spec.ts.ejs +24 -37
  111. package/generators/client/templates/angular/src/main/webapp/app/shared/sort/sort-by.directive.ts.ejs +5 -3
  112. package/generators/client/templates/angular/src/main/webapp/app/shared/sort/sort.directive.spec.ts.ejs +7 -5
  113. package/generators/client/templates/angular/src/main/webapp/app/shared/sort/sort.directive.ts.ejs +7 -10
  114. package/generators/client/templates/angular/src/main/webapp/declarations.d.ts.ejs +8 -1
  115. package/generators/client/templates/angular/webpack/environment.js.ejs +2 -2
  116. package/generators/client/templates/angular/webpack/logo-jhipster.png +0 -0
  117. package/generators/client/templates/angular/webpack/proxy.conf.js.ejs +2 -3
  118. package/generators/client/templates/angular/webpack/webpack.custom.js.ejs +23 -7
  119. package/generators/client/templates/angular/webpack/webpack.microfrontend.js.ejs +3 -3
  120. package/generators/client/templates/common/README.md.jhi.client.ejs +224 -0
  121. package/generators/client/templates/common/package.json +9 -10
  122. package/generators/client/templates/common/webpack/webpack.microfrontend.js.jhi.ejs +56 -0
  123. package/generators/client/templates/react/.eslintrc.json.ejs +1 -0
  124. package/generators/client/templates/react/jest.conf.js.ejs +7 -1
  125. package/generators/client/templates/react/package.json +61 -64
  126. package/generators/client/templates/react/package.json.ejs +22 -31
  127. package/generators/client/templates/react/src/main/webapp/app/app.scss.ejs +0 -3
  128. package/generators/client/templates/react/src/main/webapp/app/app.tsx.ejs +1 -2
  129. package/generators/client/templates/react/src/main/webapp/app/config/axios-interceptor.spec.ts.ejs +0 -3
  130. package/generators/client/templates/react/src/main/webapp/app/config/axios-interceptor.ts.ejs +0 -2
  131. package/generators/client/templates/react/src/main/webapp/app/config/constants.ts.ejs +0 -9
  132. package/generators/client/templates/react/src/main/webapp/app/config/error-middleware.ts.ejs +2 -2
  133. package/generators/client/templates/react/src/main/webapp/app/config/logger-middleware.ts.ejs +1 -1
  134. package/generators/client/templates/react/src/main/webapp/app/config/notification-middleware.ts.ejs +1 -3
  135. package/generators/client/templates/react/src/main/webapp/app/config/store.ts.ejs +1 -3
  136. package/generators/client/templates/react/src/main/webapp/app/modules/account/password/password.tsx.ejs +2 -2
  137. package/generators/client/templates/react/src/main/webapp/app/modules/account/settings/settings.reducer.spec.ts.ejs +0 -4
  138. package/generators/client/templates/react/src/main/webapp/app/modules/account/settings/settings.reducer.ts.ejs +1 -1
  139. package/generators/client/templates/react/src/main/webapp/app/modules/administration/administration.reducer.spec.ts.ejs +1 -2
  140. package/generators/client/templates/react/src/main/webapp/app/modules/administration/configuration/configuration.tsx.ejs +4 -4
  141. package/generators/client/templates/react/src/main/webapp/app/modules/administration/gateway/gateway.tsx.ejs +2 -2
  142. package/generators/client/templates/react/src/main/webapp/app/modules/administration/health/health-modal.tsx.ejs +1 -2
  143. package/generators/client/templates/react/src/main/webapp/app/modules/administration/health/health.tsx.ejs +3 -1
  144. package/generators/client/templates/react/src/main/webapp/app/modules/administration/metrics/metrics.tsx.ejs +6 -6
  145. package/generators/client/templates/react/src/main/webapp/app/modules/administration/user-management/user-management.tsx.ejs +8 -8
  146. package/generators/client/templates/react/src/main/webapp/app/modules/home/home.tsx.ejs +5 -1
  147. package/generators/client/templates/react/src/main/webapp/app/modules/login/logout.tsx.ejs +1 -6
  148. package/generators/client/templates/react/src/main/webapp/app/shared/auth/private-route.spec.tsx.ejs +0 -3
  149. package/generators/client/templates/react/src/main/webapp/app/shared/error/error-boundary-route.spec.tsx.ejs +0 -3
  150. package/generators/client/templates/react/src/main/webapp/app/shared/error/error-boundary.spec.tsx.ejs +0 -3
  151. package/generators/client/templates/react/src/main/webapp/app/shared/error/error-boundary.tsx.ejs +1 -2
  152. package/generators/client/templates/react/src/main/webapp/app/shared/layout/footer/footer.tsx.ejs +1 -1
  153. package/generators/client/templates/react/src/main/webapp/app/shared/layout/header/header-components.tsx.ejs +3 -5
  154. package/generators/client/templates/react/src/main/webapp/app/shared/layout/header/header.spec.tsx.ejs +0 -3
  155. package/generators/client/templates/react/src/main/webapp/app/shared/layout/header/header.tsx.ejs +1 -1
  156. package/generators/client/templates/react/src/main/webapp/app/shared/layout/menus/account.spec.tsx.ejs +0 -3
  157. package/generators/client/templates/react/src/main/webapp/app/shared/layout/menus/account.tsx.ejs +3 -3
  158. package/generators/client/templates/react/src/main/webapp/app/shared/layout/menus/admin.tsx.ejs +7 -7
  159. package/generators/client/templates/react/src/main/webapp/app/shared/layout/menus/menu-components.tsx.ejs +1 -1
  160. package/generators/client/templates/react/src/main/webapp/app/shared/reducers/authentication.spec.ts.ejs +1 -5
  161. package/generators/client/templates/react/src/main/webapp/app/shared/reducers/authentication.ts.ejs +0 -2
  162. package/generators/client/templates/react/src/main/webapp/app/shared/reducers/index.ts.ejs +12 -12
  163. package/generators/client/templates/react/src/main/webapp/app/shared/reducers/locale.ts.ejs +1 -1
  164. package/generators/client/templates/react/src/main/webapp/app/shared/reducers/reducer.utils.ts.ejs +0 -1
  165. package/generators/client/templates/react/src/main/webapp/app/shared/util/date-utils.ts.ejs +1 -1
  166. package/generators/client/templates/react/src/main/webapp/app/typings.d.ts.ejs +6 -0
  167. package/generators/client/templates/react/webpack/environment.js.ejs +35 -0
  168. package/generators/client/templates/react/webpack/webpack.common.js.ejs +31 -37
  169. package/generators/client/templates/react/webpack/webpack.dev.js.ejs +21 -7
  170. package/generators/client/templates/react/webpack/webpack.prod.js.ejs +14 -7
  171. package/generators/client/templates/vue/.eslintrc.js.ejs +8 -5
  172. package/generators/client/templates/vue/package.json +47 -55
  173. package/generators/client/templates/vue/package.json.ejs +33 -40
  174. package/generators/client/templates/vue/src/main/webapp/app/account/account.service.ts.ejs +4 -5
  175. package/generators/client/templates/vue/src/main/webapp/app/account/activate/activate.component.ts.ejs +2 -2
  176. package/generators/client/templates/vue/src/main/webapp/app/account/change-password/change-password.component.ts.ejs +1 -1
  177. package/generators/client/templates/vue/src/main/webapp/app/account/reset-password/finish/reset-password-finish.component.ts.ejs +1 -1
  178. package/generators/client/templates/vue/src/main/webapp/app/account/reset-password/init/reset-password-init.component.ts.ejs +1 -1
  179. package/generators/client/templates/vue/src/main/webapp/app/account/settings/settings.component.ts.ejs +1 -1
  180. package/generators/client/templates/vue/src/main/webapp/app/account/settings/settings.vue.ejs +7 -1
  181. package/generators/client/templates/vue/src/main/webapp/app/admin/configuration/configuration.component.ts.ejs +1 -1
  182. package/generators/client/templates/vue/src/main/webapp/app/admin/configuration/configuration.service.ts.ejs +1 -1
  183. package/generators/client/templates/vue/src/main/webapp/app/admin/configuration/configuration.vue.ejs +1 -1
  184. package/generators/client/templates/vue/src/main/webapp/app/admin/health/health-modal.component.ts.ejs +2 -4
  185. package/generators/client/templates/vue/src/main/webapp/app/admin/health/health.component.ts.ejs +1 -2
  186. package/generators/client/templates/vue/src/main/webapp/app/admin/health/health.service.ts.ejs +5 -9
  187. package/generators/client/templates/vue/src/main/webapp/app/admin/logs/logs.component.ts.ejs +2 -2
  188. package/generators/client/templates/vue/src/main/webapp/app/admin/logs/logs.service.ts.ejs +1 -1
  189. package/generators/client/templates/vue/src/main/webapp/app/admin/metrics/metrics.component.ts.ejs +1 -1
  190. package/generators/client/templates/vue/src/main/webapp/app/admin/metrics/metrics.service.ts.ejs +1 -6
  191. package/generators/client/templates/vue/src/main/webapp/app/admin/tracker/tracker.service.ts.ejs +5 -4
  192. package/generators/client/templates/vue/src/main/webapp/app/admin/user-management/user-management-edit.component.ts.ejs +9 -0
  193. package/generators/client/templates/vue/src/main/webapp/app/admin/user-management/user-management-view.component.ts.ejs +5 -0
  194. package/generators/client/templates/vue/src/main/webapp/app/admin/user-management/user-management.component.ts.ejs +6 -1
  195. package/generators/client/templates/vue/src/main/webapp/app/admin/user-management/user-management.service.ts.ejs +3 -2
  196. package/generators/client/templates/vue/src/main/webapp/app/constants.ts.ejs +18 -9
  197. package/generators/client/templates/vue/src/main/webapp/app/core/home/home.component.ts.ejs +1 -1
  198. package/generators/client/templates/vue/src/main/webapp/app/core/jhi-navbar/jhi-navbar.component.ts.ejs +16 -16
  199. package/generators/client/templates/vue/src/main/webapp/app/core/jhi-navbar/jhi-navbar.vue.ejs +6 -0
  200. package/generators/client/templates/vue/src/main/webapp/app/declarations.d.ts.ejs +41 -0
  201. package/generators/client/templates/vue/src/main/webapp/app/entities/entities-menu.component.ts.ejs +34 -0
  202. package/generators/client/templates/vue/src/main/webapp/app/entities/entities-menu.vue.ejs +13 -0
  203. package/generators/client/templates/vue/src/main/webapp/app/entities/entities.component.ts.ejs +12 -0
  204. package/generators/client/templates/vue/src/main/webapp/app/entities/entities.vue.ejs +5 -0
  205. package/generators/{common/templates/.huskyrc.ejs → client/templates/vue/src/main/webapp/app/index.ts.ejs} +1 -5
  206. package/generators/client/templates/vue/src/main/webapp/app/locale/translation.service.ts.ejs +26 -10
  207. package/generators/client/templates/vue/src/main/webapp/app/main.ts.ejs +12 -5
  208. package/generators/client/templates/vue/src/main/webapp/app/router/admin.ts.ejs +4 -4
  209. package/generators/client/templates/vue/src/main/webapp/app/router/entities.ts.ejs +44 -1
  210. package/generators/client/templates/vue/src/main/webapp/app/router/index.ts.ejs +11 -0
  211. package/generators/client/templates/vue/src/main/webapp/app/shared/alert/alert.service.ts.ejs +61 -0
  212. package/generators/client/templates/vue/src/main/webapp/app/shared/config/axios-interceptor.ts.ejs +5 -3
  213. package/generators/client/templates/vue/src/main/webapp/app/shared/config/config.ts.ejs +3 -1
  214. package/generators/client/templates/vue/src/main/webapp/app/shared/data/data-utils.service.ts.ejs +13 -18
  215. package/generators/client/templates/vue/src/main/webapp/app/shims-vue.d.ts.ejs +18 -0
  216. package/generators/client/templates/vue/src/test/javascript/jest.conf.js.ejs +28 -8
  217. package/generators/client/templates/vue/src/test/javascript/spec/app/account/account.service.spec.ts.ejs +2 -2
  218. package/generators/client/templates/vue/src/test/javascript/spec/app/account/login-form/login-form.component.spec.ts.ejs +1 -1
  219. package/generators/client/templates/vue/src/test/javascript/spec/app/admin/tracker/tracker.component.spec.ts.ejs +12 -12
  220. package/generators/client/templates/vue/src/test/javascript/spec/app/admin/tracker/tracker.service.spec.ts.ejs +2 -1
  221. package/generators/client/templates/vue/src/test/javascript/spec/app/admin/user-management/user-management-edit.component.spec.ts.ejs +3 -1
  222. package/generators/client/templates/vue/src/test/javascript/spec/app/admin/user-management/user-management-view.component.spec.ts.ejs +2 -1
  223. package/generators/client/templates/vue/src/test/javascript/spec/app/admin/user-management/user-management.component.spec.ts.ejs +3 -1
  224. package/generators/client/templates/vue/src/test/javascript/spec/app/entities/entities-menu.spec.ts.ejs +52 -0
  225. package/generators/client/templates/vue/src/test/javascript/spec/app/microfrontends/entities-menu.component.ts.ejs +4 -0
  226. package/generators/client/templates/vue/src/test/javascript/spec/app/microfrontends/entities-menu.vue.ejs +7 -0
  227. package/generators/client/templates/vue/src/test/javascript/spec/app/microfrontends/entities-router.ts.ejs +1 -0
  228. package/generators/client/templates/vue/src/test/javascript/spec/app/shared/alert/alert.service.spec.ts.ejs +124 -0
  229. package/generators/client/templates/vue/src/test/javascript/spec/app/shared/config/axios-interceptor.spec.ts.ejs +33 -1
  230. package/generators/client/templates/vue/src/test/javascript/spec/app/shared/data/data-utils.service.spec.ts.ejs +6 -6
  231. package/generators/client/templates/vue/tsconfig.json.ejs +5 -9
  232. package/generators/{server/templates/src/main/java/package/repository/search/SearchCouchbaseRepository.java.ejs → client/templates/vue/tsconfig.spec.json.ejs} +17 -21
  233. package/generators/client/templates/vue/webpack/config.js.ejs +50 -0
  234. package/generators/client/templates/vue/webpack/vue.utils.js.ejs +33 -32
  235. package/generators/client/templates/vue/webpack/webpack.common.js.ejs +164 -119
  236. package/generators/client/templates/vue/webpack/webpack.dev.js.ejs +19 -80
  237. package/generators/client/templates/vue/webpack/webpack.microfrontend.js.jhi.vue.ejs +77 -0
  238. package/generators/client/templates/vue/webpack/webpack.prod.js.ejs +5 -46
  239. package/generators/cloudfoundry/esm.mjs +21 -0
  240. package/generators/cloudfoundry/generator.spec.mjs +47 -0
  241. package/generators/cloudfoundry/index.js +38 -24
  242. package/generators/common/esm.mjs +21 -0
  243. package/generators/common/files.js +9 -2
  244. package/generators/common/generator.spec.mjs +47 -0
  245. package/generators/common/index.js +66 -11
  246. package/generators/common/templates/.husky/pre-commit +4 -0
  247. package/generators/common/templates/.prettierrc.ejs +1 -1
  248. package/generators/common/templates/{README.md.ejs → README.md.jhi.ejs} +85 -171
  249. package/generators/common/templates/package.json +5 -5
  250. package/generators/cypress/esm.mjs +21 -0
  251. package/generators/cypress/generator.spec.mjs +47 -0
  252. package/generators/cypress/index.js +17 -14
  253. package/generators/cypress/templates/cypress.json.ejs +8 -1
  254. package/generators/cypress/templates/src/test/javascript/cypress/integration/account/login-page.spec.ts.ejs +4 -4
  255. package/generators/cypress/templates/src/test/javascript/cypress/integration/account/password-page.spec.ts.ejs +2 -2
  256. package/generators/cypress/templates/src/test/javascript/cypress/integration/account/register-page.spec.ts.ejs +1 -1
  257. package/generators/cypress/templates/src/test/javascript/cypress/integration/account/reset-password-page.spec.ts.ejs +1 -1
  258. package/generators/cypress/templates/src/test/javascript/cypress/integration/account/settings-page.spec.ts.ejs +4 -4
  259. package/generators/cypress/templates/src/test/javascript/cypress/integration/administration/administration.spec.ts.ejs +1 -3
  260. package/generators/cypress/templates/src/test/javascript/cypress/integration/lighthouse.audits.ts.ejs +3 -3
  261. package/generators/cypress/templates/src/test/javascript/cypress/plugins/index.ts.ejs +6 -44
  262. package/generators/cypress/templates/src/test/javascript/cypress/support/commands.ts.ejs +30 -2
  263. package/generators/cypress/templates/src/test/javascript/cypress/support/entity.ts.ejs +4 -4
  264. package/generators/cypress/templates/src/test/javascript/cypress/support/index.ts.ejs +1 -1
  265. package/generators/cypress/templates/src/test/javascript/cypress/support/management.ts.ejs +1 -1
  266. package/generators/cypress/templates/src/test/javascript/cypress/support/navbar.ts.ejs +1 -1
  267. package/generators/cypress/templates/src/test/javascript/cypress/support/oauth2.ts.ejs +104 -79
  268. package/generators/database-changelog/esm.mjs +21 -0
  269. package/generators/database-changelog/generator.spec.mjs +47 -0
  270. package/generators/database-changelog/index.js +35 -24
  271. package/generators/database-changelog-liquibase/esm.mjs +21 -0
  272. package/generators/database-changelog-liquibase/generator.spec.mjs +47 -0
  273. package/generators/database-changelog-liquibase/index.js +17 -11
  274. package/generators/database-changelog-liquibase/templates/src/main/resources/config/liquibase/changelog/added_entity.xml.ejs +2 -1
  275. package/generators/database-changelog-liquibase/templates/src/main/resources/config/liquibase/changelog/updated_entity.xml.ejs +3 -3
  276. package/generators/database-changelog-liquibase/templates/src/main/resources/config/liquibase/changelog/updated_entity_constraints.xml.ejs +4 -4
  277. package/generators/docker-base.js +3 -3
  278. package/generators/docker-compose/esm.mjs +21 -0
  279. package/generators/docker-compose/generator.spec.mjs +44 -0
  280. package/generators/docker-compose/index.js +23 -11
  281. package/generators/docker-compose/templates/README-DOCKER-COMPOSE.md.ejs +1 -1
  282. package/generators/docker-compose/templates/realm-config/jhipster-realm.json.ejs +113 -39
  283. package/generators/docker-prompts.js +3 -3
  284. package/generators/entities/esm.mjs +21 -0
  285. package/generators/entities/generator.spec.mjs +47 -0
  286. package/generators/entities/index.js +37 -28
  287. package/generators/entities-client/esm.mjs +21 -0
  288. package/generators/entities-client/generator.spec.mjs +47 -0
  289. package/generators/entities-client/index.js +12 -9
  290. package/generators/entity/esm.mjs +21 -0
  291. package/generators/entity/generator.spec.mjs +47 -0
  292. package/generators/entity/index.js +54 -36
  293. package/generators/entity-client/esm.mjs +21 -0
  294. package/generators/entity-client/files.js +6 -11
  295. package/generators/entity-client/generator.spec.mjs +47 -0
  296. package/generators/entity-client/index.js +77 -10
  297. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/delete/entity-management-delete-dialog.component.spec.ts.ejs +42 -44
  298. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/detail/entity-management-detail.component.spec.ts.ejs +57 -54
  299. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/entity-management.module.ts.ejs +2 -2
  300. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/list/entity-management.component.html.ejs +2 -2
  301. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/list/entity-management.component.spec.ts.ejs +105 -107
  302. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/list/entity-management.component.ts.ejs +17 -4
  303. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/list/infinite-scroll-template.ejs +3 -4
  304. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/list/pagination-template.ejs +6 -0
  305. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/route/entity-management-routing-resolve.service.spec.ts.ejs +52 -54
  306. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/route/entity-management-routing.module.ts.ejs +1 -1
  307. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/service/entity.service.spec.ts.ejs +173 -175
  308. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/update/entity-management-update.component.html.ejs +2 -4
  309. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/update/entity-management-update.component.spec.ts.ejs +193 -195
  310. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/update/entity-management-update.component.ts.ejs +7 -0
  311. package/generators/entity-client/templates/common/src/test/javascript/cypress/integration/entity/entity.spec.ts.ejs +262 -110
  312. package/generators/entity-client/templates/react/src/main/webapp/app/entities/entity-delete-dialog.tsx.ejs +5 -2
  313. package/generators/entity-client/templates/react/src/main/webapp/app/entities/entity-update.tsx.ejs +26 -23
  314. package/generators/entity-client/templates/react/src/main/webapp/app/entities/entity.tsx.ejs +7 -7
  315. package/generators/entity-client/templates/vue/src/main/webapp/app/entities/entity-details.component.ts.ejs +5 -0
  316. package/generators/entity-client/templates/vue/src/main/webapp/app/entities/entity-update.component.ts.ejs +22 -3
  317. package/generators/entity-client/templates/vue/src/main/webapp/app/entities/entity-update.vue.ejs +6 -9
  318. package/generators/entity-client/templates/vue/src/main/webapp/app/entities/entity.component.ts.ejs +9 -1
  319. package/generators/entity-client/templates/vue/src/main/webapp/app/entities/entity.model.ts.ejs +1 -1
  320. package/generators/entity-client/templates/vue/src/main/webapp/app/entities/entity.service.ts.ejs +2 -6
  321. package/generators/entity-client/templates/vue/src/test/javascript/spec/app/entities/entity-details.component.spec.ts.ejs +2 -1
  322. package/generators/entity-client/templates/vue/src/test/javascript/spec/app/entities/entity-update.component.spec.ts.ejs +2 -0
  323. package/generators/entity-client/templates/vue/src/test/javascript/spec/app/entities/entity.component.spec.ts.ejs +3 -1
  324. package/generators/entity-client/templates/vue/src/test/javascript/spec/app/entities/entity.service.spec.ts.ejs +1 -1
  325. package/generators/entity-i18n/esm.mjs +21 -0
  326. package/generators/entity-i18n/files.js +61 -26
  327. package/generators/entity-i18n/generator.spec.mjs +47 -0
  328. package/generators/entity-i18n/index.js +12 -9
  329. package/generators/entity-i18n/templates/i18n/entity_hr.json.ejs +0 -0
  330. package/generators/entity-i18n/templates/i18n/entity_pa.json.ejs +69 -0
  331. package/generators/entity-server/esm.mjs +21 -0
  332. package/generators/entity-server/files-couchbase.js +73 -0
  333. package/generators/entity-server/files.js +102 -31
  334. package/generators/entity-server/generator.spec.mjs +47 -0
  335. package/generators/entity-server/index.js +29 -13
  336. package/generators/entity-server/templates/couchbase/src/main/java/package/domain/Entity.java.jhi.spring_data_couchbase.ejs +212 -0
  337. package/generators/entity-server/templates/couchbase/src/main/java/package/repository/EntityRepository.java.ejs +138 -0
  338. package/generators/entity-server/templates/{src → couchbase/src}/main/resources/config/couchmove/changelog/entity.fts.ejs +6 -3
  339. package/generators/entity-server/templates/partials/save_template.ejs +2 -2
  340. package/generators/entity-server/templates/src/main/java/package/common/search_stream_template.ejs +3 -3
  341. package/generators/entity-server/templates/src/main/java/package/common/search_template.ejs +2 -2
  342. package/generators/entity-server/templates/src/main/java/package/domain/Entity.java.jhi.ejs +375 -0
  343. package/generators/entity-server/templates/src/main/java/package/domain/Entity.java.jhi.elastic_search.ejs +25 -0
  344. package/generators/entity-server/templates/src/main/java/package/domain/Entity.java.jhi.hibernate_cache.ejs +41 -0
  345. package/generators/entity-server/templates/src/main/java/package/domain/Entity.java.jhi.javax_persistence.ejs +130 -0
  346. package/generators/entity-server/templates/src/main/java/package/domain/Entity.java.jhi.javax_validation.ejs +51 -0
  347. package/generators/entity-server/templates/src/main/java/package/domain/Entity.java.jhi.spring_data_cassandra.ejs +48 -0
  348. package/generators/entity-server/templates/src/main/java/package/domain/Entity.java.jhi.spring_data_mongodb.ejs +82 -0
  349. package/generators/entity-server/templates/src/main/java/package/domain/Entity.java.jhi.spring_data_neo4j.ejs +97 -0
  350. package/generators/entity-server/templates/src/main/java/package/domain/Entity.java.jhi.spring_data_reactive.ejs +114 -0
  351. package/generators/entity-server/templates/src/main/java/package/domain/enumeration/Enum.java.ejs +11 -4
  352. package/generators/entity-server/templates/src/main/java/package/repository/EntityRepository.java.ejs +10 -15
  353. package/generators/entity-server/templates/src/main/java/package/repository/EntityRepositoryInternalImpl_reactive.java.ejs +17 -30
  354. package/generators/entity-server/templates/src/main/java/package/repository/EntityRepository_reactive.java.ejs +6 -9
  355. package/generators/entity-server/templates/src/main/java/package/repository/EntitySqlHelper_reactive.java.ejs +46 -0
  356. package/generators/entity-server/templates/src/main/java/package/repository/rowmapper/EntityRowMapper.java.ejs +3 -3
  357. package/generators/entity-server/templates/src/main/java/package/repository/search/EntitySearchRepository.java.ejs +61 -10
  358. package/generators/entity-server/templates/src/main/java/package/service/EntityQueryService.java.ejs +12 -8
  359. package/generators/entity-server/templates/src/main/java/package/service/EntityService.java.ejs +4 -4
  360. package/generators/entity-server/templates/src/main/java/package/service/criteria/EntityCriteria.java.ejs +18 -13
  361. package/generators/entity-server/templates/src/main/java/package/service/dto/EntityDTO.java.ejs +8 -4
  362. package/generators/entity-server/templates/src/main/java/package/service/impl/EntityServiceImpl.java.ejs +9 -9
  363. package/generators/entity-server/templates/src/main/java/package/service/mapper/BaseEntityMapper.java.ejs +1 -1
  364. package/generators/entity-server/templates/src/main/java/package/service/mapper/EntityMapper.java.ejs +7 -3
  365. package/generators/entity-server/templates/src/main/java/package/web/rest/EntityResource.java.ejs +52 -54
  366. package/generators/entity-server/templates/src/test/java/package/domain/EntityTest.java.ejs +1 -1
  367. package/generators/entity-server/templates/src/test/java/package/repository/search/EntitySearchRepositoryMockConfiguration.java.ejs +1 -1
  368. package/generators/entity-server/templates/src/test/java/package/service/dto/EntityDTOTest.java.ejs +1 -1
  369. package/generators/entity-server/templates/src/test/java/package/service/mapper/EntityMapperTest.java.ejs +1 -1
  370. package/generators/entity-server/templates/src/test/java/package/web/rest/EntityResourceIT.java.ejs +36 -22
  371. package/generators/export-jdl/esm.mjs +21 -0
  372. package/generators/export-jdl/generator.spec.mjs +44 -0
  373. package/generators/export-jdl/index.js +2 -2
  374. package/generators/gae/esm.mjs +21 -0
  375. package/generators/gae/generator.spec.mjs +47 -0
  376. package/generators/gae/index.js +60 -41
  377. package/generators/gae/templates/dispatch.yaml.ejs +2 -2
  378. package/generators/generator-base-blueprint.js +35 -37
  379. package/generators/generator-base-docker.js +4 -24
  380. package/generators/generator-base-private.js +59 -116
  381. package/generators/generator-base.js +544 -91
  382. package/generators/generator-constants.js +43 -29
  383. package/generators/generator-defaults.js +1 -0
  384. package/generators/generator-list.js +27 -2
  385. package/generators/generator-transforms.js +31 -24
  386. package/generators/gradle/__snapshots__/generator.spec.cjs.snap +59 -0
  387. package/generators/gradle/constants.cjs +29 -0
  388. package/generators/gradle/files.cjs +37 -0
  389. package/generators/gradle/generator.spec.cjs +71 -0
  390. package/generators/gradle/index.cjs +136 -0
  391. package/generators/gradle/templates/.eslintignore.jhi.gradle.ejs +19 -0
  392. package/generators/gradle/templates/.gitignore.jhi.gradle.ejs +28 -0
  393. package/generators/gradle/templates/.prettierignore.jhi.gradle.ejs +22 -0
  394. package/generators/gradle/templates/build.gradle.jhi.ejs +48 -0
  395. package/generators/gradle/templates/gradle.properties.jhi.ejs +57 -0
  396. package/generators/gradle/templates/settings.gradle.jhi.ejs +20 -0
  397. package/generators/heroku/esm.mjs +21 -0
  398. package/generators/heroku/generator.spec.mjs +47 -0
  399. package/generators/heroku/index.js +92 -80
  400. package/generators/heroku/templates/Procfile.ejs +1 -1
  401. package/generators/heroku/templates/application-heroku.yml.ejs +9 -9
  402. package/generators/heroku/templates/bootstrap-heroku.yml.ejs +2 -2
  403. package/generators/heroku/templates/pom-profile.xml.ejs +1 -1
  404. package/generators/info/esm.mjs +21 -0
  405. package/generators/info/generator.spec.mjs +44 -0
  406. package/generators/info/index.js +4 -2
  407. package/generators/init/__snapshots__/generator.spec.cjs.snap +65 -0
  408. package/generators/init/config.cjs +36 -0
  409. package/generators/init/constants.cjs +35 -0
  410. package/generators/init/files.cjs +51 -0
  411. package/generators/init/generator.spec.cjs +112 -0
  412. package/generators/init/index.cjs +283 -0
  413. package/generators/init/mixin.cjs +76 -0
  414. package/generators/init/options.cjs +27 -0
  415. package/generators/init/templates/.editorconfig.jhi.ejs +40 -0
  416. package/generators/init/templates/.eslintignore.jhi.ejs +21 -0
  417. package/generators/init/templates/.gitattributes.jhi.ejs +170 -0
  418. package/generators/init/templates/.gitignore.jhi.ejs +128 -0
  419. package/generators/init/templates/.husky/pre-commit +4 -0
  420. package/generators/{client/templates/vue/webpack/utils.js.ejs → init/templates/.lintstagedrc.js.ejs} +1 -10
  421. package/generators/init/templates/.prettierignore.jhi.ejs +23 -0
  422. package/generators/init/templates/.prettierrc.yml.jhi.ejs +29 -0
  423. package/generators/init/templates/README.md.ejs +19 -0
  424. package/generators/init/templates/package.json +6 -0
  425. package/generators/init/templates/package.json.ejs +41 -0
  426. package/generators/java/__snapshots__/generator.spec.cjs.snap +118 -0
  427. package/generators/java/config.cjs +43 -0
  428. package/generators/java/constants.cjs +69 -0
  429. package/generators/java/files.cjs +26 -0
  430. package/generators/java/generator.spec.cjs +87 -0
  431. package/generators/java/index.cjs +226 -0
  432. package/generators/java/mixin.cjs +120 -0
  433. package/generators/java/options.cjs +32 -0
  434. package/generators/java/templates/.editorconfig.jhi.java.ejs +23 -0
  435. package/generators/java/templates/.gitignore.jhi.java.ejs +34 -0
  436. package/generators/java/templates/.prettierrc.yml.jhi.java.ejs +25 -0
  437. package/generators/kubernetes/esm.mjs +21 -0
  438. package/generators/kubernetes/files.js +20 -8
  439. package/generators/kubernetes/generator.spec.mjs +44 -0
  440. package/generators/kubernetes/index.js +126 -64
  441. package/generators/kubernetes/kubernetes-constants.js +50 -0
  442. package/generators/kubernetes/prompts.js +25 -16
  443. package/generators/kubernetes/templates/README-KUBERNETES.md.ejs +12 -13
  444. package/generators/kubernetes/templates/db/couchbase.yml.ejs +3 -3
  445. package/generators/kubernetes/templates/db/elasticsearch.yml.ejs +5 -5
  446. package/generators/kubernetes/templates/db/mariadb.yml.ejs +5 -5
  447. package/generators/kubernetes/templates/db/mongodb.yml.ejs +2 -2
  448. package/generators/kubernetes/templates/db/mssql.yml.ejs +5 -5
  449. package/generators/kubernetes/templates/db/mysql.yml.ejs +5 -5
  450. package/generators/kubernetes/templates/db/neo4j.yml.ejs +5 -5
  451. package/generators/kubernetes/templates/db/postgresql.yml.ejs +5 -5
  452. package/generators/kubernetes/templates/deployment.yml.ejs +61 -56
  453. package/generators/kubernetes/templates/ingress.yml.ejs +2 -2
  454. package/generators/kubernetes/templates/istio/destination-rule.yml.ejs +1 -1
  455. package/generators/kubernetes/templates/istio/gateway/grafana-gateway.yml.ejs +5 -2
  456. package/generators/kubernetes/templates/istio/gateway/jhipster-grafana-gateway.yml.ejs +5 -2
  457. package/generators/kubernetes/templates/istio/gateway/kiali-gateway.yml.ejs +10 -8
  458. package/generators/kubernetes/templates/istio/gateway/zipkin-gateway.yml.ejs +5 -2
  459. package/generators/kubernetes/templates/istio/gateway.yml.ejs +11 -9
  460. package/generators/kubernetes/templates/kubectl-apply.sh.ejs +24 -23
  461. package/generators/kubernetes/templates/kustomize/kustomization.yml.ejs +27 -27
  462. package/generators/kubernetes/templates/messagebroker/kafka.yml.ejs +4 -4
  463. package/generators/kubernetes/templates/monitoring/jhipster-grafana-dashboard.yml.ejs +2 -2
  464. package/generators/kubernetes/templates/monitoring/jhipster-grafana.yml.ejs +6 -6
  465. package/generators/kubernetes/templates/monitoring/jhipster-prometheus-crd.yml.ejs +2 -2
  466. package/generators/kubernetes/templates/registry/application-configmap.yml.ejs +6 -6
  467. package/generators/kubernetes/templates/registry/consul.yml.ejs +2 -2
  468. package/generators/kubernetes/templates/registry/jhipster-registry.yml.ejs +4 -4
  469. package/generators/kubernetes/templates/secret/couchbase-secret.yml.ejs +9 -0
  470. package/generators/kubernetes/templates/service.yml.ejs +8 -8
  471. package/generators/kubernetes-base.js +44 -18
  472. package/generators/kubernetes-helm/esm.mjs +21 -0
  473. package/generators/kubernetes-helm/files.js +20 -21
  474. package/generators/kubernetes-helm/generator.spec.mjs +44 -0
  475. package/generators/kubernetes-helm/index.js +106 -46
  476. package/generators/kubernetes-helm/templates/README-KUBERNETES-HELM.md.ejs +2 -3
  477. package/generators/kubernetes-helm/templates/app/Chart.yml.ejs +27 -0
  478. package/generators/kubernetes-helm/templates/app/helpers.tpl.ejs +4 -15
  479. package/generators/kubernetes-helm/templates/app/requirements.yml.ejs +11 -6
  480. package/generators/kubernetes-helm/templates/app/values.yml.ejs +73 -10
  481. package/generators/kubernetes-helm/templates/csvc/Chart.yml.ejs +17 -0
  482. package/generators/kubernetes-helm/templates/csvc/helpers.tpl.ejs +1 -1
  483. package/generators/kubernetes-helm/templates/csvc/requirements.yml.ejs +3 -3
  484. package/generators/kubernetes-helm/templates/csvc/values.yml.ejs +6 -6
  485. package/generators/kubernetes-helm/templates/helm-apply.sh.ejs +2 -2
  486. package/generators/kubernetes-helm/templates/helm-upgrade.sh.ejs +1 -1
  487. package/generators/kubernetes-knative/esm.mjs +21 -0
  488. package/generators/kubernetes-knative/files.js +30 -19
  489. package/generators/kubernetes-knative/generator.spec.mjs +44 -0
  490. package/generators/kubernetes-knative/index.js +134 -72
  491. package/generators/kubernetes-knative/prompts.js +7 -3
  492. package/generators/kubernetes-knative/templates/README-KUBERNETES-KNATIVE.md.ejs +5 -5
  493. package/generators/kubernetes-knative/templates/helm-apply.sh.ejs +1 -1
  494. package/generators/kubernetes-knative/templates/istio/gateway.yml.ejs +10 -8
  495. package/generators/kubernetes-knative/templates/kubectl-apply.sh.ejs +24 -19
  496. package/generators/kubernetes-knative/templates/service.yml.ejs +32 -32
  497. package/generators/languages/esm.mjs +21 -0
  498. package/generators/languages/files.js +73 -0
  499. package/generators/languages/generator.spec.mjs +47 -0
  500. package/generators/languages/index.js +45 -22
  501. package/generators/languages/prompts.js +1 -1
  502. package/generators/languages/templates/src/main/resources/i18n/messages_hr.properties.ejs +0 -0
  503. package/generators/languages/templates/src/main/resources/i18n/messages_pa.properties.ejs +41 -0
  504. package/generators/languages/templates/src/main/webapp/i18n/al/global.json.ejs +2 -2
  505. package/generators/languages/templates/src/main/webapp/i18n/al/health.json.ejs +17 -15
  506. package/generators/languages/templates/src/main/webapp/i18n/ar-ly/global.json.ejs +2 -2
  507. package/generators/languages/templates/src/main/webapp/i18n/ar-ly/health.json.ejs +17 -15
  508. package/generators/languages/templates/src/main/webapp/i18n/bg/global.json.ejs +2 -2
  509. package/generators/languages/templates/src/main/webapp/i18n/bg/health.json.ejs +19 -16
  510. package/generators/languages/templates/src/main/webapp/i18n/bn/global.json.ejs +2 -2
  511. package/generators/languages/templates/src/main/webapp/i18n/bn/health.json.ejs +17 -15
  512. package/generators/languages/templates/src/main/webapp/i18n/by/global.json.ejs +2 -2
  513. package/generators/languages/templates/src/main/webapp/i18n/by/health.json.ejs +17 -15
  514. package/generators/languages/templates/src/main/webapp/i18n/ca/global.json.ejs +2 -2
  515. package/generators/languages/templates/src/main/webapp/i18n/ca/health.json.ejs +17 -15
  516. package/generators/languages/templates/src/main/webapp/i18n/cs/global.json.ejs +2 -2
  517. package/generators/languages/templates/src/main/webapp/i18n/cs/health.json.ejs +17 -15
  518. package/generators/languages/templates/src/main/webapp/i18n/da/global.json.ejs +2 -2
  519. package/generators/languages/templates/src/main/webapp/i18n/da/health.json.ejs +17 -15
  520. package/generators/languages/templates/src/main/webapp/i18n/de/global.json.ejs +2 -2
  521. package/generators/languages/templates/src/main/webapp/i18n/de/health.json.ejs +17 -15
  522. package/generators/languages/templates/src/main/webapp/i18n/el/global.json.ejs +2 -2
  523. package/generators/languages/templates/src/main/webapp/i18n/el/health.json.ejs +17 -15
  524. package/generators/languages/templates/src/main/webapp/i18n/en/global.json.ejs +2 -2
  525. package/generators/languages/templates/src/main/webapp/i18n/en/health.json.ejs +17 -15
  526. package/generators/languages/templates/src/main/webapp/i18n/es/global.json.ejs +2 -2
  527. package/generators/languages/templates/src/main/webapp/i18n/es/health.json.ejs +17 -15
  528. package/generators/languages/templates/src/main/webapp/i18n/et/global.json.ejs +2 -2
  529. package/generators/languages/templates/src/main/webapp/i18n/et/health.json.ejs +17 -15
  530. package/generators/languages/templates/src/main/webapp/i18n/fa/global.json.ejs +2 -2
  531. package/generators/languages/templates/src/main/webapp/i18n/fa/health.json.ejs +17 -15
  532. package/generators/languages/templates/src/main/webapp/i18n/fi/global.json.ejs +2 -2
  533. package/generators/languages/templates/src/main/webapp/i18n/fi/health.json.ejs +17 -15
  534. package/generators/languages/templates/src/main/webapp/i18n/fr/global.json.ejs +2 -2
  535. package/generators/languages/templates/src/main/webapp/i18n/fr/health.json.ejs +17 -15
  536. package/generators/languages/templates/src/main/webapp/i18n/gl/global.json.ejs +2 -2
  537. package/generators/languages/templates/src/main/webapp/i18n/gl/health.json.ejs +17 -15
  538. package/generators/languages/templates/src/main/webapp/i18n/hi/global.json.ejs +2 -2
  539. package/generators/languages/templates/src/main/webapp/i18n/hi/health.json.ejs +17 -15
  540. package/generators/languages/templates/src/main/webapp/i18n/hr/activate.json.ejs +0 -0
  541. package/generators/languages/templates/src/main/webapp/i18n/hr/configuration.json +0 -0
  542. package/generators/languages/templates/src/main/webapp/i18n/hr/error.json +0 -0
  543. package/generators/languages/templates/src/main/webapp/i18n/hr/gateway.json +0 -0
  544. package/generators/languages/templates/src/main/webapp/i18n/hr/global.json.ejs +2 -2
  545. package/generators/languages/templates/src/main/webapp/i18n/hr/health.json.ejs +15 -13
  546. package/generators/languages/templates/src/main/webapp/i18n/hr/home.json +0 -0
  547. package/generators/languages/templates/src/main/webapp/i18n/hr/login.json +0 -0
  548. package/generators/languages/templates/src/main/webapp/i18n/hr/logs.json +0 -0
  549. package/generators/languages/templates/src/main/webapp/i18n/hr/metrics.json +0 -0
  550. package/generators/languages/templates/src/main/webapp/i18n/hr/password.json +0 -0
  551. package/generators/languages/templates/src/main/webapp/i18n/hr/register.json +0 -0
  552. package/generators/languages/templates/src/main/webapp/i18n/hr/reset.json.ejs +1 -2
  553. package/generators/languages/templates/src/main/webapp/i18n/hr/sessions.json +0 -0
  554. package/generators/languages/templates/src/main/webapp/i18n/hr/settings.json +0 -0
  555. package/generators/languages/templates/src/main/webapp/i18n/hr/tracker.json +0 -0
  556. package/generators/languages/templates/src/main/webapp/i18n/hr/user-management.json +0 -0
  557. package/generators/languages/templates/src/main/webapp/i18n/hu/global.json.ejs +2 -2
  558. package/generators/languages/templates/src/main/webapp/i18n/hu/health.json.ejs +17 -15
  559. package/generators/languages/templates/src/main/webapp/i18n/hy/global.json.ejs +2 -2
  560. package/generators/languages/templates/src/main/webapp/i18n/hy/health.json.ejs +17 -15
  561. package/generators/languages/templates/src/main/webapp/i18n/in/global.json.ejs +2 -2
  562. package/generators/languages/templates/src/main/webapp/i18n/in/health.json.ejs +17 -15
  563. package/generators/languages/templates/src/main/webapp/i18n/it/global.json.ejs +2 -2
  564. package/generators/languages/templates/src/main/webapp/i18n/it/health.json.ejs +17 -15
  565. package/generators/languages/templates/src/main/webapp/i18n/ja/global.json.ejs +2 -2
  566. package/generators/languages/templates/src/main/webapp/i18n/ja/health.json.ejs +17 -15
  567. package/generators/languages/templates/src/main/webapp/i18n/ko/global.json.ejs +2 -2
  568. package/generators/languages/templates/src/main/webapp/i18n/ko/health.json.ejs +17 -15
  569. package/generators/languages/templates/src/main/webapp/i18n/mr/global.json.ejs +2 -2
  570. package/generators/languages/templates/src/main/webapp/i18n/mr/health.json.ejs +17 -15
  571. package/generators/languages/templates/src/main/webapp/i18n/my/global.json.ejs +2 -2
  572. package/generators/languages/templates/src/main/webapp/i18n/my/health.json.ejs +17 -15
  573. package/generators/languages/templates/src/main/webapp/i18n/nl/global.json.ejs +2 -2
  574. package/generators/languages/templates/src/main/webapp/i18n/nl/health.json.ejs +17 -15
  575. package/generators/languages/templates/src/main/webapp/i18n/pa/activate.json.ejs +27 -0
  576. package/generators/languages/templates/src/main/webapp/i18n/pa/configuration.json +10 -0
  577. package/generators/languages/templates/src/main/webapp/i18n/pa/error.json +14 -0
  578. package/generators/languages/templates/src/main/webapp/i18n/pa/gateway.json +15 -0
  579. package/generators/languages/templates/src/main/webapp/i18n/pa/global.json.ejs +162 -0
  580. package/generators/languages/templates/src/main/webapp/i18n/pa/health.json.ejs +71 -0
  581. package/generators/languages/templates/src/main/webapp/i18n/pa/home.json +19 -0
  582. package/generators/languages/templates/src/main/webapp/i18n/pa/login.json +19 -0
  583. package/generators/languages/templates/src/main/webapp/i18n/pa/logs.json +11 -0
  584. package/generators/languages/templates/src/main/webapp/i18n/pa/metrics.json +102 -0
  585. package/generators/languages/templates/src/main/webapp/i18n/pa/password.json +12 -0
  586. package/generators/languages/templates/src/main/webapp/i18n/pa/register.json +24 -0
  587. package/generators/languages/templates/src/main/webapp/i18n/pa/reset.json.ejs +44 -0
  588. package/generators/languages/templates/src/main/webapp/i18n/pa/sessions.json +15 -0
  589. package/generators/languages/templates/src/main/webapp/i18n/pa/settings.json +32 -0
  590. package/generators/languages/templates/src/main/webapp/i18n/pa/tracker.json +12 -0
  591. package/generators/languages/templates/src/main/webapp/i18n/pa/user-management.json +31 -0
  592. package/generators/languages/templates/src/main/webapp/i18n/pl/global.json.ejs +2 -2
  593. package/generators/languages/templates/src/main/webapp/i18n/pl/health.json.ejs +17 -15
  594. package/generators/languages/templates/src/main/webapp/i18n/pt-br/global.json.ejs +2 -2
  595. package/generators/languages/templates/src/main/webapp/i18n/pt-br/health.json.ejs +17 -15
  596. package/generators/languages/templates/src/main/webapp/i18n/pt-pt/global.json.ejs +2 -2
  597. package/generators/languages/templates/src/main/webapp/i18n/pt-pt/health.json.ejs +17 -15
  598. package/generators/languages/templates/src/main/webapp/i18n/ro/global.json.ejs +2 -2
  599. package/generators/languages/templates/src/main/webapp/i18n/ro/health.json.ejs +17 -15
  600. package/generators/languages/templates/src/main/webapp/i18n/ru/global.json.ejs +2 -2
  601. package/generators/languages/templates/src/main/webapp/i18n/ru/health.json.ejs +17 -15
  602. package/generators/languages/templates/src/main/webapp/i18n/si/global.json.ejs +2 -2
  603. package/generators/languages/templates/src/main/webapp/i18n/si/health.json.ejs +17 -15
  604. package/generators/languages/templates/src/main/webapp/i18n/sk/global.json.ejs +2 -2
  605. package/generators/languages/templates/src/main/webapp/i18n/sk/health.json.ejs +17 -15
  606. package/generators/languages/templates/src/main/webapp/i18n/sr/global.json.ejs +2 -2
  607. package/generators/languages/templates/src/main/webapp/i18n/sr/health.json.ejs +16 -14
  608. package/generators/languages/templates/src/main/webapp/i18n/sv/global.json.ejs +2 -2
  609. package/generators/languages/templates/src/main/webapp/i18n/sv/health.json.ejs +17 -15
  610. package/generators/languages/templates/src/main/webapp/i18n/ta/global.json.ejs +2 -2
  611. package/generators/languages/templates/src/main/webapp/i18n/ta/health.json.ejs +17 -15
  612. package/generators/languages/templates/src/main/webapp/i18n/te/global.json.ejs +2 -2
  613. package/generators/languages/templates/src/main/webapp/i18n/te/health.json.ejs +17 -15
  614. package/generators/languages/templates/src/main/webapp/i18n/th/global.json.ejs +2 -2
  615. package/generators/languages/templates/src/main/webapp/i18n/th/health.json.ejs +17 -15
  616. package/generators/languages/templates/src/main/webapp/i18n/tr/global.json.ejs +2 -2
  617. package/generators/languages/templates/src/main/webapp/i18n/tr/health.json.ejs +17 -15
  618. package/generators/languages/templates/src/main/webapp/i18n/ua/global.json.ejs +2 -2
  619. package/generators/languages/templates/src/main/webapp/i18n/ua/health.json.ejs +17 -15
  620. package/generators/languages/templates/src/main/webapp/i18n/uz-Cyrl-uz/global.json.ejs +2 -2
  621. package/generators/languages/templates/src/main/webapp/i18n/uz-Cyrl-uz/health.json.ejs +16 -14
  622. package/generators/languages/templates/src/main/webapp/i18n/uz-Latn-uz/global.json.ejs +2 -2
  623. package/generators/languages/templates/src/main/webapp/i18n/uz-Latn-uz/health.json.ejs +17 -15
  624. package/generators/languages/templates/src/main/webapp/i18n/vi/global.json.ejs +2 -2
  625. package/generators/languages/templates/src/main/webapp/i18n/vi/health.json.ejs +17 -15
  626. package/generators/languages/templates/src/main/webapp/i18n/zh-cn/global.json.ejs +2 -2
  627. package/generators/languages/templates/src/main/webapp/i18n/zh-cn/health.json.ejs +17 -15
  628. package/generators/languages/templates/src/main/webapp/i18n/zh-tw/global.json.ejs +2 -2
  629. package/generators/languages/templates/src/main/webapp/i18n/zh-tw/health.json.ejs +17 -15
  630. package/generators/languages/templates/src/test/resources/i18n/messages_hr.properties.ejs +0 -0
  631. package/generators/languages/templates/src/test/resources/i18n/messages_pa.properties.ejs +4 -0
  632. package/generators/maven/__snapshots__/generator.spec.cjs.snap +53 -0
  633. package/generators/maven/constants.cjs +27 -0
  634. package/generators/maven/files.cjs +36 -0
  635. package/generators/maven/generator.spec.cjs +78 -0
  636. package/generators/maven/index.cjs +131 -0
  637. package/generators/maven/templates/.eslintignore.jhi.maven.ejs +19 -0
  638. package/generators/maven/templates/.gitignore.jhi.maven.ejs +9 -0
  639. package/generators/maven/templates/.mvn/wrapper/MavenWrapperDownloader.java +117 -0
  640. package/generators/maven/templates/.mvn/wrapper/maven-wrapper.jar +0 -0
  641. package/generators/maven/templates/.mvn/wrapper/maven-wrapper.properties +2 -0
  642. package/generators/maven/templates/.prettierignore.jhi.maven.ejs +3 -0
  643. package/generators/maven/templates/mvnw +310 -0
  644. package/generators/maven/templates/mvnw.cmd +182 -0
  645. package/generators/maven/templates/pom.xml.jhi.ejs +98 -0
  646. package/generators/openapi-client/esm.mjs +21 -0
  647. package/generators/openapi-client/files.js +21 -15
  648. package/generators/openapi-client/generator.spec.mjs +47 -0
  649. package/generators/openapi-client/index.js +80 -28
  650. package/generators/openapi-client/prompts.js +6 -2
  651. package/generators/openshift/esm.mjs +21 -0
  652. package/generators/openshift/files.js +12 -5
  653. package/generators/openshift/generator.spec.mjs +44 -0
  654. package/generators/openshift/index.js +136 -64
  655. package/generators/openshift/prompts.js +12 -4
  656. package/generators/openshift/templates/apply.sh.ejs +6 -6
  657. package/generators/openshift/templates/db/cassandra.yml.ejs +8 -9
  658. package/generators/openshift/templates/db/couchbase.yml.ejs +8 -9
  659. package/generators/openshift/templates/db/elasticsearch.yml.ejs +8 -9
  660. package/generators/openshift/templates/db/mariadb.yml.ejs +8 -9
  661. package/generators/openshift/templates/db/mongodb.yml.ejs +8 -9
  662. package/generators/openshift/templates/db/mysql.yml.ejs +8 -9
  663. package/generators/openshift/templates/db/postgresql.yml.ejs +8 -9
  664. package/generators/openshift/templates/deployment.yml.ejs +46 -46
  665. package/generators/openshift/templates/messagebroker/kafka.yml.ejs +13 -14
  666. package/generators/openshift/templates/monitoring/jhipster-metrics.yml.ejs +17 -17
  667. package/generators/openshift/templates/registry/application-configmap.yml.ejs +6 -6
  668. package/generators/options.js +63 -0
  669. package/generators/page/esm.mjs +21 -0
  670. package/generators/page/generator.spec.mjs +47 -0
  671. package/generators/page/index.js +17 -13
  672. package/generators/project-name/config.cjs +40 -0
  673. package/generators/project-name/constants.cjs +37 -0
  674. package/generators/project-name/generator.spec.cjs +43 -0
  675. package/generators/project-name/index.cjs +194 -0
  676. package/generators/project-name/mixin.cjs +82 -0
  677. package/generators/project-name/options.cjs +33 -0
  678. package/generators/server/__snapshots__/generator.spec.mjs.snap +1848 -0
  679. package/generators/server/esm.mjs +21 -0
  680. package/generators/server/files-couchbase.js +155 -0
  681. package/generators/server/files-sql.js +52 -0
  682. package/generators/server/files.js +302 -286
  683. package/generators/server/generator.spec.mjs +52 -0
  684. package/generators/server/index.js +193 -97
  685. package/generators/server/needle-api/needle-server-cache.js +7 -8
  686. package/generators/server/prompts.js +104 -62
  687. package/generators/server/templates/.mvn/wrapper/MavenWrapperDownloader.java +1 -1
  688. package/generators/server/templates/.mvn/wrapper/maven-wrapper.properties +1 -1
  689. package/generators/server/templates/build.gradle.ejs +43 -9
  690. package/generators/server/templates/checkstyle.xml.ejs +2 -2
  691. package/generators/server/templates/{src → couchbase/src}/main/docker/couchbase/Couchbase.Dockerfile.ejs +0 -0
  692. package/generators/server/templates/{src → couchbase/src}/main/docker/couchbase/scripts/configure-node.sh.ejs +4 -4
  693. package/generators/server/templates/{src → couchbase/src}/main/docker/couchbase-cluster.yml.ejs +0 -0
  694. package/generators/server/templates/{src → couchbase/src}/main/docker/couchbase.yml.ejs +0 -0
  695. package/generators/server/templates/couchbase/src/main/java/package/config/couchbase/CustomCouchbaseRepositoryFactory.java.ejs +83 -0
  696. package/generators/server/templates/couchbase/src/main/java/package/config/couchbase/CustomCouchbaseRepositoryFactoryBean.java.ejs +40 -0
  697. package/generators/server/templates/couchbase/src/main/java/package/config/couchbase/CustomCouchbaseRepositoryQuery.java.ejs +44 -0
  698. package/generators/server/templates/couchbase/src/main/java/package/config/couchbase/CustomN1qlQueryCreator.java.ejs +162 -0
  699. package/generators/server/templates/couchbase/src/main/java/package/config/couchbase/CustomN1qlRepositoryQueryExecutor.java.ejs +104 -0
  700. package/generators/server/templates/couchbase/src/main/java/package/config/couchbase/package-info.java.ejs +25 -0
  701. package/generators/server/templates/couchbase/src/main/java/package/repository/JHipsterCouchbaseRepository.java.ejs +114 -0
  702. package/generators/server/templates/couchbase/src/main/java/package/repository/PersistentTokenRepository_couchbase.java.ejs +49 -0
  703. package/generators/server/templates/{src → couchbase/src}/main/resources/config/couchmove/changelog/V0.1__initial_setup/ROLE_ADMIN.json.ejs +0 -0
  704. package/generators/server/templates/{src → couchbase/src}/main/resources/config/couchmove/changelog/V0.1__initial_setup/ROLE_USER.json.ejs +0 -0
  705. package/generators/server/templates/couchbase/src/main/resources/config/couchmove/changelog/V0.1__initial_setup/user__admin.json.ejs +18 -0
  706. package/generators/server/templates/couchbase/src/main/resources/config/couchmove/changelog/V0.1__initial_setup/user__user.json.ejs +17 -0
  707. package/generators/server/templates/{src → couchbase/src}/main/resources/config/couchmove/changelog/V0__create_indexes.n1ql.ejs +3 -6
  708. package/generators/server/templates/couchbase/src/test/java/package/CouchbaseTestContainerExtension.java.ejs +55 -0
  709. package/generators/server/templates/{src/test/java/package/repository/CustomN1qlCouchbaseRepositoryTest.java.ejs → couchbase/src/test/java/package/repository/JHipsterCouchbaseRepositoryTest.java.ejs} +3 -4
  710. package/generators/server/templates/gradle/docker.gradle.ejs +3 -3
  711. package/generators/server/templates/gradle/profile_dev.gradle.ejs +36 -12
  712. package/generators/server/templates/gradle/profile_prod.gradle.ejs +7 -7
  713. package/generators/server/templates/gradle/war.gradle.ejs +4 -4
  714. package/generators/server/templates/gradle.properties.ejs +21 -17
  715. package/generators/server/templates/mvnw +1 -1
  716. package/generators/server/templates/mvnw.cmd +1 -1
  717. package/generators/server/templates/npmw +1 -1
  718. package/generators/server/templates/npmw.cmd +1 -1
  719. package/generators/server/templates/package.json.ejs +4 -8
  720. package/generators/server/templates/pom.xml.ejs +352 -160
  721. package/generators/server/templates/settings.gradle.ejs +38 -9
  722. package/generators/server/templates/sql/reactive/src/main/java/package/repository/UserSqlHelper.java.ejs +48 -0
  723. package/generators/server/templates/src/main/docker/app.yml.ejs +80 -75
  724. package/generators/server/templates/src/main/docker/config/README.md.ejs +2 -2
  725. package/generators/server/templates/src/main/docker/config/realm-config/jhipster-realm.json.ejs +117 -41
  726. package/generators/server/templates/src/main/docker/elasticsearch.yml.ejs +12 -1
  727. package/generators/server/templates/src/main/docker/jhipster-control-center.yml.ejs +8 -8
  728. package/generators/server/templates/src/main/docker/jhipster-registry.yml.ejs +3 -3
  729. package/generators/server/templates/src/main/docker/prometheus/prometheus.yml.ejs +1 -1
  730. package/generators/server/templates/src/main/java/package/Application.java.ejs +6 -5
  731. package/generators/server/templates/src/main/java/package/aop/logging/LoggingAspect.java.ejs +1 -1
  732. package/generators/server/templates/src/main/java/package/client/OAuth2InterceptedFeignConfiguration.java.ejs +1 -1
  733. package/generators/server/templates/src/main/java/package/config/CacheConfiguration.java.ejs +94 -96
  734. package/generators/server/templates/src/main/java/package/config/Constants.java.ejs +8 -8
  735. package/generators/server/templates/src/main/java/package/config/DatabaseConfiguration_cassandra.java.ejs +2 -8
  736. package/generators/server/templates/src/main/java/package/config/DatabaseConfiguration_couchbase.java.ejs +116 -33
  737. package/generators/server/templates/src/main/java/package/config/DatabaseConfiguration_mongodb.java.ejs +4 -6
  738. package/generators/server/templates/src/main/java/package/config/DatabaseConfiguration_neo4j.java.ejs +4 -6
  739. package/generators/server/templates/src/main/java/package/config/DatabaseConfiguration_sql.java.ejs +13 -13
  740. package/generators/server/templates/src/main/java/package/config/ElasticsearchConfiguration.java.ejs +5 -4
  741. package/generators/server/templates/src/main/java/package/config/FeignConfiguration.java.ejs +6 -1
  742. package/generators/server/templates/src/main/java/package/config/JacksonConfiguration.java.ejs +3 -3
  743. package/generators/server/templates/src/main/java/package/config/LiquibaseConfiguration.java.ejs +5 -5
  744. package/generators/server/templates/src/main/java/package/config/LocaleConfiguration.java.ejs +1 -4
  745. package/generators/server/templates/src/main/java/package/config/LoggingConfiguration.java.ejs +13 -13
  746. package/generators/server/templates/src/main/java/package/config/OAuth2Configuration.java.ejs +38 -0
  747. package/generators/server/templates/src/main/java/package/config/SecurityConfiguration.java.ejs +99 -102
  748. package/generators/server/templates/src/main/java/package/config/SecurityConfiguration_reactive.java.ejs +114 -66
  749. package/generators/server/templates/src/main/java/package/config/WebConfigurer.java.ejs +31 -32
  750. package/generators/server/templates/src/main/java/package/config/WebsocketSecurityConfiguration.java.ejs +4 -2
  751. package/generators/server/templates/src/main/java/package/config/apidocs/GatewaySwaggerResourcesProvider.java.ejs +5 -5
  752. package/generators/server/templates/src/main/java/package/config/dbmigrations/InitialSetupMigration.java.ejs +2 -6
  753. package/generators/server/templates/src/main/java/package/domain/AbstractAuditingEntity.java.ejs +48 -36
  754. package/generators/server/templates/src/main/java/package/domain/Authority.java.ejs +20 -20
  755. package/generators/server/templates/src/main/java/package/domain/PersistentToken.java.ejs +55 -55
  756. package/generators/server/templates/src/main/java/package/domain/User.java.ejs +185 -160
  757. package/generators/server/templates/src/main/java/package/management/SecurityMetersService.java.ejs +68 -0
  758. package/generators/server/templates/src/main/java/package/repository/AuthorityRepository.java.ejs +40 -15
  759. package/generators/server/templates/src/main/java/package/repository/PersistentTokenRepository.java.ejs +14 -36
  760. package/generators/server/templates/src/main/java/package/repository/UserRepository.java.ejs +209 -163
  761. package/generators/server/templates/src/main/java/package/repository/rowmapper/UserRowMapper.java.ejs +4 -4
  762. package/generators/server/templates/src/main/java/package/repository/search/UserSearchRepository.java.ejs +33 -7
  763. package/generators/server/templates/src/main/java/package/repository/search/package-info.java.ejs +2 -2
  764. package/generators/server/templates/src/main/java/package/security/DomainUserDetailsService.java.ejs +11 -11
  765. package/generators/server/templates/src/main/java/package/security/PersistentTokenRememberMeServices.java.ejs +43 -45
  766. package/generators/server/templates/src/main/java/package/security/SecurityUtils.java.ejs +62 -29
  767. package/generators/server/templates/src/main/java/package/security/jwt/JWTFilter.java.ejs +10 -10
  768. package/generators/server/templates/src/main/java/package/security/jwt/TokenProvider.java.ejs +31 -6
  769. package/generators/server/templates/src/main/java/package/security/oauth2/CustomClaimConverter.java.ejs +29 -4
  770. package/generators/server/templates/src/main/java/package/service/MailService.java.ejs +2 -2
  771. package/generators/server/templates/src/main/java/package/service/UserService.java.ejs +326 -304
  772. package/generators/server/templates/src/main/java/package/service/dto/AdminUserDTO.java.ejs +24 -24
  773. package/generators/server/templates/src/main/java/package/service/dto/UserDTO.java.ejs +7 -7
  774. package/generators/server/templates/src/main/java/package/service/mapper/UserMapper.java.ejs +11 -11
  775. package/generators/server/templates/src/main/java/package/web/filter/OAuth2ReactiveRefreshTokensWebFilter.java.ejs +71 -0
  776. package/generators/server/templates/src/main/java/package/web/filter/OAuth2RefreshTokensWebFilter.java.ejs +103 -0
  777. package/generators/server/templates/src/main/java/package/web/filter/SpaWebFilter.java.ejs +3 -3
  778. package/generators/server/templates/src/main/java/package/web/rest/AccountResource.java.ejs +77 -76
  779. package/generators/server/templates/src/main/java/package/web/rest/ClientForwardController.java.ejs +3 -3
  780. package/generators/server/templates/src/main/java/package/web/rest/KafkaResource.java.ejs +12 -12
  781. package/generators/server/templates/src/main/java/package/web/rest/LogoutResource.java.ejs +58 -22
  782. package/generators/server/templates/src/main/java/package/web/rest/PublicUserResource.java.ejs +62 -39
  783. package/generators/server/templates/src/main/java/package/web/rest/UserJWTController.java.ejs +3 -3
  784. package/generators/server/templates/src/main/java/package/web/rest/UserResource.java.ejs +51 -51
  785. package/generators/server/templates/src/main/java/package/web/rest/errors/ErrorConstants.java.ejs +4 -4
  786. package/generators/server/templates/src/main/java/package/web/rest/errors/ExceptionTranslator.java.ejs +19 -19
  787. package/generators/server/templates/src/main/java/package/web/rest/vm/ManagedUserVM.java.ejs +4 -4
  788. package/generators/server/templates/src/main/resources/config/application-dev.yml.ejs +105 -102
  789. package/generators/server/templates/src/main/resources/config/application-prod.yml.ejs +78 -78
  790. package/generators/server/templates/src/main/resources/config/application-tls.yml.ejs +1 -1
  791. package/generators/server/templates/src/main/resources/config/application.yml.ejs +42 -55
  792. package/generators/server/templates/src/main/resources/config/bootstrap-prod.yml.ejs +7 -7
  793. package/generators/server/templates/src/main/resources/config/bootstrap.yml.ejs +6 -6
  794. package/generators/server/templates/src/main/resources/config/cql/changelog/create-tables.cql.ejs +1 -1
  795. package/generators/server/templates/src/main/resources/config/liquibase/changelog/initial_schema.xml.ejs +26 -34
  796. package/generators/server/templates/src/main/resources/config/liquibase/data/user.csv.ejs +2 -2
  797. package/generators/server/templates/src/main/resources/config/liquibase/data/user_authority.csv.ejs +1 -1
  798. package/generators/server/templates/src/main/resources/config/liquibase/master.xml.ejs +14 -14
  799. package/generators/server/templates/src/main/resources/config/{couchmove/changelog/V0.1__initial_setup → neo4j/migrations}/user__admin.json.ejs +2 -2
  800. package/generators/server/templates/src/main/resources/config/{couchmove/changelog/V0.1__initial_setup → neo4j/migrations}/user__user.json.ejs +2 -2
  801. package/generators/server/templates/src/main/resources/h2.server.properties.ejs +2 -2
  802. package/generators/server/templates/src/main/resources/logback-spring.xml.ejs +55 -55
  803. package/generators/server/templates/src/main/resources/static/microservices_index.html.ejs +1 -1
  804. package/generators/server/templates/src/main/resources/swagger/api.yml.ejs +6 -6
  805. package/generators/server/templates/src/test/java/package/IntegrationTest.java.ejs +13 -7
  806. package/generators/server/templates/src/test/java/package/ReactiveSqlTestContainerExtension.java.ejs +9 -9
  807. package/generators/server/templates/src/test/java/package/config/JHipsterBlockHoundIntegration.java.ejs +3 -0
  808. package/generators/server/templates/src/test/java/package/config/TestSecurityConfiguration.java.ejs +27 -28
  809. package/generators/server/templates/src/test/java/package/config/WebConfigurerTest.java.ejs +5 -7
  810. package/generators/server/templates/src/test/java/package/cucumber/CucumberIT.java.ejs +6 -4
  811. package/generators/server/templates/src/test/java/package/management/SecurityMetersServiceTests.java.ejs +113 -0
  812. package/generators/server/templates/src/test/java/package/repository/timezone/DateTimeWrapper.java.ejs +3 -3
  813. package/generators/server/templates/src/test/java/package/security/DomainUserDetailsServiceIT.java.ejs +24 -24
  814. package/generators/server/templates/src/test/java/package/security/SecurityUtilsUnitTest.java.ejs +97 -10
  815. package/generators/server/templates/src/test/java/package/security/jwt/JWTFilterTest.java.ejs +23 -18
  816. package/generators/server/templates/src/test/java/package/security/jwt/TokenProviderSecurityMetersTests.java.ejs +198 -0
  817. package/generators/server/templates/src/test/java/package/security/jwt/TokenProviderTest.java.ejs +13 -3
  818. package/generators/server/templates/src/test/java/package/security/oauth2/AuthorizationHeaderUtilTest.java.ejs +16 -2
  819. package/generators/server/templates/src/test/java/package/security/oauth2/CustomClaimConverterIT.java.ejs +108 -4
  820. package/generators/server/templates/src/test/java/package/service/MailServiceIT.java.ejs +4 -4
  821. package/generators/server/templates/src/test/java/package/service/UserServiceIT.java.ejs +133 -133
  822. package/generators/server/templates/src/test/java/package/service/mapper/UserMapperTest.java.ejs +17 -17
  823. package/generators/server/templates/src/test/java/package/test/util/OAuth2TestUtil.java.ejs +104 -0
  824. package/generators/server/templates/src/test/java/package/web/rest/AccountResourceIT.java.ejs +397 -338
  825. package/generators/server/templates/src/test/java/package/web/rest/AccountResourceIT_oauth2.java.ejs +67 -70
  826. package/generators/server/templates/src/test/java/package/web/rest/AccountResourceIT_skipUserManagement.java.ejs +20 -20
  827. package/generators/server/templates/src/test/java/package/web/rest/ClientForwardControllerTest.java.ejs +2 -2
  828. package/generators/server/templates/src/test/java/package/web/rest/KafkaResourceIT.java.ejs +14 -14
  829. package/generators/server/templates/src/test/java/package/web/rest/LogoutResourceIT.java.ejs +41 -34
  830. package/generators/server/templates/src/test/java/package/web/rest/PublicUserResourceIT.java.ejs +59 -59
  831. package/generators/server/templates/src/test/java/package/web/rest/TestUtil.java.ejs +25 -55
  832. package/generators/server/templates/src/test/java/package/web/rest/UserJWTControllerIT.java.ejs +35 -35
  833. package/generators/server/templates/src/test/java/package/web/rest/UserResourceIT.java.ejs +263 -261
  834. package/generators/server/templates/src/test/java/package/web/rest/errors/ExceptionTranslatorIT.java.ejs +13 -13
  835. package/generators/server/templates/src/test/java/package/web/rest/errors/ExceptionTranslatorTestController.java.ejs +3 -3
  836. package/generators/server/templates/src/test/resources/config/application-testcontainers.yml.ejs +17 -17
  837. package/generators/server/templates/src/test/resources/config/application.yml.ejs +34 -36
  838. package/generators/server/templates/src/test/resources/config/bootstrap.yml.ejs +4 -4
  839. package/generators/server/templates/src/test/resources/logback.xml.ejs +54 -52
  840. package/generators/spring-boot/__snapshots__/generator.spec.cjs.snap +80 -0
  841. package/generators/spring-boot/config.cjs +30 -0
  842. package/generators/spring-boot/constants.cjs +28 -0
  843. package/generators/spring-boot/files.cjs +46 -0
  844. package/generators/spring-boot/generator.spec.cjs +64 -0
  845. package/generators/spring-boot/index.cjs +162 -0
  846. package/generators/spring-boot/mixin.cjs +82 -0
  847. package/generators/spring-boot/options.cjs +19 -0
  848. package/generators/spring-boot/templates/build.gradle.jhi.spring-boot.ejs +29 -0
  849. package/generators/spring-boot/templates/pom.xml.jhi.spring-boot.ejs +45 -0
  850. package/generators/spring-boot/templates/src/main/java/package/Application.java.jhi.ejs +31 -0
  851. package/generators/spring-boot/templates/src/main/resources/application.properties.jhi.ejs +19 -0
  852. package/generators/spring-boot/templates/src/test/java/package/ApplicationTests.java.jhi.ejs +31 -0
  853. package/generators/spring-controller/esm.mjs +21 -0
  854. package/generators/spring-controller/generator.spec.mjs +47 -0
  855. package/generators/spring-controller/index.js +39 -19
  856. package/generators/spring-controller/templates/src/main/java/package/web/rest/Resource.java.ejs +5 -5
  857. package/generators/spring-controller/templates/src/test/java/package/web/rest/ResourceIT.java.ejs +2 -2
  858. package/generators/spring-service/esm.mjs +21 -0
  859. package/generators/spring-service/generator.spec.mjs +47 -0
  860. package/generators/spring-service/index.js +33 -13
  861. package/generators/spring-service/templates/src/main/java/package/service/Service.java.ejs +16 -8
  862. package/generators/spring-service/templates/src/main/java/package/service/impl/ServiceImpl.java.ejs +9 -5
  863. package/generators/statistics.js +3 -1
  864. package/generators/upgrade/esm.mjs +21 -0
  865. package/generators/upgrade/generator.spec.mjs +44 -0
  866. package/generators/upgrade/index.js +5 -6
  867. package/generators/upgrade-config/esm.mjs +21 -0
  868. package/generators/upgrade-config/generator.spec.mjs +44 -0
  869. package/generators/upgrade-config/index.js +2 -2
  870. package/generators/utils.js +78 -11
  871. package/generators/workspaces/esm.mjs +21 -0
  872. package/generators/workspaces/generator.spec.mjs +47 -0
  873. package/generators/workspaces/index.js +20 -12
  874. package/jdl/converters/jdl-to-json/jdl-to-json-field-converter.js +8 -0
  875. package/jdl/converters/json-to-jdl-entity-converter.js +1 -0
  876. package/jdl/jhipster/application-options.js +18 -3
  877. package/jdl/jhipster/default-application-options.js +13 -7
  878. package/jdl/jhipster/deployment-options.js +25 -12
  879. package/jdl/jhipster/kubernetes-platform-types.js +40 -0
  880. package/jdl/jhipster/message-broker-types.js +1 -0
  881. package/jdl/jhipster/openapi-options.js +21 -0
  882. package/jdl/jhipster/openshift-platform-types.js +27 -0
  883. package/jdl/models/jdl-enum-value.js +2 -1
  884. package/jdl/models/jdl-enum.js +11 -1
  885. package/jdl/parsing/jdl-ast-builder-visitor.js +10 -2
  886. package/jdl/parsing/jdl-parser.js +3 -0
  887. package/jdl/parsing/lexer/application-tokens.js +4 -0
  888. package/jdl/parsing/validator.js +7 -1
  889. package/jdl/validators/application-validator.js +1 -0
  890. package/lib/constants/generators.mjs +20 -0
  891. package/lib/constants/priorities.cjs +131 -0
  892. package/lib/constants/priorities.mjs +19 -0
  893. package/lib/support/index.cjs +21 -0
  894. package/lib/support/mixin.cjs +199 -0
  895. package/lib/support/shared-data.cjs +74 -0
  896. package/package.json +55 -36
  897. package/utils/entity.js +21 -4
  898. package/utils/field.js +27 -3
  899. package/utils/liquibase.js +31 -20
  900. package/utils/multi-step-transform/index.js +52 -0
  901. package/utils/multi-step-transform/template-data.js +60 -0
  902. package/utils/multi-step-transform/template-file-fs.js +43 -0
  903. package/utils/multi-step-transform/template-file.js +84 -0
  904. package/NOTICE +0 -4
  905. package/generators/client/templates/angular/.npmrc.ejs +0 -1
  906. package/generators/client/templates/vue/webpack/dev.env.js.ejs +0 -18
  907. package/generators/client/templates/vue/webpack/env.js.ejs +0 -67
  908. package/generators/client/templates/vue/webpack/loader.conf.js.ejs +0 -20
  909. package/generators/client/templates/vue/webpack/prod.env.js.ejs +0 -16
  910. package/generators/entity-server/templates/src/main/java/package/domain/Entity.java.ejs +0 -769
  911. package/generators/server/templates/src/main/java/package/config/OAuth2SsoConfiguration.java.ejs +0 -94
  912. package/generators/server/templates/src/main/java/package/config/OAuth2TokenServicesConfiguration.java.ejs +0 -68
  913. package/generators/server/templates/src/main/java/package/repository/CustomN1qlCouchbaseRepository.java.ejs +0 -135
  914. package/generators/server/templates/src/main/java/package/repository/CustomReactiveN1qlCouchbaseRepository.java.ejs +0 -157
  915. package/generators/server/templates/src/main/java/package/repository/N1qlCouchbaseRepository.java.ejs +0 -46
  916. package/generators/server/templates/src/main/java/package/repository/ReactiveN1qlCouchbaseRepository.java.ejs +0 -47
  917. package/generators/server/templates/src/test/java/package/config/DatabaseConfigurationIT.java.ejs +0 -112
@@ -19,60 +19,63 @@
19
19
  package <%= packageName %>.service;
20
20
 
21
21
  import <%= packageName %>.config.Constants;
22
- <%_ if (databaseType === 'sql' || databaseType === 'mongodb' || databaseType === 'neo4j' || databaseType === 'couchbase') { _%>
22
+ <%_ if (databaseTypeSql || databaseTypeMongodb || databaseTypeNeo4j || databaseTypeCouchbase) { _%>
23
23
  import <%= packageName %>.domain.Authority;
24
24
  <%_ } _%>
25
- <%_ if (databaseType !== 'no') { _%>
25
+ <%_ if (!databaseTypeNo) { _%>
26
26
  import <%= packageName %>.domain.<%= asEntity('User') %>;
27
- <%_ if (databaseType === 'sql' || databaseType === 'mongodb' || databaseType === 'neo4j' || databaseType === 'couchbase') { _%>
27
+ <%_ if (databaseTypeSql || databaseTypeMongodb || databaseTypeNeo4j || databaseTypeCouchbase) { _%>
28
28
  import <%= packageName %>.repository.AuthorityRepository;
29
- <%_ if (authenticationType === 'session' && !reactive) { _%>
29
+ <%_ if (authenticationTypeSession && !reactive) { _%>
30
30
  import <%= packageName %>.repository.PersistentTokenRepository;
31
- <%_ } _%>
32
31
  <%_ } _%>
32
+ <%_ } _%>
33
33
  import <%= packageName %>.repository.UserRepository;
34
- <%_ if (searchEngine === 'elasticsearch') { _%>
34
+ <%_ if (searchEngineElasticsearch) { _%>
35
35
  import <%= packageName %>.repository.search.UserSearchRepository;
36
- <%_ } _%>
37
- <%_ if (authenticationType !== 'oauth2') { _%>
36
+ <%_ } _%>
37
+ <%_ if (!authenticationTypeOauth2) { _%>
38
38
  import <%= packageName %>.security.AuthoritiesConstants;
39
- <%_ } _%>
39
+ <%_ } _%>
40
40
  import <%= packageName %>.security.SecurityUtils;
41
41
  <%_ } _%>
42
42
  import <%= packageName %>.service.dto.<%= asDto('AdminUser') %>;
43
43
  import <%= packageName %>.service.dto.<%= asDto('User') %>;
44
- <%_ if (authenticationType !== 'oauth2') { _%>
44
+ <%_ if (!authenticationTypeOauth2) { _%>
45
45
 
46
46
  import tech.jhipster.security.RandomUtil;
47
47
  <%_ } _%>
48
48
 
49
- <%_ if (databaseType !== 'no') { _%>
49
+ <%_ if (!databaseTypeNo) { _%>
50
50
  import org.slf4j.Logger;
51
51
  import org.slf4j.LoggerFactory;
52
52
  <%_ } _%>
53
- <%_ if (cacheManagerIsAvailable === true) { _%>
53
+ <%_ if (cacheManagerIsAvailable) { _%>
54
54
  import org.springframework.cache.CacheManager;
55
55
  <%_ } _%>
56
- <%_ if (databaseType === 'sql' || databaseType === 'mongodb' || databaseType === 'neo4j' || databaseType === 'couchbase') { _%>
57
- <%_ if (!reactive) { _%>
56
+ <%_ if (databaseTypeSql || databaseTypeMongodb || databaseTypeNeo4j || databaseTypeCouchbase) { _%>
57
+ <%_ if (!reactive) { _%>
58
58
  import org.springframework.data.domain.Page;
59
+ <%_ if (databaseTypeCouchbase) { _%>
60
+ import org.springframework.data.domain.PageImpl;
59
61
  <%_ } _%>
62
+ <%_ } _%>
60
63
  import org.springframework.data.domain.Pageable;
61
- <%_ if (authenticationType !== 'oauth2') { _%>
64
+ <%_ if (!authenticationTypeOauth2) { _%>
62
65
  import org.springframework.scheduling.annotation.Scheduled;
63
- <%_ } _%>
66
+ <%_ } _%>
64
67
  <%_ } _%>
65
- <%_ if (authenticationType === 'oauth2') { _%>
68
+ <%_ if (authenticationTypeOauth2) { _%>
66
69
  import org.springframework.security.authentication.AbstractAuthenticationToken;
67
70
  import org.springframework.security.core.GrantedAuthority;
68
71
  import org.springframework.security.oauth2.client.authentication.OAuth2AuthenticationToken;
69
72
  import org.springframework.security.oauth2.server.resource.authentication.JwtAuthenticationToken;
70
73
  <%_ } _%>
71
- <%_ if (authenticationType !== 'oauth2') { _%>
74
+ <%_ if (!authenticationTypeOauth2) { _%>
72
75
  import org.springframework.security.crypto.password.PasswordEncoder;
73
76
  <%_ } _%>
74
77
  import org.springframework.stereotype.Service;
75
- <%_ if (databaseType === 'sql') { _%>
78
+ <%_ if (databaseTypeSql) { _%>
76
79
  import org.springframework.transaction.annotation.Transactional;
77
80
  <%_ } _%>
78
81
  <%_ if (reactive) { _%>
@@ -81,21 +84,21 @@ import reactor.core.publisher.Mono;
81
84
  import reactor.core.scheduler.Schedulers;
82
85
  <%_ } _%>
83
86
 
84
- <%_ if ((databaseType === 'sql' || databaseType === 'mongodb' || databaseType === 'neo4j' || databaseType === 'couchbase') && authenticationType === 'session' && !reactive) { _%>
87
+ <%_ if ((databaseTypeSql || databaseTypeMongodb || databaseTypeNeo4j || databaseTypeCouchbase) && authenticationTypeSession && !reactive) { _%>
85
88
  import java.time.LocalDate;
86
89
  <%_ } _%>
87
- <%_ if (databaseType !== 'no') { _%>
90
+ <%_ if (!databaseTypeNo) { _%>
88
91
  import java.time.Instant;
89
92
  <%_ } _%>
90
- <%_ if (databaseType === 'sql' && reactive && authenticationType !== 'oauth2') { _%>
93
+ <%_ if (databaseTypeSql && reactive && !authenticationTypeOauth2) { _%>
91
94
  import java.time.LocalDateTime;
92
95
  import java.time.ZoneOffset;
93
96
  <%_ } _%>
94
- <%_ if (authenticationType !== 'oauth2' && (databaseType === 'sql' || databaseType === 'neo4j' || databaseType === 'mongodb' || databaseType === 'couchbase')) { _%>
97
+ <%_ if (!authenticationTypeOauth2) { _%>
95
98
  import java.time.temporal.ChronoUnit;
96
99
  <%_ } _%>
97
100
  import java.util.*;
98
- <%_ if (!reactive || authenticationType === 'oauth2') { _%>
101
+ <%_ if (!reactive || authenticationTypeOauth2) { _%>
99
102
  import java.util.stream.Collectors;
100
103
  <%_ } _%>
101
104
 
@@ -103,57 +106,57 @@ import java.util.stream.Collectors;
103
106
  * Service class for managing users.
104
107
  */
105
108
  @Service
106
- <%_ if (databaseType === 'sql' && !reactive) { _%>
109
+ <%_ if (databaseTypeSql && !reactive) { _%>
107
110
  @Transactional
108
111
  <%_ } _%>
109
112
  public class UserService {
110
- <%_ if (databaseType !== 'no') { _%>
113
+ <%_ if (!databaseTypeNo) { _%>
111
114
 
112
115
  private final Logger log = LoggerFactory.getLogger(UserService.class);
113
116
 
114
117
  private final UserRepository userRepository;
115
- <%_ if (authenticationType !== 'oauth2') { _%>
118
+ <%_ if (!authenticationTypeOauth2) { _%>
116
119
 
117
120
  private final PasswordEncoder passwordEncoder;
118
- <%_ } _%>
119
- <%_ if (searchEngine === 'elasticsearch') { _%>
121
+ <%_ } _%>
122
+ <%_ if (searchEngineElasticsearch) { _%>
120
123
 
121
124
  private final UserSearchRepository userSearchRepository;
122
- <%_ } _%>
123
- <%_ if (databaseType === 'sql' || databaseType === 'mongodb' || databaseType === 'neo4j' || databaseType === 'couchbase') { _%>
124
- <%_ if (authenticationType === 'session' && !reactive) { _%>
125
+ <%_ } _%>
126
+ <%_ if (databaseTypeSql || databaseTypeMongodb || databaseTypeNeo4j || databaseTypeCouchbase) { _%>
127
+ <%_ if (authenticationTypeSession && !reactive) { _%>
125
128
 
126
129
  private final PersistentTokenRepository persistentTokenRepository;
127
- <%_ } _%>
130
+ <%_ } _%>
128
131
 
129
132
  private final AuthorityRepository authorityRepository;
130
- <%_ } _%>
131
- <%_ if (cacheManagerIsAvailable === true) { _%>
133
+ <%_ } _%>
134
+ <%_ if (cacheManagerIsAvailable) { _%>
132
135
 
133
136
  private final CacheManager cacheManager;
134
- <%_ } _%>
137
+ <%_ } _%>
135
138
 
136
- public UserService(UserRepository userRepository<% if (authenticationType !== 'oauth2') { %>, PasswordEncoder passwordEncoder<% } %><% if (searchEngine === 'elasticsearch') { %>, UserSearchRepository userSearchRepository<% } %><% if (databaseType === 'sql' || databaseType === 'mongodb' || databaseType === 'neo4j' || databaseType === 'couchbase') { %><% if (authenticationType === 'session' && !reactive) { %>, PersistentTokenRepository persistentTokenRepository<% } %>, AuthorityRepository authorityRepository<% } %><% if (cacheManagerIsAvailable === true) { %>, CacheManager cacheManager<% } %>) {
139
+ public UserService(UserRepository userRepository<% if (!authenticationTypeOauth2) { %>, PasswordEncoder passwordEncoder<% } %><% if (searchEngineElasticsearch) { %>, UserSearchRepository userSearchRepository<% } %><% if (databaseTypeSql || databaseTypeMongodb || databaseTypeNeo4j || databaseTypeCouchbase) { %><% if (authenticationTypeSession && !reactive) { %>, PersistentTokenRepository persistentTokenRepository<% } %>, AuthorityRepository authorityRepository<% } %><% if (cacheManagerIsAvailable) { %>, CacheManager cacheManager<% } %>) {
137
140
  this.userRepository = userRepository;
138
- <%_ if (authenticationType !== 'oauth2') { _%>
141
+ <%_ if (!authenticationTypeOauth2) { _%>
139
142
  this.passwordEncoder = passwordEncoder;
140
- <%_ } _%>
141
- <%_ if (searchEngine === 'elasticsearch') { _%>
143
+ <%_ } _%>
144
+ <%_ if (searchEngineElasticsearch) { _%>
142
145
  this.userSearchRepository = userSearchRepository;
143
- <%_ } _%>
144
- <%_ if (databaseType === 'sql' || databaseType === 'mongodb' || databaseType === 'neo4j' || databaseType === 'couchbase') { _%>
145
- <%_ if (authenticationType === 'session' && !reactive) { _%>
146
+ <%_ } _%>
147
+ <%_ if (databaseTypeSql || databaseTypeMongodb || databaseTypeNeo4j || databaseTypeCouchbase) { _%>
148
+ <%_ if (authenticationTypeSession && !reactive) { _%>
146
149
  this.persistentTokenRepository = persistentTokenRepository;
147
- <%_ } _%>
150
+ <%_ } _%>
148
151
  this.authorityRepository = authorityRepository;
149
- <%_ } _%>
150
- <%_ if (cacheManagerIsAvailable === true) { _%>
152
+ <%_ } _%>
153
+ <%_ if (cacheManagerIsAvailable) { _%>
151
154
  this.cacheManager = cacheManager;
152
- <%_ } _%>
155
+ <%_ } _%>
153
156
  }
154
- <%_ if (authenticationType !== 'oauth2') { _%>
157
+ <%_ if (!authenticationTypeOauth2) { _%>
155
158
 
156
- <%_ if (databaseType === 'sql' && reactive) { _%>
159
+ <%_ if (databaseTypeSql && reactive) { _%>
157
160
  @Transactional
158
161
  <%_ } _%>
159
162
  public <% if (reactive) { %>Mono<% } else { %>Optional<% } %><<%= asEntity('User') %>> activateRegistration(String key) {
@@ -163,53 +166,53 @@ public class UserService {
163
166
  // activate given user for the registration key.
164
167
  user.setActivated(true);
165
168
  user.setActivationKey(null);
166
- <%_ if (!reactive) { _%>
167
- <%_ if (['mongodb', 'neo4j', 'couchbase', 'cassandra'].includes(databaseType)) { _%>
169
+ <%_ if (!reactive) { _%>
170
+ <%_ if (databaseTypeMongodb || databaseTypeNeo4j || databaseTypeCouchbase || databaseTypeCassandra) { _%>
168
171
  userRepository.save(user);
169
- <%_ } _%>
170
- <%_ if (searchEngine === 'elasticsearch') { _%>
172
+ <%_ } _%>
173
+ <%_ if (searchEngineElasticsearch) { _%>
171
174
  userSearchRepository.save(user);
172
- <%_ } _%>
173
- <%_ if (cacheManagerIsAvailable === true) { _%>
175
+ <%_ } _%>
176
+ <%_ if (cacheManagerIsAvailable) { _%>
174
177
  this.clearUserCaches(user);
175
- <%_ } _%>
178
+ <%_ } _%>
176
179
  log.debug("Activated user: {}", user);
177
180
  return user;
178
181
  });
179
- <%_ } else { _%>
182
+ <%_ } else { _%>
180
183
  return saveUser(user);
181
184
  })
182
- <%_ if (searchEngine === 'elasticsearch') { _%>
185
+ <%_ if (searchEngineElasticsearch) { _%>
183
186
  .flatMap(user -> userSearchRepository.save(user).thenReturn(user))
184
- <%_ } _%>
185
- <%_ if (cacheManagerIsAvailable === true) { _%>
187
+ <%_ } _%>
188
+ <%_ if (cacheManagerIsAvailable) { _%>
186
189
  .doOnNext(this::clearUserCaches)
187
- <%_ } _%>
190
+ <%_ } _%>
188
191
  .doOnNext(user -> log.debug("Activated user: {}", user));
189
- <%_ } _%>
192
+ <%_ } _%>
190
193
  }
191
194
 
192
- <%_ if (databaseType === 'sql' && reactive) { _%>
195
+ <%_ if (databaseTypeSql && reactive) { _%>
193
196
  @Transactional
194
197
  <%_ } _%>
195
198
  public <% if (reactive) { %>Mono<% } else { %>Optional<% } %><<%= asEntity('User') %>> completePasswordReset(String newPassword, String key) {
196
199
  log.debug("Reset user password for reset key {}", key);
197
200
  return userRepository.findOneByResetKey(key)
198
- .filter(user -> user.getResetDate().isAfter(Instant.now().minusSeconds(86400)))
199
- <%_ if (!reactive) { _%>
201
+ .filter(user -> user.getResetDate().isAfter(Instant.now().minus(1, ChronoUnit.DAYS)))
202
+ <%_ if (!reactive) { _%>
200
203
  .map(user -> {
201
204
  user.setPassword(passwordEncoder.encode(newPassword));
202
205
  user.setResetKey(null);
203
206
  user.setResetDate(null);
204
- <%_ if (['mongodb', 'neo4j', 'couchbase', 'cassandra'].includes(databaseType)) { _%>
207
+ <%_ if (databaseTypeMongodb || databaseTypeNeo4j || databaseTypeCouchbase || databaseTypeCassandra) { _%>
205
208
  userRepository.save(user);
206
- <%_ } _%>
207
- <%_ if (cacheManagerIsAvailable === true) { _%>
209
+ <%_ } _%>
210
+ <%_ if (cacheManagerIsAvailable) { _%>
208
211
  this.clearUserCaches(user);
209
- <%_ } _%>
212
+ <%_ } _%>
210
213
  return user;
211
214
  });
212
- <%_ } else { _%>
215
+ <%_ } else { _%>
213
216
  .publishOn(Schedulers.boundedElastic())
214
217
  .map(user -> {
215
218
  user.setPassword(passwordEncoder.encode(newPassword));
@@ -217,42 +220,42 @@ public class UserService {
217
220
  user.setResetDate(null);
218
221
  return user;
219
222
  })
220
- .flatMap(this::saveUser)<% if (cacheManagerIsAvailable === true) { %>
223
+ .flatMap(this::saveUser)<% if (cacheManagerIsAvailable) { %>
221
224
  .doOnNext(this::clearUserCaches)<% } %>;
222
- <%_ } _%>
225
+ <%_ } _%>
223
226
  }
224
227
 
225
- <%_ if (databaseType === 'sql' && reactive) { _%>
228
+ <%_ if (databaseTypeSql && reactive) { _%>
226
229
  @Transactional
227
230
  <%_ } _%>
228
231
  public <% if (reactive) { %>Mono<% } else { %>Optional<% } %><<%= asEntity('User') %>> requestPasswordReset(String mail) {
229
232
  return userRepository.findOneByEmailIgnoreCase(mail)
230
233
  .filter(<%= asEntity('User') %>::isActivated)
231
- <%_ if (!reactive) { _%>
234
+ <%_ if (!reactive) { _%>
232
235
  .map(user -> {
233
236
  user.setResetKey(RandomUtil.generateResetKey());
234
237
  user.setResetDate(Instant.now());
235
- <%_ if (['mongodb', 'neo4j', 'couchbase', 'cassandra'].includes(databaseType)) { _%>
238
+ <%_ if (databaseTypeMongodb || databaseTypeNeo4j || databaseTypeCouchbase || databaseTypeCassandra) { _%>
236
239
  userRepository.save(user);
237
- <%_ } _%>
238
- <%_ if (cacheManagerIsAvailable === true) { _%>
240
+ <%_ } _%>
241
+ <%_ if (cacheManagerIsAvailable) { _%>
239
242
  this.clearUserCaches(user);
240
- <%_ } _%>
243
+ <%_ } _%>
241
244
  return user;
242
245
  });
243
- <%_ } else { _%>
246
+ <%_ } else { _%>
244
247
  .publishOn(Schedulers.boundedElastic())
245
248
  .map(user -> {
246
249
  user.setResetKey(RandomUtil.generateResetKey());
247
250
  user.setResetDate(Instant.now());
248
251
  return user;
249
252
  })
250
- .flatMap(this::saveUser)<% if (cacheManagerIsAvailable === true) { %>
253
+ .flatMap(this::saveUser)<% if (cacheManagerIsAvailable) { %>
251
254
  .doOnNext(this::clearUserCaches)<% } %>;
252
- <%_ } _%>
255
+ <%_ } _%>
253
256
  }
254
257
 
255
- <%_ if (databaseType === 'sql' && reactive) { _%>
258
+ <%_ if (databaseTypeSql && reactive) { _%>
256
259
  @Transactional
257
260
  <%_ } _%>
258
261
  public <% if (reactive) { %>Mono<<%= asEntity('User') %>><% } else { %><%= asEntity('User') %><% } %> registerUser(<%= asDto('AdminUser') %> userDTO, String password) {
@@ -270,9 +273,9 @@ public class UserService {
270
273
  }
271
274
  });
272
275
  <%= asEntity('User') %> newUser = new <%= asEntity('User') %>();
273
- <%_ if (databaseType === 'cassandra') { _%>
276
+ <%_ if (databaseTypeCassandra) { _%>
274
277
  newUser.setId(UUID.randomUUID().toString());
275
- <%_ } _%>
278
+ <%_ } _%>
276
279
  String encryptedPassword = passwordEncoder.encode(password);
277
280
  newUser.setLogin(userDTO.getLogin().toLowerCase());
278
281
  // new user gets initially a generated password
@@ -282,38 +285,38 @@ public class UserService {
282
285
  if (userDTO.getEmail() != null) {
283
286
  newUser.setEmail(userDTO.getEmail().toLowerCase());
284
287
  }
285
- <%_ if (['sql', 'mongodb', 'couchbase', 'neo4j'].includes(databaseType)) { _%>
288
+ <%_ if (databaseTypeSql || databaseTypeMongodb || databaseTypeCouchbase || databaseTypeNeo4j) { _%>
286
289
  newUser.setImageUrl(userDTO.getImageUrl());
287
- <%_ } _%>
290
+ <%_ } _%>
288
291
  newUser.setLangKey(userDTO.getLangKey());
289
292
  // new user is not active
290
293
  newUser.setActivated(false);
291
294
  // new user gets registration key
292
295
  newUser.setActivationKey(RandomUtil.generateActivationKey());
293
- <%_ if (['sql', 'mongodb', 'neo4j'].includes(databaseType)) { _%>
296
+ <%_ if (databaseTypeSql || databaseTypeMongodb || databaseTypeNeo4j) { _%>
294
297
  Set<Authority> authorities = new HashSet<>();
295
298
  authorityRepository.findById(AuthoritiesConstants.USER).ifPresent(authorities::add);
296
- <%_ } else { _%>
299
+ <%_ } else { _%>
297
300
  Set<String> authorities = new HashSet<>();
298
301
  authorities.add(AuthoritiesConstants.USER);
299
- <%_ } _%>
302
+ <%_ } _%>
300
303
  newUser.setAuthorities(authorities);
301
304
  userRepository.save(newUser);
302
- <%_ if (searchEngine === 'elasticsearch') { _%>
305
+ <%_ if (searchEngineElasticsearch) { _%>
303
306
  userSearchRepository.save(newUser);
304
- <%_ } _%>
305
- <%_ if (cacheManagerIsAvailable === true) { _%>
307
+ <%_ } _%>
308
+ <%_ if (cacheManagerIsAvailable) { _%>
306
309
  this.clearUserCaches(newUser);
307
- <%_ } _%>
310
+ <%_ } _%>
308
311
  log.debug("Created Information for User: {}", newUser);
309
312
  return newUser;
310
- <%_ } else { // reactive _%>
313
+ <%_ } else { /* reactive */ _%>
311
314
  return userRepository.findOneByLogin(userDTO.getLogin().toLowerCase())
312
315
  .flatMap(existingUser -> {
313
316
  if (!existingUser.isActivated()) {
314
- <%_ if (cacheManagerIsAvailable === true) { _%>
317
+ <%_ if (cacheManagerIsAvailable) { _%>
315
318
  this.clearUserCaches(existingUser);
316
- <%_ } _%>
319
+ <%_ } _%>
317
320
  return userRepository.delete(existingUser);
318
321
  } else {
319
322
  return Mono.error(new UsernameAlreadyUsedException());
@@ -322,9 +325,9 @@ public class UserService {
322
325
  .then(userRepository.findOneByEmailIgnoreCase(userDTO.getEmail()))
323
326
  .flatMap(existingUser -> {
324
327
  if (!existingUser.isActivated()) {
325
- <%_ if (cacheManagerIsAvailable === true) { _%>
328
+ <%_ if (cacheManagerIsAvailable) { _%>
326
329
  this.clearUserCaches(existingUser);
327
- <%_ } _%>
330
+ <%_ } _%>
328
331
  return userRepository.delete(existingUser);
329
332
  } else {
330
333
  return Mono.error(new EmailAlreadyUsedException());
@@ -333,9 +336,9 @@ public class UserService {
333
336
  .publishOn(Schedulers.boundedElastic())
334
337
  .then(Mono.fromCallable(() -> {
335
338
  <%= asEntity('User') %> newUser = new <%= asEntity('User') %>();
336
- <%_ if (databaseType === 'cassandra') { _%>
339
+ <%_ if (databaseTypeCassandra) { _%>
337
340
  newUser.setId(UUID.randomUUID().toString());
338
- <%_ } _%>
341
+ <%_ } _%>
339
342
  String encryptedPassword = passwordEncoder.encode(password);
340
343
  newUser.setLogin(userDTO.getLogin().toLowerCase());
341
344
  // new user gets initially a generated password
@@ -345,9 +348,9 @@ public class UserService {
345
348
  if (userDTO.getEmail() != null) {
346
349
  newUser.setEmail(userDTO.getEmail().toLowerCase());
347
350
  }
348
- <%_ if (['sql', 'mongodb', 'neo4j', 'couchbase'].includes(databaseType)) { _%>
351
+ <%_ if (databaseTypeSql || databaseTypeMongodb || databaseTypeNeo4j || databaseTypeCouchbase) { _%>
349
352
  newUser.setImageUrl(userDTO.getImageUrl());
350
- <%_ } _%>
353
+ <%_ } _%>
351
354
  newUser.setLangKey(userDTO.getLangKey());
352
355
  // new user is not active
353
356
  newUser.setActivated(false);
@@ -356,24 +359,24 @@ public class UserService {
356
359
  return newUser;
357
360
  }))
358
361
  .flatMap(newUser -> {
359
- Set<<% if (['sql', 'mongodb', 'neo4j'].includes(databaseType)) { %>Authority<% } else { %>String<% } %>> authorities = new HashSet<>();
360
- <%_ if (['sql', 'mongodb', 'neo4j'].includes(databaseType)) { _%>
362
+ Set<<% if (databaseTypeSql || databaseTypeMongodb || databaseTypeNeo4j) { %>Authority<% } else { %>String<% } %>> authorities = new HashSet<>();
363
+ <%_ if (databaseTypeSql || databaseTypeMongodb || databaseTypeNeo4j) { _%>
361
364
  return authorityRepository.findById(AuthoritiesConstants.USER)
362
365
  .map(authorities::add)
363
366
  .thenReturn(newUser)
364
367
  .doOnNext(user -> user.setAuthorities(authorities))
365
368
  .flatMap(this::saveUser)
366
- <%_ } else { _%>
369
+ <%_ } else { _%>
367
370
  authorities.add(AuthoritiesConstants.USER);
368
371
  newUser.setAuthorities(authorities);
369
372
  return saveUser(newUser)
370
- <%_ } _%>
371
- <%_ if (searchEngine === 'elasticsearch') { _%>
373
+ <%_ } _%>
374
+ <%_ if (searchEngineElasticsearch) { _%>
372
375
  .flatMap(user -> userSearchRepository.save(user).thenReturn(user))
373
- <%_ } _%>
374
- <%_ if (cacheManagerIsAvailable === true) { _%>
376
+ <%_ } _%>
377
+ <%_ if (cacheManagerIsAvailable) { _%>
375
378
  .doOnNext(this::clearUserCaches)
376
- <%_ } _%>
379
+ <%_ } _%>
377
380
  .doOnNext(user -> log.debug("Created Information for User: {}", user));
378
381
  });
379
382
  <%_ } _%>
@@ -385,21 +388,21 @@ public class UserService {
385
388
  return false;
386
389
  }
387
390
  userRepository.delete(existingUser);
388
- <%_ if (databaseType === 'sql') { _%>
391
+ <%_ if (databaseTypeSql) { _%>
389
392
  userRepository.flush();
390
- <%_ } _%>
391
- <%_ if (cacheManagerIsAvailable === true) { _%>
393
+ <%_ } _%>
394
+ <%_ if (cacheManagerIsAvailable) { _%>
392
395
  this.clearUserCaches(existingUser);
393
- <%_ } _%>
396
+ <%_ } _%>
394
397
  return true;
395
398
  }
396
399
 
397
400
  <%_ } _%>
398
- <%_ if (databaseType === 'sql' && reactive) { _%>
401
+ <%_ if (databaseTypeSql && reactive) { _%>
399
402
  @Transactional
400
403
  <%_ } _%>
401
404
  public <% if (reactive) { %>Mono<<%= asEntity('User') %>><% } else { %><%= asEntity('User') %><% } %> createUser(<%= asDto('AdminUser') %> userDTO) {
402
- <%= asEntity('User') %> user = new <%= asEntity('User') %>();<% if (databaseType === 'cassandra') { %>
405
+ <%= asEntity('User') %> user = new <%= asEntity('User') %>();<% if (databaseTypeCassandra) { %>
403
406
  user.setId(UUID.randomUUID().toString());<% } %>
404
407
  user.setLogin(userDTO.getLogin().toLowerCase());
405
408
  user.setFirstName(userDTO.getFirstName());
@@ -407,9 +410,9 @@ public class UserService {
407
410
  if (userDTO.getEmail() != null) {
408
411
  user.setEmail(userDTO.getEmail().toLowerCase());
409
412
  }
410
- <%_ if (['sql', 'couchbase', 'mongodb', 'neo4j'].includes(databaseType)) { _%>
413
+ <%_ if (databaseTypeSql || databaseTypeCouchbase || databaseTypeMongodb || databaseTypeNeo4j) { _%>
411
414
  user.setImageUrl(userDTO.getImageUrl());
412
- <%_ } _%>
415
+ <%_ } _%>
413
416
  if (userDTO.getLangKey() == null) {
414
417
  user.setLangKey(Constants.DEFAULT_LANGUAGE); // default language
415
418
  } else {
@@ -421,7 +424,7 @@ public class UserService {
421
424
  user.setResetKey(RandomUtil.generateResetKey());
422
425
  user.setResetDate(Instant.now());
423
426
  user.setActivated(true);
424
- <%_ if (['sql', 'mongodb', 'neo4j'].includes(databaseType)) { _%>
427
+ <%_ if (databaseTypeSql || databaseTypeMongodb || databaseTypeNeo4j) { _%>
425
428
  if (userDTO.getAuthorities() != null) {
426
429
  Set<Authority> authorities = userDTO.getAuthorities().stream()
427
430
  .map(authorityRepository::findById)
@@ -430,28 +433,28 @@ public class UserService {
430
433
  .collect(Collectors.toSet());
431
434
  user.setAuthorities(authorities);
432
435
  }
433
- <%_ } else { _%>
436
+ <%_ } else { _%>
434
437
  user.setAuthorities(userDTO.getAuthorities());
435
- <%_ } _%>
438
+ <%_ } _%>
436
439
  userRepository.save(user);
437
- <%_ if (searchEngine === 'elasticsearch') { _%>
440
+ <%_ if (searchEngineElasticsearch) { _%>
438
441
  userSearchRepository.save(user);
439
- <%_ } _%>
440
- <%_ if (cacheManagerIsAvailable === true) { _%>
442
+ <%_ } _%>
443
+ <%_ if (cacheManagerIsAvailable) { _%>
441
444
  this.clearUserCaches(user);
442
- <%_ } _%>
445
+ <%_ } _%>
443
446
  log.debug("Created Information for User: {}", user);
444
447
  return user;
445
448
  <%_ } else { _%>
446
- <%_ if (['sql', 'mongodb', 'neo4j'].includes(databaseType)) { _%>
449
+ <%_ if (databaseTypeSql || databaseTypeMongodb || databaseTypeNeo4j) { _%>
447
450
  return Flux.fromIterable(userDTO.getAuthorities() != null ? userDTO.getAuthorities() : new HashSet<>())
448
451
  .flatMap(authorityRepository::findById)
449
452
  .doOnNext(authority -> user.getAuthorities().add(authority))
450
453
  .then(Mono.just(user))
451
- <%_ } else { _%>
454
+ <%_ } else { _%>
452
455
  user.setAuthorities(userDTO.getAuthorities());
453
456
  return Mono.just(user)
454
- <%_ } _%>
457
+ <%_ } _%>
455
458
  .publishOn(Schedulers.boundedElastic())
456
459
  .map(newUser -> {
457
460
  String encryptedPassword = passwordEncoder.encode(RandomUtil.generatePassword());
@@ -462,12 +465,12 @@ public class UserService {
462
465
  return newUser;
463
466
  })
464
467
  .flatMap(this::saveUser)
465
- <%_ if (searchEngine === 'elasticsearch') { _%>
468
+ <%_ if (searchEngineElasticsearch) { _%>
466
469
  .flatMap(user1 -> userSearchRepository.save(user1).thenReturn(user1))
467
- <%_ } _%>
468
- <%_ if (cacheManagerIsAvailable === true) { _%>
470
+ <%_ } _%>
471
+ <%_ if (cacheManagerIsAvailable) { _%>
469
472
  .doOnNext(this::clearUserCaches)
470
- <%_ } _%>
473
+ <%_ } _%>
471
474
  .doOnNext(user1 -> log.debug("Created Information for User: {}", user1));
472
475
  <%_ } _%>
473
476
  }
@@ -478,90 +481,90 @@ public class UserService {
478
481
  * @param userDTO user to update.
479
482
  * @return updated user.
480
483
  */
481
- <%_ if (databaseType === 'sql' && reactive) { _%>
484
+ <%_ if (databaseTypeSql && reactive) { _%>
482
485
  @Transactional
483
486
  <%_ } _%>
484
487
  public <% if (reactive) { %>Mono<% } else { %>Optional<% } %><<%= asDto('AdminUser') %>> updateUser(<%= asDto('AdminUser') %> userDTO) {
485
- <%_ if (!reactive) { _%>
488
+ <%_ if (!reactive) { _%>
486
489
  return Optional.of(userRepository
487
490
  .findById(userDTO.getId()))
488
491
  .filter(Optional::isPresent)
489
492
  .map(Optional::get)
490
493
  .map(user -> {
491
- <%_ } else { _%>
494
+ <%_ } else { _%>
492
495
  return userRepository.findById(userDTO.getId())
493
- .<%_ if (['sql', 'mongodb'].includes(databaseType)) { _%>flatMap<% } else { %>map<% } %>(user -> {
494
- <%_ } _%>
495
- <%_ if (databaseType === 'couchbase') { _%>
496
+ .<%_ if (databaseTypeSql || databaseTypeMongodb) { _%>flatMap<% } else { %>map<% } %>(user -> {
497
+ <%_ } _%>
498
+ <%_ if (databaseTypeCouchbase) { _%>
496
499
  if (!user.getLogin().equals(userDTO.getLogin())) {
497
500
  userRepository.deleteById(userDTO.getId());
498
501
  }
499
- <%_ } _%>
500
- <%_ if (cacheManagerIsAvailable === true) { _%>
502
+ <%_ } _%>
503
+ <%_ if (cacheManagerIsAvailable) { _%>
501
504
  this.clearUserCaches(user);
502
- <%_ } _%>
505
+ <%_ } _%>
503
506
  user.setLogin(userDTO.getLogin().toLowerCase());
504
507
  user.setFirstName(userDTO.getFirstName());
505
508
  user.setLastName(userDTO.getLastName());
506
509
  if (userDTO.getEmail() != null) {
507
510
  user.setEmail(userDTO.getEmail().toLowerCase());
508
511
  }
509
- <%_ if (['sql', 'mongodb', 'neo4j', 'couchbase'].includes(databaseType)) { _%>
512
+ <%_ if (databaseTypeSql || databaseTypeMongodb || databaseTypeNeo4j || databaseTypeCouchbase) { _%>
510
513
  user.setImageUrl(userDTO.getImageUrl());
511
- <%_ } _%>
514
+ <%_ } _%>
512
515
  user.setActivated(userDTO.isActivated());
513
516
  user.setLangKey(userDTO.getLangKey());
514
- <%_ if (['sql', 'mongodb', 'neo4j'].includes(databaseType)) { _%>
517
+ <%_ if (databaseTypeSql || databaseTypeMongodb || databaseTypeNeo4j) { _%>
515
518
  Set<Authority> managedAuthorities = user.getAuthorities();
516
519
  managedAuthorities.clear();
517
- <%_ } else { // Cassandra & Couchbase _%>
520
+ <%_ } else { /* Cassandra & Couchbase */ _%>
518
521
  user.setAuthorities(userDTO.getAuthorities());
519
- <%_ } _%>
520
- <%_ if (!reactive) { _%>
521
- <%_ if (['sql', 'mongodb', 'neo4j'].includes(databaseType)) { _%>
522
+ <%_ } _%>
523
+ <%_ if (!reactive) { _%>
524
+ <%_ if (databaseTypeSql || databaseTypeMongodb || databaseTypeNeo4j) { _%>
522
525
  userDTO.getAuthorities().stream()
523
526
  .map(authorityRepository::findById)
524
527
  .filter(Optional::isPresent)
525
528
  .map(Optional::get)
526
529
  .forEach(managedAuthorities::add);
527
- <%_ } _%>
528
- <%_ if (['mongodb', 'neo4j', 'couchbase', 'cassandra'].includes(databaseType)) { _%>
530
+ <%_ } _%>
531
+ <%_ if (databaseTypeMongodb || databaseTypeNeo4j || databaseTypeCouchbase || databaseTypeCassandra) { _%>
529
532
  userRepository.save(user);
530
- <%_ } _%>
531
- <%_ if (searchEngine === 'elasticsearch') { _%>
533
+ <%_ } _%>
534
+ <%_ if (searchEngineElasticsearch) { _%>
532
535
  userSearchRepository.save(user);
533
- <%_ } _%>
534
- <%_ if (cacheManagerIsAvailable === true) { _%>
536
+ <%_ } _%>
537
+ <%_ if (cacheManagerIsAvailable) { _%>
535
538
  this.clearUserCaches(user);
536
- <%_ } _%>
539
+ <%_ } _%>
537
540
  log.debug("Changed Information for User: {}", user);
538
541
  return user;
539
542
  })
540
- <%_ } else { // reactive _%>
541
- <%_ if (['sql', 'mongodb'].includes(databaseType)) { _%>
542
- <%_ if (databaseType === 'sql') { _%>
543
+ <%_ } else { /* reactive */ _%>
544
+ <%_ if (databaseTypeSql || databaseTypeMongodb) { _%>
545
+ <%_ if (databaseTypeSql) { _%>
543
546
  return userRepository
544
547
  .deleteUserAuthorities(user.getId())
545
548
  .thenMany(Flux.fromIterable(userDTO.getAuthorities()))
546
- <%_ } else { _%>
549
+ <%_ } else { _%>
547
550
  return Flux.fromIterable(userDTO.getAuthorities())
548
- <%_ } _%>
551
+ <%_ } _%>
549
552
  .flatMap(authorityRepository::findById)
550
553
  .map(managedAuthorities::add)
551
554
  .then(Mono.just(user));
552
- <%_ } else { _%>
555
+ <%_ } else { _%>
553
556
  return user;
554
- <%_ } _%>
557
+ <%_ } _%>
555
558
  })
556
559
  .flatMap(this::saveUser)
557
- <%_ if (searchEngine === 'elasticsearch') { _%>
560
+ <%_ if (searchEngineElasticsearch) { _%>
558
561
  .flatMap(user -> userSearchRepository.save(user).thenReturn(user))
559
- <%_ } _%>
560
- <%_ if (cacheManagerIsAvailable === true) { _%>
562
+ <%_ } _%>
563
+ <%_ if (cacheManagerIsAvailable) { _%>
561
564
  .doOnNext(this::clearUserCaches)
562
- <%_ } _%>
565
+ <%_ } _%>
563
566
  .doOnNext(user -> log.debug("Changed Information for User: {}", user))
564
- <%_ } _%>
567
+ <%_ } _%>
565
568
  .map(<%= asDto('AdminUser') %>::new);
566
569
  }
567
570
 
@@ -569,33 +572,33 @@ public class UserService {
569
572
  public void deleteUser(String login) {
570
573
  userRepository.findOneByLogin(login).ifPresent(user -> {
571
574
  userRepository.delete(user);
572
- <%_ if (searchEngine === 'elasticsearch') { _%>
575
+ <%_ if (searchEngineElasticsearch) { _%>
573
576
  userSearchRepository.delete(user);
574
- <%_ } _%>
575
- <%_ if (cacheManagerIsAvailable === true) { _%>
577
+ <%_ } _%>
578
+ <%_ if (cacheManagerIsAvailable) { _%>
576
579
  this.clearUserCaches(user);
577
- <%_ } _%>
580
+ <%_ } _%>
578
581
  log.debug("Deleted User: {}", user);
579
582
  });
580
583
  }
581
584
  <%_ } else { _%>
582
- <%_ if (databaseType === 'sql') { _%>
585
+ <%_ if (databaseTypeSql) { _%>
583
586
  @Transactional
584
- <%_ } _%>
587
+ <%_ } _%>
585
588
  public Mono<Void> deleteUser(String login) {
586
589
  return userRepository.findOneByLogin(login)
587
590
  .flatMap(user -> userRepository.delete(user).thenReturn(user))
588
- <%_ if (searchEngine === 'elasticsearch') { _%>
591
+ <%_ if (searchEngineElasticsearch) { _%>
589
592
  .flatMap(user -> userSearchRepository.delete(user).thenReturn(user))
590
- <%_ } _%>
591
- <%_ if (cacheManagerIsAvailable === true) { _%>
593
+ <%_ } _%>
594
+ <%_ if (cacheManagerIsAvailable) { _%>
592
595
  .doOnNext(this::clearUserCaches)
593
- <%_ } _%>
596
+ <%_ } _%>
594
597
  .doOnNext(user -> log.debug("Deleted User: {}", user))
595
598
  .then();
596
599
  }
597
600
  <%_ } _%>
598
- <%_ } // authenticationType !== 'oauth2' _%>
601
+ <%_ } /* authenticationType !== 'oauth2'*/ _%>
599
602
 
600
603
  /**
601
604
  * Update basic information (first name, last name, email, language) for the current user.
@@ -604,17 +607,17 @@ public class UserService {
604
607
  * @param lastName last name of user.
605
608
  * @param email email id of user.
606
609
  * @param langKey language key.
607
- <%_ if (['sql', 'mongodb', 'couchbase', 'neo4j'].includes(databaseType)) { _%>
610
+ <%_ if (databaseTypeSql || databaseTypeMongodb || databaseTypeCouchbase || databaseTypeNeo4j) { _%>
608
611
  * @param imageUrl image URL of user.
609
- <%_ } _%>
610
- <%_ if (reactive) { _%>
612
+ <%_ } _%>
613
+ <%_ if (reactive) { _%>
611
614
  * @return a completed {@link Mono}.
612
- <%_ } _%>
615
+ <%_ } _%>
613
616
  */
614
- <%_ if (databaseType === 'sql' && reactive) { _%>
617
+ <%_ if (databaseTypeSql && reactive) { _%>
615
618
  @Transactional
616
- <%_ } _%>
617
- public <% if (reactive) { %>Mono<Void><% } else { %>void<% } %> updateUser(String firstName, String lastName, String email, String langKey<% if (['sql', 'mongodb', 'couchbase', 'neo4j'].includes(databaseType)) { %>, String imageUrl<% } %>) {
619
+ <%_ } _%>
620
+ public <% if (reactive) { %>Mono<Void><% } else { %>void<% } %> updateUser(String firstName, String lastName, String email, String langKey<% if (databaseTypeSql || databaseTypeMongodb || databaseTypeCouchbase || databaseTypeNeo4j) { %>, String imageUrl<% } %>) {
618
621
  <% if (reactive) { %>return <% } %>SecurityUtils.getCurrentUserLogin()
619
622
  .flatMap(userRepository::findOneByLogin)
620
623
  .<% if (reactive) { %>flatMap<% } else { %>ifPresent<% } %>(user -> {
@@ -624,50 +627,50 @@ public class UserService {
624
627
  user.setEmail(email.toLowerCase());
625
628
  }
626
629
  user.setLangKey(langKey);
627
- <%_ if (['sql', 'mongodb', 'couchbase', 'neo4j'].includes(databaseType)) { _%>
630
+ <%_ if (databaseTypeSql || databaseTypeMongodb || databaseTypeCouchbase || databaseTypeNeo4j) { _%>
628
631
  user.setImageUrl(imageUrl);
629
- <%_ } _%>
630
- <%_ if (!reactive) { _%>
631
- <%_ if (['mongodb', 'neo4j', 'couchbase', 'cassandra'].includes(databaseType)) { _%>
632
+ <%_ } _%>
633
+ <%_ if (!reactive) { _%>
634
+ <%_ if (databaseTypeMongodb || databaseTypeCouchbase || databaseTypeNeo4j || databaseTypeCassandra) { _%>
632
635
  userRepository.save(user);
633
- <%_ } _%>
634
- <%_ if (searchEngine === 'elasticsearch') { _%>
636
+ <%_ } _%>
637
+ <%_ if (searchEngineElasticsearch) { _%>
635
638
  userSearchRepository.save(user);
636
- <%_ } _%>
637
- <%_ if (cacheManagerIsAvailable === true) { _%>
639
+ <%_ } _%>
640
+ <%_ if (cacheManagerIsAvailable) { _%>
638
641
  this.clearUserCaches(user);
639
- <%_ } _%>
642
+ <%_ } _%>
640
643
  log.debug("Changed Information for User: {}", user);
641
644
  });
642
- <%_ } else { _%>
645
+ <%_ } else { _%>
643
646
  return saveUser(user);
644
647
  })
645
- <%_ if (searchEngine === 'elasticsearch') { _%>
648
+ <%_ if (searchEngineElasticsearch) { _%>
646
649
  .flatMap(user -> userSearchRepository.save(user).thenReturn(user))
647
- <%_ } _%>
648
- <%_ if (cacheManagerIsAvailable === true) { _%>
650
+ <%_ } _%>
651
+ <%_ if (cacheManagerIsAvailable) { _%>
649
652
  .doOnNext(this::clearUserCaches)
650
- <%_ } _%>
653
+ <%_ } _%>
651
654
  .doOnNext(user -> log.debug("Changed Information for User: {}", user))
652
655
  .then();
653
- <%_ } _%>
656
+ <%_ } _%>
654
657
  }
655
658
 
656
- <%_ if (reactive) { _%>
657
- <%_ if (databaseType === 'sql' && authenticationType === 'oauth2') { _%>
659
+ <%_ if (reactive) { _%>
660
+ <%_ if (databaseTypeSql && authenticationTypeOauth2) { _%>
658
661
  @Transactional
659
662
  public Mono<User> saveUser(User user) {
660
663
  return saveUser(user, false);
661
664
  }
662
665
 
663
666
  <%_ } _%>
664
- <%_ if (databaseType === 'sql') { _%>
667
+ <%_ if (databaseTypeSql) { _%>
665
668
  @Transactional
666
669
  <%_ } _%>
667
- <% if (databaseType !== 'sql') { %>private <% } else { %>public <% } %>Mono<<%= asEntity('User') %>> saveUser(<%= asEntity('User') %> user<% if (databaseType === 'sql' && authenticationType === 'oauth2') { %>, boolean forceCreate<% } %>) {
668
- <%_ if (databaseType === 'cassandra') { _%>
670
+ <% if (!databaseTypeSql) { %>private <% } else { %>public <% } %>Mono<<%= asEntity('User') %>> saveUser(<%= asEntity('User') %> user<% if (databaseTypeSql && authenticationTypeOauth2) { %>, boolean forceCreate<% } %>) {
671
+ <%_ if (databaseTypeCassandra) { _%>
669
672
  return userRepository.save(user);
670
- <%_ } else { _%>
673
+ <%_ } else { _%>
671
674
  return SecurityUtils.getCurrentUserLogin()
672
675
  .switchIfEmpty(Mono.just(Constants.SYSTEM))
673
676
  .flatMap(login -> {
@@ -675,10 +678,10 @@ public class UserService {
675
678
  user.setCreatedBy(login);
676
679
  }
677
680
  user.setLastModifiedBy(login);
678
- <%_ if (databaseType === 'sql') { _%>
681
+ <%_ if (databaseTypeSql) { _%>
679
682
  // Saving the relationship can be done in an entity callback
680
683
  // once https://github.com/spring-projects/spring-data-r2dbc/issues/215 is done
681
- <%_ if (authenticationType === 'oauth2') { _%>
684
+ <%_ if (authenticationTypeOauth2) { _%>
682
685
  Mono<User> persistedUser;
683
686
  if (forceCreate) {
684
687
  persistedUser = userRepository.create(user);
@@ -686,88 +689,88 @@ public class UserService {
686
689
  persistedUser = userRepository.save(user);
687
690
  }
688
691
  return persistedUser
689
- <%_ } else { _%>
692
+ <%_ } else { _%>
690
693
  return userRepository.save(user)
691
- <%_ } _%>
694
+ <%_ } _%>
692
695
  .flatMap(savedUser ->
693
696
  Flux.fromIterable(user.getAuthorities())
694
697
  .flatMap(authority -> userRepository.saveUserAuthority(savedUser.getId(), authority.getName()))
695
698
  .then(Mono.just(savedUser))
696
699
  );
697
- <%_ } else { _%>
700
+ <%_ } else { _%>
698
701
  return userRepository.save(user);
699
- <%_ } _%>
702
+ <%_ } _%>
700
703
  });
701
- <%_ } _%>
704
+ <%_ } _%>
702
705
  }
703
- <%_ } _%>
704
- <%_ if (authenticationType !== 'oauth2') { _%>
706
+ <%_ } _%>
707
+ <%_ if (!authenticationTypeOauth2) { _%>
705
708
 
706
- <%_ if (databaseType === 'sql') { _%>
709
+ <%_ if (databaseTypeSql) { _%>
707
710
  @Transactional
708
711
  <%_ } _%>
709
712
  public <% if (reactive) { %>Mono<Void><% } else { %>void<% } %> changePassword(String currentClearTextPassword, String newPassword) {
710
713
  <% if (reactive) { %>return <% } %>SecurityUtils.getCurrentUserLogin()
711
714
  .flatMap(userRepository::findOneByLogin)
712
- <%_ if (reactive) { _%>
715
+ <%_ if (reactive) { _%>
713
716
  .publishOn(Schedulers.boundedElastic())
714
717
  .map(user -> {
715
- <%_ } else { _%>
718
+ <%_ } else { _%>
716
719
  .ifPresent(user -> {
717
- <%_ } _%>
720
+ <%_ } _%>
718
721
  String currentEncryptedPassword = user.getPassword();
719
722
  if (!passwordEncoder.matches(currentClearTextPassword, currentEncryptedPassword)) {
720
723
  throw new InvalidPasswordException();
721
724
  }
722
725
  String encryptedPassword = passwordEncoder.encode(newPassword);
723
726
  user.setPassword(encryptedPassword);
724
- <%_ if (!reactive) { _%>
725
- <%_ if (['mongodb', 'neo4j', 'couchbase', 'cassandra'].includes(databaseType)) { _%>
727
+ <%_ if (!reactive) { _%>
728
+ <%_ if (databaseTypeMongodb || databaseTypeNeo4j || databaseTypeCouchbase || databaseTypeCassandra) { _%>
726
729
  userRepository.save(user);
727
- <%_ } _%>
728
- <%_ if (cacheManagerIsAvailable === true) { _%>
730
+ <%_ } _%>
731
+ <%_ if (cacheManagerIsAvailable) { _%>
729
732
  this.clearUserCaches(user);
730
- <%_ } _%>
733
+ <%_ } _%>
731
734
  log.debug("Changed password for User: {}", user);
732
735
  });
733
- <%_ } else { _%>
736
+ <%_ } else { _%>
734
737
  return user;
735
738
  })
736
739
  .flatMap(this::saveUser)
737
- <%_ if (cacheManagerIsAvailable === true) { _%>
740
+ <%_ if (cacheManagerIsAvailable) { _%>
738
741
  .doOnNext(this::clearUserCaches)
739
- <%_ } _%>
742
+ <%_ } _%>
740
743
  .doOnNext(user -> log.debug("Changed password for User: {}", user))
741
744
  .then();
742
- <%_ } _%>
745
+ <%_ } _%>
743
746
  }
744
- <%_ } _%>
747
+ <%_ } _%>
745
748
 
746
- <%_ if (databaseType === 'sql') { _%>
749
+ <%_ if (databaseTypeSql) { _%>
747
750
  @Transactional(readOnly = true)
748
- <%_ } _%>
749
- <%_ if (['sql', 'mongodb', 'neo4j', 'couchbase'].includes(databaseType)) { _%>
751
+ <%_ } _%>
752
+ <%_ if (databaseTypeSql || databaseTypeMongodb || databaseTypeNeo4j || databaseTypeCouchbase) { _%>
750
753
  public <% if (reactive) { %>Flux<% } else { %>Page<% } %><<%= asDto('AdminUser') %>> getAllManagedUsers(Pageable pageable) {
751
- return userRepository.findAll<% if (reactive) { %><% if (databaseType === 'sql') { %>WithAuthorities<% } else { %>ByIdNotNull<% }} %>(pageable).map(<%= asDto('AdminUser') %>::new);
754
+ return userRepository.findAll<% if (reactive) { %><% if (databaseTypeSql) { %>WithAuthorities<% } else { %>ByIdNotNull<% }} %>(pageable).map(<%= asDto('AdminUser') %>::new);
752
755
  }
753
756
 
754
- <%_ if (databaseType === 'sql') { _%>
757
+ <%_ if (databaseTypeSql) { _%>
755
758
  @Transactional(readOnly = true)
756
759
  <%_ } _%>
757
760
  public <% if (reactive) { %>Flux<% } else { %>Page<% } %><<%= asDto('User') %>> getAllPublicUsers(Pageable pageable) {
758
- return userRepository.findAllByIdNotNullAndActivatedIsTrue(pageable).map(<%= asDto('User') %>::new);
761
+ return userRepository.findAllBy<% if (!databaseTypeCouchbase) { %>IdNotNullAnd<% } %>ActivatedIsTrue(pageable).map(<%= asDto('User') %>::new);
759
762
  }
760
763
 
761
- <%_ if (reactive) { _%>
764
+ <%_ if (reactive) { _%>
762
765
 
763
- <%_ if (databaseType === 'sql') { _%>
766
+ <%_ if (databaseTypeSql) { _%>
764
767
  @Transactional(readOnly = true)
765
- <%_ } _%>
768
+ <%_ } _%>
766
769
  public Mono<Long> countManagedUsers() {
767
770
  return userRepository.count();
768
771
  }
769
- <%_ } _%>
770
- <%_ } else { // Cassandra _%>
772
+ <%_ } _%>
773
+ <%_ } else { /* Cassandra */ _%>
771
774
  public <% if (reactive) { %>Flux<% } else { %>List<% } %><<%= asDto('AdminUser') %>> getAllManagedUsers() {
772
775
  return userRepository.findAll()<% if (!reactive) { %>.stream()<% } %>
773
776
  .map(<%= asDto('AdminUser') %>::new)<% if (!reactive) { %>
@@ -780,28 +783,28 @@ public class UserService {
780
783
  .map(<%= asDto('User') %>::new)<% if (!reactive) { %>
781
784
  .collect(Collectors.toList())<% } %>;
782
785
  }
783
- <%_ } _%>
786
+ <%_ } _%>
784
787
 
785
- <%_ if (databaseType === 'sql') { _%>
788
+ <%_ if (databaseTypeSql) { _%>
786
789
  @Transactional(readOnly = true)
787
- <%_ } _%>
790
+ <%_ } _%>
788
791
  public <% if (reactive) { %>Mono<% } else { %>Optional<% } %><<%= asEntity('User') %>> getUserWithAuthoritiesByLogin(String login) {
789
- <%_ if (databaseType === 'sql') { _%>
792
+ <%_ if (databaseTypeSql) { _%>
790
793
  return userRepository.findOneWithAuthoritiesByLogin(login);
791
- <%_ } else { // MongoDB, Couchbase and Cassandra _%>
794
+ <%_ } else { /* MongoDB, Couchbase and Cassandra */ _%>
792
795
  return userRepository.findOneByLogin(login);
793
- <%_ } _%>
796
+ <%_ } _%>
794
797
  }
795
798
 
796
- <%_ if (authenticationType !== 'oauth2') { _%>
797
- <%_ if (databaseType === 'sql') { _%>
799
+ <%_ if (!authenticationTypeOauth2) { _%>
800
+ <%_ if (databaseTypeSql) { _%>
798
801
  @Transactional(readOnly = true)
799
- <%_ } _%>
802
+ <%_ } _%>
800
803
  public <% if (reactive) { %>Mono<% } else { %>Optional<% } %><<%= asEntity('User') %>> getUserWithAuthorities() {
801
- return SecurityUtils.getCurrentUserLogin().flatMap(userRepository::findOne<% if (databaseType === 'sql') { %>WithAuthorities<% } %>ByLogin);
804
+ return SecurityUtils.getCurrentUserLogin().flatMap(userRepository::findOne<% if (databaseTypeSql) { %>WithAuthorities<% } %>ByLogin);
802
805
  }
803
- <%_ } _%>
804
- <%_ if ((databaseType === 'sql' || databaseType === 'mongodb' || databaseType === 'neo4j' || databaseType === 'couchbase') && authenticationType === 'session' && !reactive) { _%>
806
+ <%_ } _%>
807
+ <%_ if ((databaseTypeSql || databaseTypeMongodb || databaseTypeNeo4j || databaseTypeCouchbase) && authenticationTypeSession && !reactive) { _%>
805
808
 
806
809
  /**
807
810
  * Persistent Token are used for providing automatic authentication, they should be automatically deleted after
@@ -819,8 +822,8 @@ public class UserService {
819
822
  persistentTokenRepository.delete(token);
820
823
  });
821
824
  }
822
- <%_ } _%>
823
- <%_ if (authenticationType !== 'oauth2' && (databaseType === 'sql' || databaseType === 'mongodb' || databaseType === 'neo4j' || databaseType === 'couchbase')) { _%>
825
+ <%_ } _%>
826
+ <%_ if (!authenticationTypeOauth2 && (databaseTypeSql || databaseTypeMongodb || databaseTypeNeo4j || databaseTypeCouchbase)) { _%>
824
827
 
825
828
  /**
826
829
  * Not activated users should be automatically deleted after 3 days.
@@ -829,65 +832,65 @@ public class UserService {
829
832
  */
830
833
  @Scheduled(cron = "0 0 1 * * ?")
831
834
  public void removeNotActivatedUsers() {
832
- <%_ if (!reactive) { _%>
835
+ <%_ if (!reactive) { _%>
833
836
  userRepository
834
837
  .findAllByActivatedIsFalseAndActivationKeyIsNotNullAndCreatedDateBefore(Instant.now().minus(3, ChronoUnit.DAYS))
835
838
  .forEach(user -> {
836
839
  log.debug("Deleting not activated user {}", user.getLogin());
837
840
  userRepository.delete(user);
838
- <%_ if (searchEngine === 'elasticsearch') { _%>
841
+ <%_ if (searchEngineElasticsearch) { _%>
839
842
  userSearchRepository.delete(user);
840
- <%_ } _%>
841
- <%_ if (cacheManagerIsAvailable === true) { _%>
843
+ <%_ } _%>
844
+ <%_ if (cacheManagerIsAvailable) { _%>
842
845
  this.clearUserCaches(user);
843
- <%_ } _%>
846
+ <%_ } _%>
844
847
  });
845
- <%_ } else { _%>
848
+ <%_ } else { _%>
846
849
  removeNotActivatedUsersReactively().blockLast();
847
850
  }
848
851
 
849
- <%_ if (databaseType === 'sql') { _%>
852
+ <%_ if (databaseTypeSql) { _%>
850
853
  @Transactional
851
- <%_ } _%>
854
+ <%_ } _%>
852
855
  public Flux<<%= asEntity('User') %>> removeNotActivatedUsersReactively() {
853
856
  return userRepository
854
- .findAllByActivatedIsFalseAndActivationKeyIsNotNullAndCreatedDateBefore(<%_ if (databaseType === 'sql') { _%>LocalDateTime.ofInstant(Instant.now().minus(3, ChronoUnit.DAYS), ZoneOffset.UTC)<%_ } else { _%>Instant.now().minus(3, ChronoUnit.DAYS)<%_ } _%>)
857
+ .findAllByActivatedIsFalseAndActivationKeyIsNotNullAndCreatedDateBefore(<%_ if (databaseTypeSql) { _%>LocalDateTime.ofInstant(Instant.now().minus(3, ChronoUnit.DAYS), ZoneOffset.UTC)<%_ } else { _%>Instant.now().minus(3, ChronoUnit.DAYS)<%_ } _%>)
855
858
  .flatMap(user -> userRepository.delete(user).thenReturn(user))
856
- <%_ if (searchEngine === 'elasticsearch') { _%>
859
+ <%_ if (searchEngineElasticsearch) { _%>
857
860
  .flatMap(user -> userSearchRepository.delete(user).thenReturn(user))
858
- <%_ } _%>
859
- <%_ if (cacheManagerIsAvailable === true) { _%>
861
+ <%_ } _%>
862
+ <%_ if (cacheManagerIsAvailable) { _%>
860
863
  .doOnNext(this::clearUserCaches)
861
- <%_ } _%>
864
+ <%_ } _%>
862
865
  .doOnNext(user -> log.debug("Deleted User: {}", user));
863
- <%_ } _%>
864
- }
865
866
  <%_ } _%>
866
- <%_ if (databaseType === 'sql' || databaseType === 'mongodb' || databaseType === 'neo4j' || databaseType === 'couchbase') { _%>
867
+ }
868
+ <%_ } _%>
869
+ <%_ if (databaseTypeSql || databaseTypeMongodb || databaseTypeNeo4j || databaseTypeCouchbase) { _%>
867
870
 
868
871
  /**
869
872
  * Gets a list of all the authorities.
870
873
  * @return a list of all the authorities.
871
874
  */
872
- <%_ if (databaseType === 'sql') { _%>
875
+ <%_ if (databaseTypeSql) { _%>
873
876
  @Transactional(readOnly = true)
874
877
  <%_ } _%>
875
878
  public <% if (reactive) { %>Flux<% } else { %>List<% } %><String> getAuthorities() {
876
879
  return authorityRepository.findAll()<% if (!reactive) { %>.stream()<% } %>.map(Authority::getName)<% if (!reactive) { %>.collect(Collectors.toList())<% } %>;
877
880
  }
878
- <%_ } _%>
879
- <%_ if (authenticationType === 'oauth2') { _%>
881
+ <%_ } _%>
882
+ <%_ if (authenticationTypeOauth2) { _%>
880
883
 
881
884
  private <% if (reactive) { %>Mono<<%= asEntity('User') %>><% } else { %><%= asEntity('User') %><% } %> syncUserWithIdP(Map<String, Object> details, <%= asEntity('User') %> user) {
882
885
  // save authorities in to sync user roles/groups between IdP and JHipster's local database
883
- <%_ if (!reactive) { _%>
886
+ <%_ if (!reactive) { _%>
884
887
  Collection<String> dbAuthorities = getAuthorities();
885
- <%_ if (databaseType !== 'couchbase') { _%>
888
+ <%_ if (!databaseTypeCouchbase) { _%>
886
889
  Collection<String> userAuthorities =
887
890
  user.getAuthorities().stream().map(Authority::getName).collect(Collectors.toList());
888
- <%_ } else { _%>
891
+ <%_ } else { _%>
889
892
  Collection<String> userAuthorities = user.getAuthorities();
890
- <%_ } _%>
893
+ <%_ } _%>
891
894
  for (String authority : userAuthorities) {
892
895
  if (!dbAuthorities.contains(authority)) {
893
896
  log.debug("Saving authority '{}' in local database", authority);
@@ -917,14 +920,14 @@ public class UserService {
917
920
  } else {
918
921
  log.debug("Saving user '{}' in local database", user.getLogin());
919
922
  userRepository.save(user);
920
- <%_ if (cacheManagerIsAvailable === true) { _%>
923
+ <%_ if (cacheManagerIsAvailable) { _%>
921
924
  this.clearUserCaches(user);
922
- <%_ } _%>
925
+ <%_ } _%>
923
926
  }
924
927
  return user;
925
- <%_ } else { _%>
928
+ <%_ } else { _%>
926
929
  Collection<String> userAuthorities =
927
- user.getAuthorities().stream()<% if (databaseType !== 'couchbase') { %>.map(Authority::getName)<% } %>.collect(Collectors.toList());
930
+ user.getAuthorities().stream()<% if (!databaseTypeCouchbase) { %>.map(Authority::getName)<% } %>.collect(Collectors.toList());
928
931
 
929
932
  return getAuthorities().collectList()
930
933
  .flatMapMany(dbAuthorities -> {
@@ -941,7 +944,7 @@ public class UserService {
941
944
  .doOnNext(authority -> log.debug("Saving authority '{}' in local database", authority))
942
945
  .flatMap(authorityRepository::save)
943
946
  .then(userRepository.findOneByLogin(user.getLogin()))
944
- .switchIfEmpty(<% if (authenticationType === 'oauth2' && databaseType === 'sql') { %>saveUser(user, true)<% } else { %>userRepository.save(user)<% } %>)
947
+ .switchIfEmpty(<% if (authenticationTypeOauth2 && databaseTypeSql) { %>saveUser(user, true)<% } else { %>userRepository.save(user)<% } %>)
945
948
  .flatMap(existingUser -> {
946
949
  // if IdP sends last updated information, use it to determine if an update should happen
947
950
  if (details.get("updated_at") != null) {
@@ -961,24 +964,24 @@ public class UserService {
961
964
  return Mono.empty();
962
965
  })
963
966
  .thenReturn(user);
964
- <%_ } _%>
965
- }
966
967
  <%_ } _%>
968
+ }
969
+ <%_ } _%>
967
970
 
968
- <%_ } // databaseType !== 'no' _%>
969
- <%_ if (authenticationType === 'oauth2') { _%>
971
+ <%_ } /* databaseType !== 'no' */ _%>
972
+ <%_ if (authenticationTypeOauth2) { _%>
970
973
  /**
971
974
  * Returns the user from an OAuth 2.0 login or resource server with JWT.
972
- <%_ if (databaseType !== 'no') { _%>
975
+ <%_ if (!databaseTypeNo) { _%>
973
976
  * Synchronizes the user in the local repository.
974
- <%_ } _%>
977
+ <%_ } _%>
975
978
  *
976
979
  * @param authToken the authentication token.
977
980
  * @return the user from the authentication.
978
981
  */
979
- <%_ if (databaseType === 'sql') { _%>
982
+ <%_ if (databaseTypeSql) { _%>
980
983
  @Transactional
981
- <%_ } _%>
984
+ <%_ } _%>
982
985
  public <% if (!reactive) { %><%= asDto('AdminUser') %><% } else { %>Mono<<%= asDto('AdminUser') %>><% } %> getUserFromAuthentication(AbstractAuthenticationToken authToken) {
983
986
  Map<String, Object> attributes;
984
987
  if (authToken instanceof OAuth2AuthenticationToken) {
@@ -988,37 +991,53 @@ public class UserService {
988
991
  } else {
989
992
  throw new IllegalArgumentException("AuthenticationToken is not OAuth2 or JWT!");
990
993
  }
991
- <%= databaseType === 'no' ? asDto('AdminUser') : asEntity('User') %> user = getUser(attributes);
994
+ <%= databaseTypeNo ? asDto('AdminUser') : asEntity('User') %> user = getUser(attributes);
992
995
  user.setAuthorities(authToken.getAuthorities().stream()
993
996
  .map(GrantedAuthority::getAuthority)
994
- <%_ if (['sql', 'mongodb', 'neo4j'].includes(databaseType)) { _%>
997
+ <%_ if (databaseTypeSql || databaseTypeMongodb || databaseTypeNeo4j) { _%>
995
998
  .map(authority -> {
996
999
  Authority auth = new Authority();
997
1000
  auth.setName(authority);
998
1001
  return auth;
999
1002
  })
1000
- <%_ } _%>
1003
+ <%_ } _%>
1001
1004
  .collect(Collectors.toSet()));
1002
- return <% if (databaseType !== 'no' && !reactive) { %>new <%= asDto('AdminUser') %>(syncUserWithIdP(attributes, user))<% } else if (!reactive) { %>user<% } %><% if (databaseType === 'no' && reactive) { %>Mono.just(user)<% } else if (reactive) { %>syncUserWithIdP(attributes, user).flatMap(u -> Mono.just(new <%= asDto('AdminUser') %>(u)))<% } %>;
1005
+
1006
+ <%_ if (databaseTypeNo) { _%>
1007
+ return <% if (reactive) { %>Mono.just(user)<% } else { %>user<% } %>;
1008
+ <%_ } else { _%>
1009
+ <%_ if (!reactive) { _%>
1010
+ return new <%= asDto('AdminUser') %>(syncUserWithIdP(attributes, user));
1011
+ <%_ } else { _%>
1012
+ return syncUserWithIdP(attributes, user).flatMap(u -> Mono.just(new <%= asDto('AdminUser') %>(u)));
1013
+ <%_ } _%>
1014
+ <%_ } _%>
1003
1015
  }
1004
1016
 
1005
- private static <%= databaseType === 'no' ? asDto('AdminUser') : asEntity('User') %> getUser(Map<String, Object> details) {
1006
- <%= databaseType === 'no' ? asDto('AdminUser') : asEntity('User') %> user = new <%= databaseType === 'no' ? asDto('AdminUser') : asEntity('User') %>();
1017
+ private static <%= databaseTypeNo ? asDto('AdminUser') : asEntity('User') %> getUser(Map<String, Object> details) {
1018
+ <%= databaseTypeNo ? asDto('AdminUser') : asEntity('User') %> user = new <%= databaseTypeNo ? asDto('AdminUser') : asEntity('User') %>();
1007
1019
  Boolean activated = Boolean.TRUE;
1020
+ String sub = String.valueOf(details.get("sub"));
1021
+ String username = null;
1022
+ if (details.get("preferred_username") != null) {
1023
+ username = ((String) details.get("preferred_username")).toLowerCase();
1024
+ }
1008
1025
  // handle resource server JWT, where sub claim is email and uid is ID
1009
1026
  if (details.get("uid") != null) {
1010
1027
  user.setId((String) details.get("uid"));
1011
- user.setLogin((String) details.get("sub"));
1028
+ user.setLogin(sub);
1012
1029
  } else {
1013
- user.setId((String) details.get("sub"));
1030
+ user.setId(sub);
1014
1031
  }
1015
- if (details.get("preferred_username") != null) {
1016
- user.setLogin(((String) details.get("preferred_username")).toLowerCase());
1032
+ if (username != null) {
1033
+ user.setLogin(username);
1017
1034
  } else if (user.getLogin() == null) {
1018
1035
  user.setLogin(user.getId());
1019
1036
  }
1020
1037
  if (details.get("given_name") != null) {
1021
1038
  user.setFirstName((String) details.get("given_name"));
1039
+ } else if (details.get("name") != null) {
1040
+ user.setFirstName((String) details.get("name"));
1022
1041
  }
1023
1042
  if (details.get("family_name") != null) {
1024
1043
  user.setLastName((String) details.get("family_name"));
@@ -1028,8 +1047,11 @@ public class UserService {
1028
1047
  }
1029
1048
  if (details.get("email") != null) {
1030
1049
  user.setEmail(((String) details.get("email")).toLowerCase());
1050
+ } else if (sub.contains("|") && (username != null && username.contains("@"))) {
1051
+ // special handling for Auth0
1052
+ user.setEmail(username);
1031
1053
  } else {
1032
- user.setEmail((String) details.get("sub"));
1054
+ user.setEmail(sub);
1033
1055
  }
1034
1056
  if (details.get("langKey") != null) {
1035
1057
  user.setLangKey((String) details.get("langKey"));
@@ -1052,8 +1074,8 @@ public class UserService {
1052
1074
  user.setActivated(activated);
1053
1075
  return user;
1054
1076
  }
1055
- <%_ } _%>
1056
- <%_ if (cacheManagerIsAvailable === true && databaseType !== 'no') { _%>
1077
+ <%_ } _%>
1078
+ <%_ if (cacheManagerIsAvailable && !databaseTypeNo) { _%>
1057
1079
 
1058
1080
  private void clearUserCaches(<%= asEntity('User') %> user) {
1059
1081
  Objects.requireNonNull(cacheManager.getCache(UserRepository.USERS_BY_LOGIN_CACHE)).evict(user.getLogin());
@@ -1061,5 +1083,5 @@ public class UserService {
1061
1083
  Objects.requireNonNull(cacheManager.getCache(UserRepository.USERS_BY_EMAIL_CACHE)).evict(user.getEmail());
1062
1084
  }
1063
1085
  }
1064
- <%_ } _%>
1086
+ <%_ } _%>
1065
1087
  }