generator-jhipster 8.3.0 → 8.5.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 (430) hide show
  1. package/dist/generators/angular/generator.js +34 -0
  2. package/dist/generators/angular/resources/package.json +13 -13
  3. package/dist/generators/angular/templates/src/main/webapp/app/account/password/password.component.html.ejs +1 -1
  4. package/dist/generators/angular/templates/src/main/webapp/app/account/password-reset/finish/password-reset-finish.component.html.ejs +1 -1
  5. package/dist/generators/angular/templates/src/main/webapp/app/account/password-reset/finish/password-reset-finish.component.spec.ts.ejs +2 -2
  6. package/dist/generators/angular/templates/src/main/webapp/app/account/password-reset/finish/password-reset-finish.component.ts.ejs +3 -6
  7. package/dist/generators/angular/templates/src/main/webapp/app/account/password-reset/init/password-reset-init.component.html.ejs +1 -1
  8. package/dist/generators/angular/templates/src/main/webapp/app/account/password-reset/init/password-reset-init.component.spec.ts.ejs +2 -2
  9. package/dist/generators/angular/templates/src/main/webapp/app/account/password-reset/init/password-reset-init.component.ts.ejs +3 -6
  10. package/dist/generators/angular/templates/src/main/webapp/app/account/register/register.component.html.ejs +1 -1
  11. package/dist/generators/angular/templates/src/main/webapp/app/account/register/register.component.ts.ejs +3 -6
  12. package/dist/generators/angular/templates/src/main/webapp/app/account/settings/settings.component.html.ejs +1 -1
  13. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-modal-threads/metrics-modal-threads.component.html.ejs +11 -11
  14. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/delete/user-management-delete-dialog.component.html.ejs +0 -2
  15. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/update/user-management-update.component.html.ejs +1 -1
  16. package/dist/generators/angular/templates/src/main/webapp/app/core/auth/user-route-access.service.ts.ejs +1 -1
  17. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/delete/_entityFile_-delete-dialog.component.html.ejs +0 -3
  18. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/detail/_entityFile_-detail.component.spec.ts.ejs +2 -2
  19. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/route/_entityFile_-routing-resolve.service.spec.ts.ejs +2 -2
  20. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/update/_entityFile_-form.service.ts.ejs +10 -6
  21. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/update/_entityFile_-update.component.html.ejs +1 -1
  22. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/update/_entityFile_-update.component.spec.ts.ejs +3 -3
  23. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/update/_entityFile_-update.component.ts.ejs +11 -17
  24. package/dist/generators/angular/templates/src/main/webapp/app/home/home.component.html.ejs +6 -6
  25. package/dist/generators/angular/templates/src/main/webapp/app/layouts/navbar/active-menu.directive.ts.ejs +3 -3
  26. package/dist/generators/angular/templates/src/main/webapp/app/login/login.component.html.ejs +1 -1
  27. package/dist/generators/angular/templates/src/main/webapp/app/login/login.component.spec.ts.ejs +2 -2
  28. package/dist/generators/angular/templates/src/main/webapp/app/login/login.component.ts.ejs +3 -4
  29. package/dist/generators/angular/templates/src/main/webapp/app/shared/alert/alert-error.component.spec.ts.ejs +2 -2
  30. package/dist/generators/angular/templates/src/main/webapp/app/shared/auth/has-any-authority.directive.spec.ts.ejs +10 -8
  31. package/dist/generators/angular/templates/src/main/webapp/app/shared/auth/has-any-authority.directive.ts.ejs +3 -8
  32. package/dist/generators/angular/templates/src/main/webapp/app/shared/filter/filter.component.html.ejs +6 -2
  33. package/dist/generators/angular/templates/webpack/webpack.custom.js.ejs +1 -1
  34. package/dist/generators/app/generator.js +6 -33
  35. package/dist/generators/app/support/config.js +1 -3
  36. package/dist/generators/base/generator.js +15 -16
  37. package/dist/generators/base/priorities.js +12 -1
  38. package/dist/generators/base-application/generator.js +14 -2
  39. package/dist/generators/base-application/priorities.js +1 -0
  40. package/dist/generators/base-application/support/prepare-entity.js +7 -8
  41. package/dist/generators/base-application/support/prepare-field.js +1 -1
  42. package/dist/generators/base-application/support/prepare-relationship.js +3 -2
  43. package/dist/generators/base-core/generator.js +45 -11
  44. package/dist/generators/base-entity-changes/generator.js +24 -0
  45. package/dist/generators/bootstrap-application-base/generator.js +46 -1
  46. package/dist/generators/bootstrap-application-server/generator.js +5 -7
  47. package/dist/generators/ci-cd/generator.js +0 -5
  48. package/dist/generators/client/command.js +2 -2
  49. package/dist/generators/client/generator.js +0 -22
  50. package/dist/generators/client/generators/common/command.js +5 -0
  51. package/dist/generators/client/generators/common/generator.js +79 -0
  52. package/dist/generators/{app/prompts.js → client/generators/common/index.js} +2 -15
  53. package/dist/generators/client/generators/common/templates/src/main/webapp/app/shared/jhipster/headers.ts.ejs +57 -0
  54. package/dist/generators/client/generators/common/templates/src/main/webapp/app/shared/jhipster/problem-details.ts.ejs +51 -0
  55. package/dist/generators/client/resources/package.json +6 -6
  56. package/dist/generators/client/templates/src/main/webapp/index.html.ejs +1 -1
  57. package/dist/generators/common/command.js +13 -0
  58. package/dist/generators/common/generator.js +17 -3
  59. package/dist/generators/common/resources/package.json +2 -2
  60. package/dist/generators/cypress/templates/src/test/javascript/cypress/e2e/account/login-page.cy.ts.ejs +4 -4
  61. package/dist/generators/cypress/templates/src/test/javascript/cypress/e2e/account/password-page.cy.ts.ejs +2 -2
  62. package/dist/generators/cypress/templates/src/test/javascript/cypress/e2e/account/register-page.cy.ts.ejs +1 -1
  63. package/dist/generators/cypress/templates/src/test/javascript/cypress/e2e/account/reset-password-page.cy.ts.ejs +1 -1
  64. package/dist/generators/cypress/templates/src/test/javascript/cypress/e2e/entity/_entity_.cy.ts.ejs +10 -10
  65. package/dist/generators/docker/templates/docker/mysql.yml.ejs +1 -1
  66. package/dist/generators/docker/templates/docker/realm-config/jhipster-realm.json.ejs +14 -3
  67. package/dist/generators/docker-compose/generator.js +1 -5
  68. package/dist/generators/docker-compose/templates/realm-config/jhipster-realm.json.ejs +14 -3
  69. package/dist/generators/entity/generator.js +2 -10
  70. package/dist/generators/entity/prompts.js +6 -11
  71. package/dist/generators/export-jdl/generator.js +0 -5
  72. package/dist/generators/gatling/README.md +15 -0
  73. package/dist/generators/gatling/templates/buildSrc/src/main/groovy/jhipster.gatling-conventions.gradle.ejs +1 -1
  74. package/dist/generators/gatling/templates/src/test/java/gatling/simulations/_entityClass_GatlingTest.java.ejs +2 -10
  75. package/dist/generators/generate-blueprint/command.js +16 -0
  76. package/dist/generators/generate-blueprint/files.js +8 -0
  77. package/dist/generators/generate-blueprint/generator.js +17 -10
  78. package/dist/generators/generate-blueprint/resources/package.json +1 -1
  79. package/dist/generators/generate-blueprint/templates/.blueprint/cli/commands.mjs.ejs +6 -0
  80. package/dist/generators/generate-blueprint/templates/.blueprint/generate-sample/command.mjs.ejs +20 -0
  81. package/dist/generators/generate-blueprint/templates/.blueprint/generate-sample/generator.mjs.ejs +9 -13
  82. package/dist/generators/generate-blueprint/templates/.blueprint/github-build-matrix/build-matrix.mjs.ejs +22 -0
  83. package/dist/generators/generate-blueprint/templates/.blueprint/github-build-matrix/generator.mjs.ejs +24 -0
  84. package/dist/generators/generate-blueprint/templates/.blueprint/github-build-matrix/index.mjs.ejs +1 -0
  85. package/dist/generators/generate-blueprint/templates/.eslintrc.json.ejs +2 -2
  86. package/dist/generators/generate-blueprint/templates/README.md.ejs +16 -8
  87. package/dist/generators/generate-blueprint/templates/vitest.config.ts.ejs +1 -0
  88. package/dist/generators/generator-constants.js +1 -1
  89. package/dist/generators/heroku/generator.js +0 -5
  90. package/dist/generators/info/generator.js +1 -3
  91. package/dist/generators/init/generator.js +2 -2
  92. package/dist/generators/init/resources/.node-version +1 -1
  93. package/dist/generators/java/generators/build-tool/command.js +4 -1
  94. package/dist/generators/java/generators/domain/generator.js +16 -0
  95. package/dist/generators/java/generators/domain/templates/src/main/java/_package_/_entityPackage_/domain/_persistClass_.java.jhi.ejs +1 -5
  96. package/dist/generators/java/generators/domain/templates/src/test/java/_package_/_entityPackage_/domain/_persistClass_Asserts.java.ejs +3 -3
  97. package/dist/generators/java/generators/domain/templates/src/test/java/_package_/_entityPackage_/domain/_persistClass_Test.java.ejs +3 -3
  98. package/dist/generators/java/support/add-java-annotation.js +28 -7
  99. package/dist/generators/java/support/generated-annotation-transform.js +1 -1
  100. package/dist/generators/java/support/index.js +1 -1
  101. package/dist/generators/jdl/generator.js +1 -5
  102. package/dist/generators/kubernetes/files.js +1 -1
  103. package/dist/generators/kubernetes/generator.js +0 -5
  104. package/dist/generators/kubernetes/templates/db/mysql.yml.ejs +0 -1
  105. package/dist/generators/kubernetes/templates/keycloak/keycloak-configmap.yml.ejs +14 -3
  106. package/dist/generators/kubernetes-helm/generator.js +0 -5
  107. package/dist/generators/kubernetes-knative/generator.js +0 -5
  108. package/dist/generators/languages/files.js +2 -2
  109. package/dist/generators/languages/generator.js +4 -8
  110. package/dist/generators/languages/templates/src/main/webapp/i18n/al/home.json.ejs +19 -0
  111. package/dist/generators/languages/templates/src/main/webapp/i18n/ar-ly/home.json.ejs +19 -0
  112. package/dist/generators/languages/templates/src/main/webapp/i18n/az-Latn-az/home.json.ejs +19 -0
  113. package/dist/generators/languages/templates/src/main/webapp/i18n/bg/home.json.ejs +19 -0
  114. package/dist/generators/languages/templates/src/main/webapp/i18n/bn/home.json.ejs +19 -0
  115. package/dist/generators/languages/templates/src/main/webapp/i18n/by/home.json.ejs +19 -0
  116. package/dist/generators/languages/templates/src/main/webapp/i18n/ca/home.json.ejs +19 -0
  117. package/dist/generators/languages/templates/src/main/webapp/i18n/cs/home.json.ejs +19 -0
  118. package/dist/generators/languages/templates/src/main/webapp/i18n/da/home.json.ejs +19 -0
  119. package/dist/generators/languages/templates/src/main/webapp/i18n/de/global.json.ejs +2 -2
  120. package/dist/generators/languages/templates/src/main/webapp/i18n/de/home.json.ejs +19 -0
  121. package/dist/generators/languages/templates/src/main/webapp/i18n/el/home.json.ejs +19 -0
  122. package/dist/generators/languages/templates/src/main/webapp/i18n/en/home.json.ejs +19 -0
  123. package/dist/generators/languages/templates/src/main/webapp/i18n/es/home.json.ejs +19 -0
  124. package/dist/generators/languages/templates/src/main/webapp/i18n/et/home.json.ejs +19 -0
  125. package/dist/generators/languages/templates/src/main/webapp/i18n/fa/home.json.ejs +19 -0
  126. package/dist/generators/languages/templates/src/main/webapp/i18n/fi/home.json.ejs +19 -0
  127. package/dist/generators/languages/templates/src/main/webapp/i18n/fr/home.json.ejs +19 -0
  128. package/dist/generators/languages/templates/src/main/webapp/i18n/gl/home.json.ejs +19 -0
  129. package/dist/generators/languages/templates/src/main/webapp/i18n/hi/home.json.ejs +19 -0
  130. package/dist/generators/languages/templates/src/main/webapp/i18n/hr/home.json.ejs +19 -0
  131. package/dist/generators/languages/templates/src/main/webapp/i18n/hu/home.json.ejs +19 -0
  132. package/dist/generators/languages/templates/src/main/webapp/i18n/hy/home.json.ejs +19 -0
  133. package/dist/generators/languages/templates/src/main/webapp/i18n/id/home.json.ejs +19 -0
  134. package/dist/generators/languages/templates/src/main/webapp/i18n/it/home.json.ejs +19 -0
  135. package/dist/generators/languages/templates/src/main/webapp/i18n/ja/home.json.ejs +19 -0
  136. package/dist/generators/languages/templates/src/main/webapp/i18n/ko/home.json.ejs +19 -0
  137. package/dist/generators/languages/templates/src/main/webapp/i18n/kr-Latn-kr/home.json.ejs +19 -0
  138. package/dist/generators/languages/templates/src/main/webapp/i18n/mr/home.json.ejs +19 -0
  139. package/dist/generators/languages/templates/src/main/webapp/i18n/my/home.json.ejs +19 -0
  140. package/dist/generators/languages/templates/src/main/webapp/i18n/nl/home.json.ejs +19 -0
  141. package/dist/generators/languages/templates/src/main/webapp/i18n/pa/{home.json → home.json.ejs} +2 -2
  142. package/dist/generators/languages/templates/src/main/webapp/i18n/pl/home.json.ejs +19 -0
  143. package/dist/generators/languages/templates/src/main/webapp/i18n/pt-br/home.json.ejs +19 -0
  144. package/dist/generators/languages/templates/src/main/webapp/i18n/pt-pt/home.json.ejs +19 -0
  145. package/dist/generators/languages/templates/src/main/webapp/i18n/ro/home.json.ejs +19 -0
  146. package/dist/generators/languages/templates/src/main/webapp/i18n/ru/home.json.ejs +19 -0
  147. package/dist/generators/languages/templates/src/main/webapp/i18n/si/{home.json → home.json.ejs} +6 -6
  148. package/dist/generators/languages/templates/src/main/webapp/i18n/sk/home.json.ejs +19 -0
  149. package/dist/generators/languages/templates/src/main/webapp/i18n/sr/home.json.ejs +19 -0
  150. package/dist/generators/languages/templates/src/main/webapp/i18n/sv/home.json.ejs +19 -0
  151. package/dist/generators/languages/templates/src/main/webapp/i18n/ta/home.json.ejs +19 -0
  152. package/dist/generators/languages/templates/src/main/webapp/i18n/te/{home.json → home.json.ejs} +1 -1
  153. package/dist/generators/languages/templates/src/main/webapp/i18n/th/home.json.ejs +19 -0
  154. package/dist/generators/languages/templates/src/main/webapp/i18n/tr/home.json.ejs +19 -0
  155. package/dist/generators/languages/templates/src/main/webapp/i18n/ua/home.json.ejs +19 -0
  156. package/dist/generators/languages/templates/src/main/webapp/i18n/uz-Cyrl-uz/home.json.ejs +19 -0
  157. package/dist/generators/languages/templates/src/main/webapp/i18n/uz-Latn-uz/home.json.ejs +19 -0
  158. package/dist/generators/languages/templates/src/main/webapp/i18n/vi/home.json.ejs +19 -0
  159. package/dist/generators/languages/templates/src/main/webapp/i18n/zh-cn/home.json.ejs +19 -0
  160. package/dist/generators/languages/templates/src/main/webapp/i18n/zh-tw/home.json.ejs +19 -0
  161. package/dist/generators/liquibase/generator.js +59 -12
  162. package/dist/generators/liquibase/support/prepare-field.js +16 -1
  163. package/dist/generators/liquibase/support/relationship.js +1 -0
  164. package/dist/generators/liquibase/templates/src/main/resources/config/liquibase/changelog/added_entity.xml.ejs +1 -1
  165. package/dist/generators/liquibase/templates/src/main/resources/config/liquibase/changelog/updated_entity.xml.ejs +3 -3
  166. package/dist/generators/liquibase/templates/src/main/resources/config/liquibase/changelog/updated_entity_constraints.xml.ejs +26 -1
  167. package/dist/generators/liquibase/templates/src/main/resources/config/liquibase/fake-data/table_entity.csv.ejs +3 -3
  168. package/dist/generators/maven/templates/.mvn/wrapper/maven-wrapper.properties +2 -2
  169. package/dist/generators/maven/templates/mvnw +185 -243
  170. package/dist/generators/maven/templates/mvnw.cmd +121 -180
  171. package/dist/generators/react/generator.js +10 -0
  172. package/dist/generators/react/resources/package.json +30 -30
  173. package/dist/generators/react/templates/src/main/webapp/app/config/axios-interceptor.spec.ts.ejs +1 -1
  174. package/dist/generators/react/templates/src/main/webapp/app/config/axios-interceptor.ts.ejs +1 -1
  175. package/dist/generators/react/templates/src/main/webapp/app/config/notification-middleware.spec.ts.ejs +1 -1
  176. package/dist/generators/react/templates/src/main/webapp/app/config/notification-middleware.ts.ejs +80 -87
  177. package/dist/generators/react/templates/src/main/webapp/app/config/store.ts.ejs +1 -1
  178. package/dist/generators/react/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_-update.tsx.ejs +3 -3
  179. package/dist/generators/react/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_.reducer.ts.ejs +12 -7
  180. package/dist/generators/react/templates/src/main/webapp/app/modules/home/home.tsx.ejs +7 -7
  181. package/dist/generators/react/templates/src/main/webapp/app/shared/reducers/reducer.utils.ts.ejs +2 -3
  182. package/dist/generators/react/templates/webpack/webpack.microfrontend.js.jhi.react.ejs +0 -8
  183. package/dist/generators/server/command.js +0 -11
  184. package/dist/generators/server/generator.js +19 -115
  185. package/dist/generators/server/jdl/application-definition.js +3 -1
  186. package/dist/generators/server/resources/Dockerfile +15 -15
  187. package/dist/generators/server/resources/gradle/libs.versions.toml +12 -10
  188. package/dist/generators/server/resources/pom.xml +10 -10
  189. package/dist/generators/server/support/config.js +4 -8
  190. package/dist/generators/server/support/prepare-entity.js +5 -6
  191. package/dist/generators/server/support/prepare-field.js +7 -2
  192. package/dist/generators/server/support/prepare-relationship.js +7 -2
  193. package/dist/generators/server/support/relationship.js +5 -2
  194. package/dist/generators/server/templates/build.gradle.ejs +5 -3
  195. package/dist/generators/server/templates/gradle/profile_dev.gradle.ejs +3 -2
  196. package/dist/generators/server/templates/gradle/profile_prod.gradle.ejs +3 -2
  197. package/dist/generators/server/templates/gradle.properties.ejs +1 -1
  198. package/dist/generators/server/templates/pom.xml.ejs +7 -9
  199. package/dist/generators/server/templates/src/main/java/_package_/_entityPackage_/service/dto/_dtoClass_.java.ejs +1 -1
  200. package/dist/generators/server/templates/src/main/java/_package_/config/Constants.java.ejs +0 -2
  201. package/dist/generators/server/templates/src/main/java/_package_/config/SecurityConfiguration_imperative.java.ejs +57 -24
  202. package/dist/generators/server/templates/src/main/java/_package_/config/SecurityConfiguration_reactive.java.ejs +1 -15
  203. package/dist/generators/server/templates/src/main/java/_package_/config/SecurityJwtConfiguration.java.ejs +0 -20
  204. package/dist/generators/server/templates/src/main/java/_package_/security/SecurityUtils.java.ejs +65 -5
  205. package/dist/generators/server/templates/src/main/java/_package_/service/dto/UserDTO.java.ejs +23 -0
  206. package/dist/generators/server/templates/src/main/java/_package_/service/mapper/UserMapper.java.ejs +8 -4
  207. package/dist/generators/server/templates/src/main/java/_package_/web/rest/AccountResource_skipUserManagement.java.ejs +43 -9
  208. package/dist/generators/server/templates/src/main/resources/config/application.yml.ejs +60 -22
  209. package/dist/generators/server/templates/src/main/resources/config/bootstrap.yml.ejs +1 -1
  210. package/dist/generators/server/templates/src/main/resources/static/index_microservices.html.ejs +8 -8
  211. package/dist/generators/server/templates/src/main/resources/swagger/api.yml.ejs +1 -1
  212. package/dist/generators/server/templates/src/test/java/_package_/security/DomainUserDetailsServiceIT.java.ejs +31 -13
  213. package/dist/generators/server/templates/src/test/java/_package_/service/mapper/UserMapperTest.java.ejs +84 -17
  214. package/dist/generators/server/templates/src/test/java/_package_/web/rest/AccountResourceIT.java.ejs +62 -6
  215. package/dist/generators/server/templates/src/test/java/_package_/web/rest/AccountResourceIT_oauth2.java.ejs +22 -0
  216. package/dist/generators/server/templates/src/test/resources/config/application.yml.ejs +20 -10
  217. package/dist/generators/spring-boot/cleanup.js +3 -0
  218. package/dist/generators/spring-boot/command.js +127 -7
  219. package/dist/generators/spring-boot/files.js +0 -10
  220. package/dist/generators/spring-boot/generator.js +54 -4
  221. package/dist/generators/{server → spring-boot}/prompts.js +8 -72
  222. package/dist/generators/spring-boot/resources/spring-boot-dependencies.pom +380 -588
  223. package/dist/generators/spring-boot/templates/src/test/java/_package_/_entityPackage_/service/UserServiceIT.java.ejs +47 -11
  224. package/dist/generators/spring-boot/templates/src/test/java/_package_/_entityPackage_/web/rest/PublicUserResourceIT.java.ejs +60 -24
  225. package/dist/generators/spring-boot/templates/src/test/java/_package_/_entityPackage_/web/rest/UserResourceIT.java.ejs +195 -318
  226. package/dist/generators/spring-boot/templates/src/test/java/_package_/_entityPackage_/web/rest/_entityClass_ResourceIT.java.ejs +58 -51
  227. package/dist/generators/spring-cache/internal/dependencies.js +2 -2
  228. package/dist/generators/spring-cache/resources/gradle/libs.versions.toml +2 -2
  229. package/dist/generators/spring-cache/templates/src/main/java/_package_/config/CacheConfiguration.java.ejs +4 -0
  230. package/dist/generators/spring-cloud/generators/gateway/command.js +5 -1
  231. package/dist/generators/spring-cloud/generators/gateway/generator.js +13 -0
  232. package/dist/generators/spring-cloud/generators/gateway/jdl/jdl-routes-option.js +6 -0
  233. package/dist/generators/spring-data-cassandra/generator.js +2 -2
  234. package/dist/generators/spring-data-relational/support/h2-reserved-keywords.js +22 -0
  235. package/dist/generators/spring-data-relational/templates/src/test/java/_package_/config/SqlTestContainersSpringContextCustomizerFactory.java.ejs +3 -1
  236. package/dist/generators/upgrade/generator.js +0 -4
  237. package/dist/generators/vue/resources/package.json +22 -22
  238. package/dist/generators/vue/templates/src/main/webapp/app/account/change-password/change-password.vue.ejs +1 -1
  239. package/dist/generators/vue/templates/src/main/webapp/app/account/login-form/login-form.vue.ejs +1 -1
  240. package/dist/generators/vue/templates/src/main/webapp/app/account/register/register.vue.ejs +1 -1
  241. package/dist/generators/vue/templates/src/main/webapp/app/account/reset-password/finish/reset-password-finish.vue.ejs +1 -1
  242. package/dist/generators/vue/templates/src/main/webapp/app/account/reset-password/init/reset-password-init.vue.ejs +1 -1
  243. package/dist/generators/vue/templates/src/main/webapp/app/account/settings/settings.vue.ejs +1 -1
  244. package/dist/generators/vue/templates/src/main/webapp/app/admin/tracker/tracker.service.spec.ts.ejs +1 -1
  245. package/dist/generators/vue/templates/src/main/webapp/app/admin/user-management/user-management-edit.vue.ejs +1 -1
  246. package/dist/generators/vue/templates/src/main/webapp/app/core/home/home.vue.ejs +7 -7
  247. package/dist/generators/vue/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_-details.vue.ejs +1 -1
  248. package/dist/generators/vue/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_-update.vue.ejs +2 -2
  249. package/dist/generators/vue/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_.vue.ejs +1 -1
  250. package/dist/generators/vue/templates/src/main/webapp/app/shared/alert/alert.service.spec.ts.ejs +8 -8
  251. package/dist/generators/vue/templates/src/main/webapp/app/shared/data/data-utils.service.spec.ts.ejs +1 -1
  252. package/dist/generators/vue/templates/tsconfig.app.json.ejs +1 -1
  253. package/dist/generators/vue/templates/vite.config.mts.ejs +5 -4
  254. package/dist/generators/vue/templates/vitest.config.mts.ejs +1 -1
  255. package/dist/generators/vue/templates/webpack/webpack.microfrontend.js.jhi.vue.ejs +0 -9
  256. package/dist/jdl/converters/jdl-to-json/jdl-to-json-basic-entity-converter.js +1 -1
  257. package/dist/jdl/converters/jdl-to-json/jdl-to-json-field-converter.js +4 -4
  258. package/dist/jdl/converters/jdl-to-json/jdl-with-applications-to-json-converter.js +9 -9
  259. package/dist/jdl/converters/jdl-to-json/jdl-without-application-to-json-converter.js +2 -2
  260. package/dist/jdl/converters/json-to-jdl-application-converter.js +1 -1
  261. package/dist/jdl/converters/json-to-jdl-converter.js +6 -5
  262. package/dist/jdl/converters/json-to-jdl-entity-converter.js +14 -14
  263. package/dist/jdl/converters/json-to-jdl-option-converter.js +1 -2
  264. package/dist/jdl/converters/parsed-jdl-to-jdl-object/application-converter.js +1 -1
  265. package/dist/jdl/converters/parsed-jdl-to-jdl-object/option-converter.js +2 -2
  266. package/dist/jdl/converters/parsed-jdl-to-jdl-object/parsed-jdl-to-jdl-object-converter.js +7 -6
  267. package/dist/jdl/converters/parsed-jdl-to-jdl-object/validation-converter.js +1 -1
  268. package/dist/jdl/exporters/applications/jhipster-application-formatter.js +16 -23
  269. package/dist/jdl/exporters/config.js +1 -0
  270. package/dist/jdl/exporters/jhipster-deployment-exporter.js +5 -5
  271. package/dist/jdl/exporters/jhipster-entity-exporter.js +1 -1
  272. package/dist/jdl/jdl-importer.js +22 -20
  273. package/dist/jdl/jhipster/binary-options.js +12 -8
  274. package/dist/jdl/jhipster/json-entity.js +1 -1
  275. package/dist/jdl/models/abstract-jdl-option.js +2 -2
  276. package/dist/jdl/models/jdl-application-configuration-factory.js +2 -0
  277. package/dist/jdl/models/jdl-binary-option.js +2 -2
  278. package/dist/jdl/models/jdl-deployment.js +11 -0
  279. package/dist/jdl/models/jdl-entity.js +1 -1
  280. package/dist/jdl/models/jdl-enum.js +1 -1
  281. package/dist/jdl/models/jdl-enums.js +0 -18
  282. package/dist/jdl/models/jdl-field.js +2 -2
  283. package/dist/jdl/models/jdl-object-wrapper.js +1 -0
  284. package/dist/jdl/models/jdl-object.js +23 -45
  285. package/dist/jdl/models/jdl-options.js +0 -18
  286. package/dist/jdl/models/jdl-relationships.js +8 -16
  287. package/dist/jdl/models/jdl-unary-option.js +1 -1
  288. package/dist/jdl/models/list-jdl-application-configuration-option.js +5 -2
  289. package/dist/jdl/parsing/jdl-ast-builder-visitor.js +12 -0
  290. package/dist/jdl/parsing/jdl-parser.js +14 -0
  291. package/dist/jdl/parsing/lexer/lexer.js +17 -11
  292. package/dist/jdl/parsing/validator.js +16 -2
  293. package/dist/jdl/readers/json-reader.js +1 -1
  294. package/dist/jdl/utils/array-utils.js +6 -0
  295. package/dist/jdl/utils/set-utils.js +3 -2
  296. package/dist/jdl/validators/jdl-without-application-validator.js +2 -2
  297. package/dist/testing/helpers.js +4 -0
  298. package/dist/types/generators/base/api.d.ts +6 -2
  299. package/dist/types/generators/base/generator.d.ts +10 -4
  300. package/dist/types/generators/base/priorities.d.ts +4 -0
  301. package/dist/types/generators/base/shared-data.d.ts +1 -1
  302. package/dist/types/generators/base-application/priorities.d.ts +2 -0
  303. package/dist/types/generators/base-application/support/entity.d.ts +2 -2
  304. package/dist/types/generators/base-application/support/prepare-entity.d.ts +3 -3
  305. package/dist/types/generators/base-application/support/relationship.d.ts +5 -5
  306. package/dist/types/generators/base-application/types.d.ts +15 -0
  307. package/dist/types/generators/base-core/generator.d.ts +16 -1
  308. package/dist/types/generators/base-entity-changes/types.d.ts +2 -0
  309. package/dist/types/generators/generator-constants.d.ts +1 -1
  310. package/dist/types/generators/java/support/add-java-annotation.d.ts +10 -20
  311. package/dist/types/generators/java/support/doc.d.ts +1 -1
  312. package/dist/types/generators/java/support/index.d.ts +1 -1
  313. package/dist/types/generators/server/support/relationship.d.ts +2 -2
  314. package/dist/types/generators/server/types.d.ts +5 -0
  315. package/dist/types/generators/spring-cloud/generators/gateway/jdl/jdl-routes-option.d.ts +2 -0
  316. package/dist/types/generators/spring-cloud/generators/gateway/types.d.ts +4 -0
  317. package/dist/types/generators/spring-data-relational/support/h2-reserved-keywords.d.ts +20 -0
  318. package/dist/types/jdl/converters/jdl-to-json/jdl-to-json-field-converter.d.ts +2 -2
  319. package/dist/types/jdl/converters/jdl-to-json/jdl-with-applications-to-json-converter.d.ts +2 -1
  320. package/dist/types/jdl/converters/jdl-to-json/jdl-without-application-to-json-converter.d.ts +3 -1
  321. package/dist/types/jdl/converters/json-to-jdl-application-converter.d.ts +9 -2
  322. package/dist/types/jdl/converters/json-to-jdl-converter.d.ts +3 -3
  323. package/dist/types/jdl/converters/json-to-jdl-entity-converter.d.ts +2 -4
  324. package/dist/types/jdl/converters/parsed-jdl-to-jdl-object/application-converter.d.ts +3 -1
  325. package/dist/types/jdl/converters/parsed-jdl-to-jdl-object/deployment-converter.d.ts +2 -1
  326. package/dist/types/jdl/converters/parsed-jdl-to-jdl-object/entity-converter.d.ts +3 -1
  327. package/dist/types/jdl/converters/parsed-jdl-to-jdl-object/enum-converter.d.ts +2 -1
  328. package/dist/types/jdl/converters/parsed-jdl-to-jdl-object/field-converter.d.ts +2 -1
  329. package/dist/types/jdl/converters/parsed-jdl-to-jdl-object/option-converter.d.ts +3 -3
  330. package/dist/types/jdl/converters/parsed-jdl-to-jdl-object/parsed-jdl-to-jdl-object-converter.d.ts +2 -1
  331. package/dist/types/jdl/converters/parsed-jdl-to-jdl-object/relationship-converter.d.ts +2 -1
  332. package/dist/types/jdl/converters/parsed-jdl-to-jdl-object/types.d.ts +110 -0
  333. package/dist/types/jdl/converters/parsed-jdl-to-jdl-object/validation-converter.d.ts +2 -1
  334. package/dist/types/jdl/converters/types.d.ts +102 -14
  335. package/dist/types/jdl/exporters/applications/jhipster-application-formatter.d.ts +4 -4
  336. package/dist/types/jdl/exporters/config.d.ts +2 -1
  337. package/dist/types/jdl/exporters/export-utils.d.ts +2 -1
  338. package/dist/types/jdl/exporters/jdl-exporter.d.ts +2 -1
  339. package/dist/types/jdl/exporters/jhipster-deployment-exporter.d.ts +3 -1
  340. package/dist/types/jdl/exporters/jhipster-entity-exporter.d.ts +3 -1
  341. package/dist/types/jdl/exporters/types.d.ts +61 -0
  342. package/dist/types/jdl/jhipster/binary-options.d.ts +8 -26
  343. package/dist/types/jdl/jhipster/field-types.d.ts +2 -2
  344. package/dist/types/jdl/jhipster/json-entity.d.ts +2 -2
  345. package/dist/types/jdl/models/abstract-jdl-option.d.ts +14 -9
  346. package/dist/types/jdl/models/boolean-jdl-application-configuration-option.d.ts +1 -1
  347. package/dist/types/jdl/models/integer-jdl-application-configuration-option.d.ts +1 -1
  348. package/dist/types/jdl/models/jdl-application-configuration-factory.d.ts +1 -1
  349. package/dist/types/jdl/models/jdl-application-configuration-option.d.ts +4 -4
  350. package/dist/types/jdl/models/jdl-application-configuration.d.ts +4 -4
  351. package/dist/types/jdl/models/jdl-application-definition.d.ts +4 -4
  352. package/dist/types/jdl/models/jdl-application-entities.d.ts +4 -4
  353. package/dist/types/jdl/models/jdl-application.d.ts +16 -13
  354. package/dist/types/jdl/models/jdl-binary-option.d.ts +5 -3
  355. package/dist/types/jdl/models/jdl-deployment.d.ts +13 -1
  356. package/dist/types/jdl/models/jdl-entity.d.ts +5 -5
  357. package/dist/types/jdl/models/jdl-enum-value.d.ts +4 -4
  358. package/dist/types/jdl/models/jdl-enum.d.ts +9 -5
  359. package/dist/types/jdl/models/jdl-enums.d.ts +6 -5
  360. package/dist/types/jdl/models/jdl-field.d.ts +10 -8
  361. package/dist/types/jdl/models/jdl-object-wrapper.d.ts +25 -0
  362. package/dist/types/jdl/models/jdl-object.d.ts +23 -19
  363. package/dist/types/jdl/models/jdl-options.d.ts +7 -24
  364. package/dist/types/jdl/models/jdl-relationship.d.ts +16 -10
  365. package/dist/types/jdl/models/jdl-relationships.d.ts +5 -5
  366. package/dist/types/jdl/models/jdl-validation.d.ts +3 -3
  367. package/dist/types/jdl/models/list-jdl-application-configuration-option.d.ts +4 -3
  368. package/dist/types/jdl/models/string-jdl-application-configuration-option.d.ts +2 -2
  369. package/dist/types/jdl/parsing/jdl-ast-builder-visitor.d.ts +1 -0
  370. package/dist/types/jdl/parsing/jdl-parser.d.ts +1 -0
  371. package/dist/types/jdl/parsing/jdl-parsing-types.d.ts +23 -0
  372. package/dist/types/jdl/parsing/lexer/lexer.d.ts +6 -2
  373. package/dist/types/jdl/parsing/validator.d.ts +1 -1
  374. package/dist/types/jdl/utils/array-utils.d.ts +1 -0
  375. package/dist/types/jdl/utils/set-utils.d.ts +1 -19
  376. package/dist/types/jdl/validators/deployment-validator.d.ts +2 -1
  377. package/dist/types/testing/helpers.d.ts +13 -3
  378. package/package.json +30 -30
  379. package/dist/generators/languages/templates/src/main/webapp/i18n/al/home.json +0 -19
  380. package/dist/generators/languages/templates/src/main/webapp/i18n/ar-ly/home.json +0 -19
  381. package/dist/generators/languages/templates/src/main/webapp/i18n/az-Latn-az/home.json +0 -19
  382. package/dist/generators/languages/templates/src/main/webapp/i18n/bg/home.json +0 -19
  383. package/dist/generators/languages/templates/src/main/webapp/i18n/bn/home.json +0 -19
  384. package/dist/generators/languages/templates/src/main/webapp/i18n/by/home.json +0 -19
  385. package/dist/generators/languages/templates/src/main/webapp/i18n/ca/home.json +0 -19
  386. package/dist/generators/languages/templates/src/main/webapp/i18n/cs/home.json +0 -19
  387. package/dist/generators/languages/templates/src/main/webapp/i18n/da/home.json +0 -19
  388. package/dist/generators/languages/templates/src/main/webapp/i18n/de/home.json +0 -19
  389. package/dist/generators/languages/templates/src/main/webapp/i18n/el/home.json +0 -19
  390. package/dist/generators/languages/templates/src/main/webapp/i18n/en/home.json +0 -19
  391. package/dist/generators/languages/templates/src/main/webapp/i18n/es/home.json +0 -19
  392. package/dist/generators/languages/templates/src/main/webapp/i18n/et/home.json +0 -19
  393. package/dist/generators/languages/templates/src/main/webapp/i18n/fa/home.json +0 -19
  394. package/dist/generators/languages/templates/src/main/webapp/i18n/fi/home.json +0 -19
  395. package/dist/generators/languages/templates/src/main/webapp/i18n/fr/home.json +0 -19
  396. package/dist/generators/languages/templates/src/main/webapp/i18n/gl/home.json +0 -19
  397. package/dist/generators/languages/templates/src/main/webapp/i18n/hi/home.json +0 -19
  398. package/dist/generators/languages/templates/src/main/webapp/i18n/hr/home.json +0 -19
  399. package/dist/generators/languages/templates/src/main/webapp/i18n/hu/home.json +0 -19
  400. package/dist/generators/languages/templates/src/main/webapp/i18n/hy/home.json +0 -19
  401. package/dist/generators/languages/templates/src/main/webapp/i18n/id/home.json +0 -19
  402. package/dist/generators/languages/templates/src/main/webapp/i18n/it/home.json +0 -19
  403. package/dist/generators/languages/templates/src/main/webapp/i18n/ja/home.json +0 -19
  404. package/dist/generators/languages/templates/src/main/webapp/i18n/ko/home.json +0 -19
  405. package/dist/generators/languages/templates/src/main/webapp/i18n/kr-Latn-kr/home.json +0 -19
  406. package/dist/generators/languages/templates/src/main/webapp/i18n/mr/home.json +0 -19
  407. package/dist/generators/languages/templates/src/main/webapp/i18n/my/home.json +0 -19
  408. package/dist/generators/languages/templates/src/main/webapp/i18n/nl/home.json +0 -19
  409. package/dist/generators/languages/templates/src/main/webapp/i18n/pl/home.json +0 -19
  410. package/dist/generators/languages/templates/src/main/webapp/i18n/pt-br/home.json +0 -19
  411. package/dist/generators/languages/templates/src/main/webapp/i18n/pt-pt/home.json +0 -19
  412. package/dist/generators/languages/templates/src/main/webapp/i18n/ro/home.json +0 -19
  413. package/dist/generators/languages/templates/src/main/webapp/i18n/ru/home.json +0 -19
  414. package/dist/generators/languages/templates/src/main/webapp/i18n/sk/home.json +0 -19
  415. package/dist/generators/languages/templates/src/main/webapp/i18n/sr/home.json +0 -19
  416. package/dist/generators/languages/templates/src/main/webapp/i18n/sv/home.json +0 -19
  417. package/dist/generators/languages/templates/src/main/webapp/i18n/ta/home.json +0 -19
  418. package/dist/generators/languages/templates/src/main/webapp/i18n/th/home.json +0 -19
  419. package/dist/generators/languages/templates/src/main/webapp/i18n/tr/home.json +0 -19
  420. package/dist/generators/languages/templates/src/main/webapp/i18n/ua/home.json +0 -19
  421. package/dist/generators/languages/templates/src/main/webapp/i18n/uz-Cyrl-uz/global.json +0 -148
  422. package/dist/generators/languages/templates/src/main/webapp/i18n/uz-Cyrl-uz/home.json +0 -19
  423. package/dist/generators/languages/templates/src/main/webapp/i18n/uz-Latn-uz/home.json +0 -19
  424. package/dist/generators/languages/templates/src/main/webapp/i18n/vi/home.json +0 -19
  425. package/dist/generators/languages/templates/src/main/webapp/i18n/zh-cn/home.json +0 -19
  426. package/dist/generators/languages/templates/src/main/webapp/i18n/zh-tw/home.json +0 -19
  427. package/dist/generators/server/templates/src/main/java/_package_/config/LocaleConfiguration_imperative.java.ejs +0 -43
  428. package/dist/generators/server/templates/src/main/java/_package_/config/LocaleConfiguration_reactive.java.ejs +0 -184
  429. package/dist/generators/statistics.js +0 -223
  430. /package/dist/jdl/converters/{types.js → parsed-jdl-to-jdl-object/types.js} +0 -0
@@ -24,9 +24,6 @@ import static org.springframework.security.oauth2.core.oidc.StandardClaimNames.P
24
24
 
25
25
  import <%= packageName %>.security.SecurityUtils;
26
26
  import <%= packageName %>.security.oauth2.AudienceValidator;
27
- import <%= packageName %>.security.oauth2.JwtGrantedAuthorityConverter;
28
- import org.springframework.security.authentication.AbstractAuthenticationToken;
29
- import org.springframework.security.oauth2.server.resource.authentication.JwtAuthenticationConverter;
30
27
  import org.springframework.beans.factory.annotation.Value;
31
28
  <%_ } _%>
32
29
  <%_ if (authenticationUsesCsrf) { _%>
@@ -42,7 +39,6 @@ import <%= packageName %>.web.filter.SpaWebFilter;
42
39
  import org.springframework.context.annotation.Bean;
43
40
  import org.springframework.context.annotation.Configuration;
44
41
  <%_ if (authenticationTypeOauth2) { _%>
45
- import org.springframework.core.convert.converter.Converter;
46
42
  <%_ if (!applicationTypeMicroservice) { _%>
47
43
  import org.springframework.core.ParameterizedTypeReference;
48
44
  <%_ } _%>
@@ -81,7 +77,6 @@ import org.springframework.security.oauth2.core.oidc.user.DefaultOidcUser;
81
77
  import org.springframework.security.oauth2.core.oidc.user.OidcUser;
82
78
  import org.springframework.security.oauth2.core.oidc.user.OidcUserAuthority;
83
79
  import org.springframework.security.oauth2.jwt.*;
84
- import org.springframework.security.oauth2.server.resource.authentication.ReactiveJwtAuthenticationConverterAdapter;
85
80
  <%_ } _%>
86
81
  <%_ if (!authenticationTypeOauth2) { _%>
87
82
  import org.springframework.security.authentication.ReactiveAuthenticationManager;
@@ -308,9 +303,7 @@ public class SecurityConfiguration {
308
303
  .oauth2Login(oauth2 -> oauth2.authorizationRequestResolver(authorizationRequestResolver(this.clientRegistrationRepository)))
309
304
  <%_ } _%>
310
305
  .oauth2Client(withDefaults())
311
- .oauth2ResourceServer(oauth2 -> oauth2
312
- .jwt(jwt -> jwt
313
- .jwtAuthenticationConverter(jwtAuthenticationConverter())));
306
+ .oauth2ResourceServer(oauth2 -> oauth2.jwt(withDefaults()));
314
307
  <%_ } else if (authenticationTypeJwt) { _%>
315
308
  .httpBasic(basic -> basic.disable())
316
309
  .oauth2ResourceServer(oauth2 -> oauth2.jwt(withDefaults()));
@@ -338,13 +331,6 @@ public class SecurityConfiguration {
338
331
  }
339
332
  <%_ } _%>
340
333
 
341
- Converter<Jwt, Mono<AbstractAuthenticationToken>> jwtAuthenticationConverter() {
342
- JwtAuthenticationConverter jwtAuthenticationConverter = new JwtAuthenticationConverter();
343
- jwtAuthenticationConverter.setJwtGrantedAuthoritiesConverter(new JwtGrantedAuthorityConverter());
344
- jwtAuthenticationConverter.setPrincipalClaimName(PREFERRED_USERNAME);
345
- return new ReactiveJwtAuthenticationConverterAdapter(jwtAuthenticationConverter);
346
- }
347
-
348
334
  /**
349
335
  * Map authorities from "groups" or "roles" claim in ID Token.
350
336
  *
@@ -35,11 +35,6 @@ import org.springframework.security.oauth2.jwt.<%= reactive ? 'Reactive' : '' %>
35
35
  import org.springframework.security.oauth2.jwt.JwtEncoder;
36
36
  import org.springframework.security.oauth2.jwt.Nimbus<%= reactive ? 'Reactive' : '' %>JwtDecoder;
37
37
  import org.springframework.security.oauth2.jwt.NimbusJwtEncoder;
38
- import org.springframework.security.oauth2.server.resource.authentication.<%= reactive ? 'Reactive' : '' %>JwtAuthenticationConverter;
39
- import org.springframework.security.oauth2.server.resource.authentication.JwtGrantedAuthoritiesConverter;
40
- <%_ if (reactive) { _%>
41
- import org.springframework.security.oauth2.server.resource.authentication.ReactiveJwtGrantedAuthoritiesConverterAdapter;
42
- <%_ } _%>
43
38
  <%_ if (communicationSpringWebsocket) { %>
44
39
  import org.springframework.security.oauth2.server.resource.web.BearerTokenResolver;
45
40
  import org.springframework.security.oauth2.server.resource.web.DefaultBearerTokenResolver;
@@ -113,21 +108,6 @@ public class SecurityJwtConfiguration {
113
108
  return new NimbusJwtEncoder(new ImmutableSecret<>(getSecretKey()));
114
109
  }
115
110
 
116
- @Bean
117
- public <%= reactive ? 'Reactive' : '' %>JwtAuthenticationConverter jwtAuthenticationConverter() {
118
- JwtGrantedAuthoritiesConverter grantedAuthoritiesConverter = new JwtGrantedAuthoritiesConverter();
119
- grantedAuthoritiesConverter.setAuthorityPrefix("");
120
- grantedAuthoritiesConverter.setAuthoritiesClaimName(AUTHORITIES_KEY);
121
-
122
- <%= reactive ? 'Reactive' : '' %>JwtAuthenticationConverter jwtAuthenticationConverter = new <%= reactive ? 'Reactive' : '' %>JwtAuthenticationConverter();
123
- <%_ if (reactive) { %>
124
- jwtAuthenticationConverter.setJwtGrantedAuthoritiesConverter(new ReactiveJwtGrantedAuthoritiesConverterAdapter(grantedAuthoritiesConverter));
125
- <%_ } else { _%>
126
- jwtAuthenticationConverter.setJwtGrantedAuthoritiesConverter(grantedAuthoritiesConverter);
127
- <%_ } _%>
128
- return jwtAuthenticationConverter;
129
- }
130
-
131
111
  <%_ if (communicationSpringWebsocket) { %>
132
112
  @Bean
133
113
  public BearerTokenResolver bearerTokenResolver() {
@@ -17,6 +17,10 @@
17
17
  limitations under the License.
18
18
  -%>
19
19
  package <%= packageName %>.security;
20
+ <%_ if (generateAuthenticationApi && (authenticationTypeOauth2 || authenticationTypeJwt)) { _%>
21
+
22
+ import <%= packageName %>.config.Constants;
23
+ <%_ } _%>
20
24
 
21
25
  import org.springframework.security.core.Authentication;
22
26
  import org.springframework.security.core.GrantedAuthority;
@@ -35,23 +39,32 @@ import org.springframework.security.oauth2.jwt.Jwt;
35
39
  import org.springframework.security.core.authority.SimpleGrantedAuthority;
36
40
  import org.springframework.security.oauth2.core.oidc.user.DefaultOidcUser;
37
41
  import org.springframework.security.oauth2.server.resource.authentication.JwtAuthenticationToken;
38
- import java.util.*;
39
- import java.util.stream.Collectors;
42
+ import java.util.Arrays;
43
+ import java.util.ArrayList;
44
+ import java.util.List;
40
45
  <%_ if (reactive) { _%>
41
46
  import reactor.core.publisher.Mono;
42
47
  <%_ } else { _%>
43
48
  import java.util.stream.Stream;
44
49
  <%_ } _%>
45
50
  <%_ } else { _%>
51
+ import java.util.Arrays;
46
52
  <%_ if (reactive) { _%>
47
53
  import reactor.core.publisher.Mono;
48
- import java.util.Arrays;
49
54
  <%_ } else { _%>
50
- import java.util.Arrays;
51
- import java.util.Optional;
52
55
  import java.util.stream.Stream;
53
56
  <%_ } _%>
54
57
  <%_ } _%>
58
+ <%_ if (authenticationTypeOauth2 || authenticationTypeJwt || !reactive) { _%>
59
+ import java.util.Optional;
60
+ <%_ } _%>
61
+ <%_ if (authenticationTypeOauth2 || authenticationTypeJwt) { _%>
62
+ import org.springframework.security.oauth2.core.oidc.StandardClaimNames;
63
+ import java.util.Collection;
64
+ import java.util.HashMap;
65
+ import java.util.Map;
66
+ import java.util.stream.Collectors;
67
+ <%_ } _%>
55
68
 
56
69
  /**
57
70
  * Utility class for Spring Security.
@@ -230,4 +243,51 @@ public final class SecurityUtils {
230
243
  .collect(Collectors.toList());
231
244
  }
232
245
  <%_ } _%>
246
+ <%_ if (generateAuthenticationApi && ((authenticationTypeOauth2 && !syncUserWithIdp) || (authenticationTypeJwt && skipUserManagement))) { _%>
247
+
248
+ public static Map<String, Object> extractDetailsFromTokenAttributes(Map<String, Object> attributes) {
249
+ Map<String, Object> details = new HashMap<>();
250
+
251
+ details.put("activated", Optional.ofNullable(attributes.get(StandardClaimNames.EMAIL_VERIFIED)).orElse(true));
252
+ Optional.ofNullable(attributes.get("uid")).ifPresent(id -> details.put("id", id));
253
+ Optional.ofNullable(attributes.get(StandardClaimNames.FAMILY_NAME)).ifPresent(lastName -> details.put("lastName", lastName));
254
+ Optional.ofNullable(attributes.get(StandardClaimNames.PICTURE)).ifPresent(imageUrl -> details.put("imageUrl", imageUrl));
255
+
256
+ Optional.ofNullable(attributes.get(StandardClaimNames.GIVEN_NAME)).ifPresentOrElse(
257
+ firstName -> details.put("firstName", firstName),
258
+ () -> Optional.ofNullable(attributes.get(StandardClaimNames.NAME)).ifPresent(firstName -> details.put("firstName", firstName))
259
+ );
260
+
261
+ if (attributes.get(StandardClaimNames.EMAIL) != null) {
262
+ details.put("email", attributes.get(StandardClaimNames.EMAIL));
263
+ } else {
264
+ String sub = String.valueOf(attributes.get(StandardClaimNames.SUB));
265
+ String preferredUsername = (String) attributes.get(StandardClaimNames.PREFERRED_USERNAME);
266
+ if (sub.contains("|") && (preferredUsername != null && preferredUsername.contains("@"))) {
267
+ // special handling for Auth0
268
+ details.put("email", preferredUsername);
269
+ } else {
270
+ details.put("email", sub);
271
+ }
272
+ }
273
+
274
+ if (attributes.get("langKey") != null) {
275
+ details.put("langKey", attributes.get("langKey"));
276
+ } else if (attributes.get(StandardClaimNames.LOCALE) != null) {
277
+ // trim off country code if it exists
278
+ String locale = (String) attributes.get(StandardClaimNames.LOCALE);
279
+ if (locale.contains("_")) {
280
+ locale = locale.substring(0, locale.indexOf('_'));
281
+ } else if (locale.contains("-")) {
282
+ locale = locale.substring(0, locale.indexOf('-'));
283
+ }
284
+ details.put("langKey", locale.toLowerCase());
285
+ } else {
286
+ // set langKey to default if not specified by IdP
287
+ details.put("langKey", Constants.DEFAULT_LANGUAGE);
288
+ }
289
+
290
+ return details;
291
+ }
292
+ <%_ } _%>
233
293
  }
@@ -23,6 +23,7 @@ import <%= user.entityAbsoluteClass %>;
23
23
  <%_ } _%>
24
24
 
25
25
  import java.io.Serializable;
26
+ import java.util.Objects;
26
27
  <%_ if (user.primaryKey.hasUUID) { _%>
27
28
  import java.util.UUID;
28
29
  <%_ } _%>
@@ -76,10 +77,32 @@ public class <%= user.dtoClass %> implements Serializable {
76
77
  public String get<%= field.propertyJavaBeanName %>() {
77
78
  return <%= field.fieldName %>;
78
79
  }
80
+
79
81
  public void set<%= field.propertyJavaBeanName %>(String <%= field.fieldName %>) {
80
82
  this.<%= field.fieldName %> = <%= field.fieldName %>;
81
83
  }
84
+
85
+ <%_ } _%>
86
+ @Override
87
+ public boolean equals(Object o) {
88
+ if (this == o) {
89
+ return true;
90
+ }
91
+ if (o == null || getClass() != o.getClass()) {
92
+ return false;
93
+ }
94
+
95
+ <%= user.dtoClass %> userDTO = (<%= user.dtoClass %>) o;
96
+ if (userDTO.getId() == null || getId() == null) {
97
+ return false;
98
+ }
99
+
100
+ return Objects.equals(getId(), userDTO.getId()) &&
101
+ <%_ for (field of user.fields.filter(field => !field.builtIn && field.relatedByOtherEntity)) { _%>
102
+ Objects.equals(get<%= field.propertyJavaBeanName %>(), userDTO.get<%= field.propertyJavaBeanName %>()) &&
82
103
  <%_ } _%>
104
+ Objects.equals(getLogin(), userDTO.getLogin());
105
+ }
83
106
 
84
107
  // prettier-ignore
85
108
  @Override
@@ -84,14 +84,19 @@ public class UserMapper {
84
84
  user.setEmail(userDTO.getEmail());
85
85
  <%_ if (!databaseTypeCassandra) { _%>
86
86
  user.setImageUrl(userDTO.getImageUrl());
87
+ <%_ } _%>
88
+ <%_ if (generateSpringAuditor) { _%>
89
+ user.setCreatedBy(userDTO.getCreatedBy());
90
+ user.setCreatedDate(userDTO.getCreatedDate());
91
+ user.setLastModifiedBy(userDTO.getLastModifiedBy());
92
+ user.setLastModifiedDate(userDTO.getLastModifiedDate());
87
93
  <%_ } _%>
88
94
  user.setActivated(userDTO.isActivated());
89
95
  user.setLangKey(userDTO.getLangKey());
90
96
  <%_ if (databaseTypeSql || databaseTypeMongodb || databaseTypeNeo4j) { _%>
91
97
  Set<Authority> authorities = this.authoritiesFromStrings(userDTO.getAuthorities());
92
98
  user.setAuthorities(authorities);
93
- <%_ } _%>
94
- <%_ if (databaseTypeCassandra || databaseTypeCouchbase) { _%>
99
+ <%_ } else { _%>
95
100
  Set<String> authorities = this.cleanNullStringAuthorities(userDTO.getAuthorities());
96
101
  user.setAuthorities(authorities);
97
102
  <%_ } _%>
@@ -114,8 +119,7 @@ public class UserMapper {
114
119
 
115
120
  return authorities;
116
121
  }
117
- <%_ } _%>
118
- <%_ if (databaseTypeCassandra || databaseTypeCouchbase) { _%>
122
+ <%_ } else { _%>
119
123
 
120
124
  private Set<String> cleanNullStringAuthorities(Set<String> authoritiesAsString) {
121
125
  Set<String> authorities = new HashSet<>();
@@ -18,6 +18,11 @@
18
18
  -%>
19
19
  package <%= packageName %>.web.rest;
20
20
 
21
+ import <%= packageName %>.security.SecurityUtils;
22
+ <%_ if (generateBuiltInAuthorityEntity) { _%>
23
+ import <%= packageName %>.domain.Authority;
24
+
25
+ <%_ } _%>
21
26
  <%_ if (reactive) { _%>
22
27
  import reactor.core.publisher.Mono;
23
28
  <%_ } else { _%>
@@ -47,7 +52,7 @@ import org.springframework.security.core.context.SecurityContextHolder;
47
52
  <%_ } _%>
48
53
  <%_ } _%>
49
54
 
50
- import com.fasterxml.jackson.annotation.JsonCreator;
55
+ import com.fasterxml.jackson.annotation.JsonAnyGetter;
51
56
  import org.slf4j.Logger;
52
57
  import org.slf4j.LoggerFactory;
53
58
  import org.springframework.security.core.GrantedAuthority;
@@ -55,6 +60,7 @@ import org.springframework.web.bind.annotation.GetMapping;
55
60
  import org.springframework.web.bind.annotation.RequestMapping;
56
61
  import org.springframework.web.bind.annotation.RestController;
57
62
 
63
+ import java.util.Map;
58
64
  import java.util.Set;
59
65
  import java.util.stream.Collectors;
60
66
 
@@ -157,12 +163,21 @@ public class AccountResource {
157
163
 
158
164
  private static class UserVM {
159
165
  private String login;
166
+ <%_ if (generateBuiltInAuthorityEntity) { _%>
167
+ private Set<Authority> authorities;
168
+ <%_ } else { _%>
160
169
  private Set<String> authorities;
170
+ <%_ } _%>
171
+ <%_ if (authenticationTypeOauth2 || authenticationTypeJwt) { _%>
172
+ private Map<String, Object> details;
173
+ <%_ } _%>
161
174
 
162
- @JsonCreator
163
- UserVM(String login, Set<String> authorities) {
175
+ UserVM(String login, Set<String> authorities<% if (authenticationTypeOauth2 || authenticationTypeJwt) { %>, Map<String, Object> details<% } %>) {
164
176
  this.login = login;
165
177
  this.authorities = authorities;
178
+ <%_ if (authenticationTypeOauth2 || authenticationTypeJwt) { _%>
179
+ this.details = details;
180
+ <%_ } _%>
166
181
  }
167
182
 
168
183
  public boolean isActivated() {
@@ -176,22 +191,41 @@ public class AccountResource {
176
191
  public String getLogin() {
177
192
  return login;
178
193
  }
194
+ <%_ if (authenticationTypeOauth2 || authenticationTypeJwt) { _%>
195
+
196
+ @JsonAnyGetter
197
+ public Map<String, Object> getDetails() {
198
+ return details;
199
+ }
200
+ <%_ } _%>
179
201
  }
180
202
  <%_ if (authenticationTypeOauth2 || authenticationTypeJwt) { _%>
181
203
 
182
- private UserVM getUserFromAuthentication(AbstractAuthenticationToken authToken) {
183
- if (
204
+ private static UserVM getUserFromAuthentication(AbstractAuthenticationToken authToken) {
205
+ Map<String, Object> attributes;
206
+ if (authToken instanceof JwtAuthenticationToken) {
207
+ attributes = ((JwtAuthenticationToken) authToken).getTokenAttributes();
184
208
  <%_ if (authenticationTypeOauth2) { _%>
185
- !(authToken instanceof OAuth2AuthenticationToken) &&
209
+ } else if (authToken instanceof OAuth2AuthenticationToken) {
210
+ attributes = ((OAuth2AuthenticationToken) authToken).getPrincipal().getAttributes();
186
211
  <%_ } _%>
187
- !(authToken instanceof JwtAuthenticationToken)
188
- ) {
212
+ } else {
189
213
  throw new IllegalArgumentException("AuthenticationToken is not OAuth2 or JWT!");
190
214
  }
191
215
 
192
216
  return new UserVM(
193
217
  authToken.getName(),
194
- authToken.getAuthorities().stream().map(GrantedAuthority::getAuthority).collect(Collectors.toSet())
218
+ authToken.getAuthorities().stream()
219
+ .map(GrantedAuthority::getAuthority)
220
+ <%_ if (generateBuiltInAuthorityEntity) { _%>
221
+ .map(authority -> {
222
+ Authority auth = new Authority();
223
+ auth.setName(authority);
224
+ return auth;
225
+ })
226
+ <%_ } _%>
227
+ .collect(Collectors.toSet()),
228
+ SecurityUtils.extractDetailsFromTokenAttributes(attributes)
195
229
  );
196
230
  }
197
231
  <%_ } _%>
@@ -188,6 +188,22 @@ spring:
188
188
  enabled: false
189
189
  <%_ } _%>
190
190
  <%_ if (applicationTypeGateway) { _%>
191
+ <%_ if (!serviceDiscoveryAny) { _%>
192
+ discovery:
193
+ client:
194
+ simple:
195
+ instances:
196
+ <%= lowercaseBaseName %>:
197
+ - instanceId: <%= lowercaseBaseName %>1
198
+ host: localhost
199
+ port: <%= serverPort %>
200
+ <%_ for (const ms of gatewayRoutes ?? []) { _%>
201
+ <%= ms.route %>:
202
+ - instanceId: <%= ms.route %>1
203
+ host: <%= ms.host %>
204
+ port: <%= ms.serverPort %>
205
+ <%_ } _%>
206
+ <%_ } _%>
191
207
  gateway:
192
208
  <%_ if (reactive) { _%>
193
209
  default-filters:
@@ -212,11 +228,22 @@ spring:
212
228
  mvc:
213
229
  routes:
214
230
  - id: <%= lowercaseBaseName %>_route
215
- uri: lb://<%= lowercaseBaseName %>:<%= serverPort %>
231
+ uri: lb://<%= lowercaseBaseName %>
216
232
  predicates:
217
233
  - Path=/services/<%= lowercaseBaseName %>/**
218
234
  filters:
219
- - RewritePath=/services/<%= lowercaseBaseName %>/?(?<segment>.*), /$\{segment}
235
+ - StripPrefix=2
236
+ <%_ for (const ms of gatewayRoutes ?? []) { _%>
237
+ - id: <%= ms.route %>_route
238
+ uri: lb://<%= ms.route %>
239
+ predicates:
240
+ - Path=/services/<%= ms.route %>/**
241
+ filters:
242
+ - StripPrefix=2
243
+ <%_ if (authenticationTypeOauth2) { _%>
244
+ - TokenRelay
245
+ <%_ } _%>
246
+ <%_ } _%>
220
247
  <%_ } _%>
221
248
  <%_ } _%>
222
249
  <%_ if (messageBrokerKafka) { _%>
@@ -245,7 +272,7 @@ spring:
245
272
  # The commented value for `active` can be replaced with valid Spring profiles to load.
246
273
  # Otherwise, it will be filled in by <%= buildTool %> when building the JAR file
247
274
  # Either way, it can be overridden by `--spring.profiles.active` value passed in the commandline or `-Dspring.profiles.active` set in `JAVA_OPTS`
248
- active: #spring.profiles.active#
275
+ active: '@spring.profiles.active@'
249
276
  group:
250
277
  dev:
251
278
  - dev
@@ -308,14 +335,43 @@ spring:
308
335
  <% if (reactive) { %>webflux<% } else { %>mvc<% } %>:
309
336
  problemdetails:
310
337
  enabled: true
311
- <%_ if (generateInMemoryUserCredentials) { _%>
338
+ <%_ if (generateInMemoryUserCredentials || authenticationTypeOauth2 || authenticationTypeJwt) { _%>
312
339
  security:
340
+ <%_ if (generateInMemoryUserCredentials) { _%>
313
341
  user:
314
342
  name: admin
315
343
  password: admin
316
344
  roles:
317
345
  - ADMIN
318
346
  - USER
347
+ <%_ } _%>
348
+ <%_ if (authenticationTypeOauth2) { _%>
349
+ oauth2:
350
+ client:
351
+ provider:
352
+ oidc:
353
+ issuer-uri: http://localhost:9080/realms/jhipster
354
+ registration:
355
+ oidc:
356
+ <%_ if (applicationTypeMicroservice) { _%>
357
+ client-id: internal
358
+ client-secret: internal
359
+ <%_ } else { _%>
360
+ client-id: web_app
361
+ client-secret: web_app
362
+ <%_ } _%>
363
+ scope: openid, profile, email, offline_access # last one for refresh tokens
364
+ resourceserver:
365
+ jwt:
366
+ principal-claim-name: preferred_username
367
+ <%_ } _%>
368
+ <%_ if (authenticationTypeJwt) { _%>
369
+ oauth2:
370
+ resourceserver:
371
+ jwt:
372
+ authority-prefix: ''
373
+ authorities-claim-name: auth
374
+ <%_ } _%>
319
375
  <%_ } _%>
320
376
  task:
321
377
  execution:
@@ -333,24 +389,6 @@ spring:
333
389
  output:
334
390
  ansi:
335
391
  console-available: true
336
- <%_ if (authenticationTypeOauth2) { _%>
337
- security:
338
- oauth2:
339
- client:
340
- provider:
341
- oidc:
342
- issuer-uri: http://localhost:9080/realms/jhipster
343
- registration:
344
- oidc:
345
- <%_ if (applicationTypeMicroservice) { _%>
346
- client-id: internal
347
- client-secret: internal
348
- <%_ } else { _%>
349
- client-id: web_app
350
- client-secret: web_app
351
- <%_ } _%>
352
- scope: openid, profile, email, offline_access # last one for refresh tokens
353
- <%_ } _%>
354
392
 
355
393
  server:
356
394
  servlet:
@@ -30,7 +30,7 @@ spring:
30
30
  # The commented value for `active` can be replaced with valid Spring profiles to load.
31
31
  # Otherwise, it will be filled in by <%= buildTool %> when building the JAR file
32
32
  # Either way, it can be overridden by `--spring.profiles.active` value passed in the commandline or `-Dspring.profiles.active` set in `JAVA_OPTS`
33
- active: #spring.profiles.active#
33
+ active: '@spring.profiles.active@'
34
34
  cloud:
35
35
  <%_ if (serviceDiscoveryConsul) { _%>
36
36
  consul:
@@ -72,9 +72,9 @@
72
72
  </head>
73
73
  <body>
74
74
  <div class="container">
75
- <h1>Welcome, Java Hipster!</h1>
75
+ <h1>Welcome, <%- hipsterName %>!</h1>
76
76
 
77
- <p>This application is a microservice, which has been generated using <a href="https://www.jhipster.tech/" rel="noopener noreferrer">JHipster</a>.</p>
77
+ <p>This application is a microservice, which has been generated using <a href="<%- hipsterDocumentationLink %>" rel="noopener noreferrer">JHipster</a>.</p>
78
78
 
79
79
  <ul>
80
80
  <%_ if (microfrontend) { %>
@@ -107,15 +107,15 @@
107
107
  </h2>
108
108
 
109
109
  <ul>
110
- <li><a href="https://www.jhipster.tech/" target="_blank" rel="noopener noreferrer">JHipster homepage</a></li>
111
- <li><a href="https://stackoverflow.com/tags/jhipster/info" target="_blank" rel="noopener noreferrer">JHipster on Stack Overflow</a></li>
112
- <li><a href="https://github.com/jhipster/generator-jhipster/issues?state=open" target="_blank" rel="noopener noreferrer">JHipster bug tracker</a></li>
113
- <li><a href="https://gitter.im/jhipster/generator-jhipster" target="_blank" rel="noopener noreferrer">JHipster public chat room</a></li>
114
- <li><a href="https://twitter.com/jhipster" target="_blank" rel="noopener noreferrer">follow @jhipster on Twitter</a></li>
110
+ <li><a href="<%- hipsterDocumentationLink %>" target="_blank" rel="noopener noreferrer">JHipster homepage</a></li>
111
+ <li><a href="<%- hipsterStackoverflowLink %>" target="_blank" rel="noopener noreferrer">JHipster on Stack Overflow</a></li>
112
+ <li><a href="<%- hipsterBugTrackerLink %>" target="_blank" rel="noopener noreferrer">JHipster bug tracker</a></li>
113
+ <li><a href="<%- hipsterChatLink %>" target="_blank" rel="noopener noreferrer">JHipster public chat room</a></li>
114
+ <li><a href="<%- hipsterTwitterLink %>" target="_blank" rel="noopener noreferrer">follow @jhipster on Twitter</a></li>
115
115
  </ul>
116
116
 
117
117
  <p>
118
- <span>If you like JHipster, don't forget to give us a star on</span> <a href="https://github.com/jhipster/generator-jhipster" target="_blank" rel="noopener noreferrer">GitHub</a>!
118
+ <span>If you like JHipster, don't forget to give us a star on</span> <a href="<%- hipsterProjectLink %>" target="_blank" rel="noopener noreferrer">GitHub</a>!
119
119
  </p>
120
120
 
121
121
  </div>
@@ -45,7 +45,7 @@ components:
45
45
  it SHOULD provide human-readable documentation for the problem type
46
46
  (e.g., using HTML).
47
47
  default: 'about:blank'
48
- example: 'https://www.jhipster.tech/problem/constraint-violation'
48
+ example: 'https://www.jhipster.tech/problem/problem-with-message'
49
49
  title:
50
50
  type: string
51
51
  description: |
@@ -16,6 +16,10 @@
16
16
  See the License for the specific language governing permissions and
17
17
  limitations under the License.
18
18
  -%>
19
+ <%_
20
+ const callBlock = reactive ? '.block()' : '';
21
+ const callBlockOptional = reactive ? '.blockOptional()' : '';
22
+ _%>
19
23
  package <%= packageName %>.security;
20
24
 
21
25
  import <%= packageName %>.IntegrationTest;
@@ -24,8 +28,10 @@ import <%= packageName %>.config.Constants;
24
28
  <%_ } _%>
25
29
  import <%= user.entityAbsoluteClass %>;
26
30
  import <%= packageName %>.repository.UserRepository;
31
+ import <%= packageName %>.service.UserService;
27
32
 
28
33
  import org.apache.commons.lang3.RandomStringUtils;
34
+ import org.junit.jupiter.api.AfterEach;
29
35
  import org.junit.jupiter.api.BeforeEach;
30
36
  import org.junit.jupiter.api.Test;
31
37
  import org.springframework.beans.factory.annotation.Autowired;
@@ -74,19 +80,14 @@ class DomainUserDetailsServiceIT {
74
80
  @Autowired
75
81
  private UserRepository userRepository;
76
82
 
83
+ @Autowired
84
+ private UserService userService;
85
+
77
86
  @Autowired
78
87
  @Qualifier("userDetailsService")
79
88
  private <% if (reactive) { %>Reactive<% } %>UserDetailsService domainUserDetailsService;
80
89
 
81
- @BeforeEach
82
- public void init() {
83
- <%_ if (databaseTypeSql && reactive) { _%>
84
- userRepository.deleteAllUserAuthorities().block();
85
- <%_ } _%>
86
- <%_ if (!databaseTypeSql || reactive) { _%>
87
- userRepository.deleteAll()<% if (reactive) { %>.block()<% } %>;
88
-
89
- <%_ } _%>
90
+ public <%= user.persistClass %> getUserOne() {
90
91
  <%= user.persistClass %> userOne = new <%= user.persistClass %>();
91
92
  <%_ if (databaseTypeCassandra) { _%>
92
93
  userOne.setId(UUID.randomUUID().toString());
@@ -101,8 +102,10 @@ class DomainUserDetailsServiceIT {
101
102
  <%_ if (databaseTypeSql && reactive) { _%>
102
103
  userOne.setCreatedBy(Constants.SYSTEM);
103
104
  <%_ } _%>
104
- userRepository.save(userOne)<% if (reactive) { %>.block()<% } %>;
105
+ return userOne;
106
+ }
105
107
 
108
+ public <%= user.persistClass %> getUserTwo() {
106
109
  <%= user.persistClass %> userTwo = new <%= user.persistClass %>();
107
110
  <%_ if (databaseTypeCassandra) { _%>
108
111
  userTwo.setId(UUID.randomUUID().toString());
@@ -117,8 +120,10 @@ class DomainUserDetailsServiceIT {
117
120
  <%_ if (databaseTypeSql && reactive) { _%>
118
121
  userTwo.setCreatedBy(Constants.SYSTEM);
119
122
  <%_ } _%>
120
- userRepository.save(userTwo)<% if (reactive) { %>.block()<% } %>;
123
+ return userTwo;
124
+ }
121
125
 
126
+ public <%= user.persistClass %> getUserThree() {
122
127
  <%= user.persistClass %> userThree = new <%= user.persistClass %>();
123
128
  <%_ if (databaseTypeCassandra) { _%>
124
129
  userThree.setId(UUID.randomUUID().toString());
@@ -133,7 +138,21 @@ class DomainUserDetailsServiceIT {
133
138
  <%_ if (databaseTypeSql && reactive) { _%>
134
139
  userThree.setCreatedBy(Constants.SYSTEM);
135
140
  <%_ } _%>
136
- userRepository.save(userThree)<% if (reactive) { %>.block()<% } %>;
141
+ return userThree;
142
+ }
143
+
144
+ @BeforeEach
145
+ public void init() {
146
+ userRepository.save(getUserOne())<%- callBlock %>;
147
+ userRepository.save(getUserTwo())<%- callBlock %>;
148
+ userRepository.save(getUserThree())<%- callBlock %>;
149
+ }
150
+
151
+ @AfterEach
152
+ public void cleanup () {
153
+ userService.deleteUser(USER_ONE_LOGIN)<%- callBlock %>;
154
+ userService.deleteUser(USER_TWO_LOGIN)<%- callBlock %>;
155
+ userService.deleteUser(USER_THREE_LOGIN)<%- callBlock %>;
137
156
  }
138
157
 
139
158
  @Test
@@ -176,5 +195,4 @@ class DomainUserDetailsServiceIT {
176
195
  assertThatExceptionOfType(UserNotActivatedException.class).isThrownBy(
177
196
  () -> domainUserDetailsService.<% if (reactive) { %>find<% } else { %>loadUser<% } %>ByUsername(USER_THREE_LOGIN)<% if (reactive) { %>.block()<% } %>);
178
197
  }
179
-
180
198
  }