generator-jhipster 8.9.0 → 8.11.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 (312) hide show
  1. package/README.md +1 -1
  2. package/dist/cli/cli.mjs +0 -13
  3. package/dist/cli/download.mjs +2 -3
  4. package/dist/cli/environment-builder.mjs +5 -3
  5. package/dist/generators/angular/generator.d.ts +10 -1
  6. package/dist/generators/angular/resources/package.json +27 -27
  7. package/dist/generators/angular/templates/README.md.jhi.client.angular.ejs +1 -1
  8. package/dist/generators/angular/templates/eslint.config.js.jhi.angular.ejs +4 -6
  9. package/dist/generators/angular/templates/src/main/webapp/app/account/activate/activate.component.spec.ts.ejs +1 -1
  10. package/dist/generators/angular/templates/src/main/webapp/app/account/password/password.component.html.ejs +3 -3
  11. package/dist/generators/angular/templates/src/main/webapp/app/account/password/password.component.spec.ts.ejs +1 -1
  12. package/dist/generators/angular/templates/src/main/webapp/app/account/password/password.component.ts.ejs +6 -4
  13. package/dist/generators/angular/templates/src/main/webapp/app/account/password-reset/finish/password-reset-finish.component.html.ejs +1 -1
  14. package/dist/generators/angular/templates/src/main/webapp/app/account/password-reset/finish/password-reset-finish.component.spec.ts.ejs +1 -1
  15. package/dist/generators/angular/templates/src/main/webapp/app/account/password-reset/init/password-reset-init.component.html.ejs +1 -1
  16. package/dist/generators/angular/templates/src/main/webapp/app/account/register/register.component.html.ejs +1 -1
  17. package/dist/generators/angular/templates/src/main/webapp/app/account/sessions/sessions.component.spec.ts.ejs +1 -1
  18. package/dist/generators/angular/templates/src/main/webapp/app/account/settings/settings.component.html.ejs +1 -1
  19. package/dist/generators/angular/templates/src/main/webapp/app/account/settings/settings.component.spec.ts.ejs +1 -1
  20. package/dist/generators/angular/templates/src/main/webapp/app/admin/configuration/configuration.component.spec.ts.ejs +1 -1
  21. package/dist/generators/angular/templates/src/main/webapp/app/admin/health/modal/health-modal.component.ts.ejs +1 -1
  22. package/dist/generators/angular/templates/src/main/webapp/app/admin/logs/logs.component.spec.ts.ejs +1 -1
  23. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/metrics.component.html.ejs +8 -13
  24. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/delete/user-management-delete-dialog.component.html.ejs +1 -1
  25. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/delete/user-management-delete-dialog.component.spec.ts.ejs +1 -1
  26. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/detail/user-management-detail.component.spec.ts.ejs +1 -1
  27. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/list/user-management.component.html.ejs +3 -3
  28. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/list/user-management.component.spec.ts.ejs +2 -2
  29. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/update/user-management-update.component.html.ejs +1 -1
  30. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/update/user-management-update.component.spec.ts.ejs +3 -3
  31. package/dist/generators/angular/templates/src/main/webapp/app/app-page-title-strategy.ts.ejs +1 -3
  32. package/dist/generators/angular/templates/src/main/webapp/app/app.component.ts.ejs +1 -1
  33. package/dist/generators/angular/templates/src/main/webapp/app/core/tracker/tracker.service.ts.ejs +1 -1
  34. package/dist/generators/angular/templates/src/main/webapp/app/core/util/alert.service.ts.ejs +1 -2
  35. package/dist/generators/angular/templates/src/main/webapp/app/core/util/data-util.service.spec.ts.ejs +0 -1
  36. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/delete/_entityFile_-delete-dialog.component.html.ejs +1 -1
  37. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/delete/_entityFile_-delete-dialog.component.spec.ts.ejs +2 -2
  38. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/detail/_entityFile_-detail.component.html.ejs +2 -2
  39. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/detail/_entityFile_-detail.component.spec.ts.ejs +4 -5
  40. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/list/_entityFile_.component.html.ejs +4 -4
  41. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/list/_entityFile_.component.spec.ts.ejs +2 -2
  42. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/service/_entityFile_.service.spec.ts.ejs +4 -4
  43. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/update/_entityFile_-update.component.html.ejs +2 -2
  44. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/update/_entityFile_-update.component.spec.ts.ejs +7 -7
  45. package/dist/generators/angular/templates/src/main/webapp/app/home/home.component.spec.ts.ejs +4 -4
  46. package/dist/generators/angular/templates/src/main/webapp/app/layouts/main/main.component.html.ejs +4 -4
  47. package/dist/generators/angular/templates/src/main/webapp/app/layouts/navbar/navbar.component.spec.ts.ejs +3 -3
  48. package/dist/generators/angular/templates/src/main/webapp/app/layouts/profiles/page-ribbon.component.spec.ts.ejs +1 -1
  49. package/dist/generators/angular/templates/src/main/webapp/app/layouts/profiles/page-ribbon.component.ts.ejs +8 -6
  50. package/dist/generators/angular/templates/src/main/webapp/app/login/login.component.spec.ts.ejs +3 -3
  51. package/dist/generators/angular/templates/src/main/webapp/app/shared/alert/alert-error.component.spec.ts.ejs +8 -8
  52. package/dist/generators/angular/templates/src/main/webapp/app/shared/alert/alert.component.spec.ts.ejs +2 -2
  53. package/dist/generators/angular/templates/src/main/webapp/app/shared/pagination/item-count.component.ts.ejs +1 -1
  54. package/dist/generators/angular/templates/src/main/webapp/app/shared/sort/sort.service.ts.ejs +3 -3
  55. package/dist/generators/app/generator.d.ts +4 -1
  56. package/dist/generators/base/api.d.ts +3 -1
  57. package/dist/generators/base/shared-data.js +1 -0
  58. package/dist/generators/base/support/contents.d.ts +10 -1
  59. package/dist/generators/base/support/contents.js +9 -0
  60. package/dist/generators/base/support/index.d.ts +1 -0
  61. package/dist/generators/base/support/index.js +1 -0
  62. package/dist/generators/base/support/needles.d.ts +14 -5
  63. package/dist/generators/base/support/needles.js +21 -17
  64. package/dist/generators/base/support/os.d.ts +1 -0
  65. package/dist/generators/base/support/os.js +20 -0
  66. package/dist/generators/base/support/write-files.d.ts +18 -0
  67. package/dist/generators/base/support/write-files.js +0 -26
  68. package/dist/generators/base-application/support/prepare-entity.js +14 -26
  69. package/dist/generators/base-application/support/update-application-entities-transform.js +3 -2
  70. package/dist/generators/base-application/types.d.ts +5 -0
  71. package/dist/generators/base-core/generator.js +7 -4
  72. package/dist/generators/bootstrap/generator.d.ts +6 -1
  73. package/dist/generators/bootstrap/generator.js +31 -2
  74. package/dist/generators/bootstrap/support/auto-crlf-transform.js +2 -2
  75. package/dist/generators/bootstrap/support/eslint-worker.js +5 -2
  76. package/dist/generators/bootstrap-application/generator.d.ts +4 -1
  77. package/dist/generators/bootstrap-application-base/generator.d.ts +12 -2
  78. package/dist/generators/bootstrap-application-base/generator.js +4 -3
  79. package/dist/generators/bootstrap-application-client/generator.d.ts +3 -1
  80. package/dist/generators/bootstrap-application-server/generator.d.ts +8 -1
  81. package/dist/generators/bootstrap-workspaces/generator.d.ts +9 -1
  82. package/dist/generators/ci-cd/generator.d.ts +6 -1
  83. package/dist/generators/client/generator.d.ts +13 -1
  84. package/dist/generators/client/generators/common/generator.d.ts +1 -1
  85. package/dist/generators/client/resources/package.json +5 -5
  86. package/dist/generators/client/templates/src/main/webapp/swagger-ui/index.html.ejs +8 -6
  87. package/dist/generators/common/generator.d.ts +8 -1
  88. package/dist/generators/common/resources/package.json +2 -2
  89. package/dist/generators/cucumber/generator.d.ts +2 -1
  90. package/dist/generators/cypress/generator.d.ts +7 -1
  91. package/dist/generators/cypress/templates/src/test/javascript/cypress/e2e/account/logout.cy.ts.ejs +11 -3
  92. package/dist/generators/cypress/templates/src/test/javascript/cypress/support/oauth2.ts.ejs +4 -4
  93. package/dist/generators/docker/generator.d.ts +4 -1
  94. package/dist/generators/docker-compose/generator.d.ts +23 -1
  95. package/dist/generators/entities/generator.d.ts +4 -1
  96. package/dist/generators/entity/generator.d.ts +5 -1
  97. package/dist/generators/export-jdl/generator.d.ts +3 -1
  98. package/dist/generators/feign-client/generator.d.ts +2 -1
  99. package/dist/generators/feign-client/templates/src/test/java/_package_/client/AuthorizationHeaderUtilTest.java.ejs +1 -1
  100. package/dist/generators/gatling/generator.d.ts +3 -1
  101. package/dist/generators/generate-blueprint/constants.d.ts +1 -1
  102. package/dist/generators/generate-blueprint/constants.js +1 -1
  103. package/dist/generators/generate-blueprint/files.js +2 -2
  104. package/dist/generators/generate-blueprint/generator.d.ts +10 -1
  105. package/dist/generators/generate-blueprint/generator.js +16 -16
  106. package/dist/generators/generate-blueprint/resources/package.json +3 -3
  107. package/dist/generators/generate-blueprint/templates/.blueprint/generate-sample/command.mjs.ejs +1 -1
  108. package/dist/generators/generate-blueprint/templates/generators/generator/generator.mjs.jhi.ejs +1 -0
  109. package/dist/generators/generator-constants.d.ts +1 -1
  110. package/dist/generators/generator-constants.js +2 -2
  111. package/dist/generators/git/generator.d.ts +5 -1
  112. package/dist/generators/gradle/generator.d.ts +5 -1
  113. package/dist/generators/gradle/generators/code-quality/generator.d.ts +2 -1
  114. package/dist/generators/gradle/generators/jib/generator.d.ts +2 -1
  115. package/dist/generators/gradle/generators/node-gradle/generator.d.ts +2 -1
  116. package/dist/generators/gradle/templates/gradle/wrapper/gradle-wrapper.properties +1 -1
  117. package/dist/generators/heroku/generator.d.ts +6 -1
  118. package/dist/generators/info/generator.d.ts +1 -1
  119. package/dist/generators/init/generator.d.ts +2 -1
  120. package/dist/generators/init/resources/.node-version +1 -1
  121. package/dist/generators/java/generators/bootstrap/generator.d.ts +8 -2
  122. package/dist/generators/java/generators/bootstrap/generator.js +17 -3
  123. package/dist/generators/java/generators/build-tool/generator.d.ts +2 -1
  124. package/dist/generators/java/generators/code-quality/generator.d.ts +2 -1
  125. package/dist/generators/java/generators/domain/generator.d.ts +6 -1
  126. package/dist/generators/java/generators/graalvm/generator.d.ts +6 -1
  127. package/dist/generators/java/generators/graalvm/internal/constants.d.ts +1 -1
  128. package/dist/generators/java/generators/graalvm/internal/constants.js +2 -2
  129. package/dist/generators/java/generators/graalvm/resources/gradle/libs.versions.toml +1 -1
  130. package/dist/generators/java/generators/jib/generator.d.ts +2 -1
  131. package/dist/generators/java/generators/node/generator.d.ts +4 -1
  132. package/dist/generators/java/generators/node/generator.js +2 -1
  133. package/dist/generators/java/generators/openapi-generator/generator.d.ts +2 -1
  134. package/dist/generators/java/generators/server/generator.d.ts +1 -1
  135. package/dist/generators/java/support/index.d.ts +2 -0
  136. package/dist/generators/java/support/index.js +2 -0
  137. package/dist/generators/java/support/java-enum.d.ts +8 -0
  138. package/dist/generators/java/support/java-enum.js +20 -0
  139. package/dist/generators/java/support/java-file-edit.d.ts +18 -0
  140. package/dist/generators/java/support/java-file-edit.js +94 -0
  141. package/dist/generators/java/types.d.ts +37 -1
  142. package/dist/generators/javascript/generators/bootstrap/generator.d.ts +4 -1
  143. package/dist/generators/javascript/generators/eslint/generator.d.ts +4 -1
  144. package/dist/generators/javascript/generators/eslint/templates/eslint.config.js.jhi.ejs +8 -0
  145. package/dist/generators/javascript/generators/husky/generator.d.ts +3 -1
  146. package/dist/generators/javascript/generators/prettier/generator.d.ts +4 -1
  147. package/dist/generators/javascript/resources/package.json +3 -3
  148. package/dist/generators/jdl/generator.d.ts +3 -1
  149. package/dist/generators/kubernetes/generator.d.ts +25 -19
  150. package/dist/generators/kubernetes-helm/generator.d.ts +18 -12
  151. package/dist/generators/kubernetes-knative/generator.d.ts +14 -8
  152. package/dist/generators/languages/generator.d.ts +9 -1
  153. package/dist/generators/languages/support/languages.js +1 -0
  154. package/dist/generators/languages/templates/entity/i18n/entity_he.json.ejs +78 -0
  155. package/dist/generators/languages/templates/src/main/resources/i18n/messages_he.properties.ejs +41 -0
  156. package/dist/generators/languages/templates/src/main/webapp/i18n/he/activate.json.ejs +27 -0
  157. package/dist/generators/languages/templates/src/main/webapp/i18n/he/configuration.json +11 -0
  158. package/dist/generators/languages/templates/src/main/webapp/i18n/he/error.json +15 -0
  159. package/dist/generators/languages/templates/src/main/webapp/i18n/he/gateway.json +16 -0
  160. package/dist/generators/languages/templates/src/main/webapp/i18n/he/global.json.ejs +172 -0
  161. package/dist/generators/languages/templates/src/main/webapp/i18n/he/health.json.ejs +75 -0
  162. package/dist/generators/languages/templates/src/main/webapp/i18n/he/home.json.ejs +20 -0
  163. package/dist/generators/languages/templates/src/main/webapp/i18n/he/login.json +20 -0
  164. package/dist/generators/languages/templates/src/main/webapp/i18n/he/logs.json +12 -0
  165. package/dist/generators/languages/templates/src/main/webapp/i18n/he/metrics.json +103 -0
  166. package/dist/generators/languages/templates/src/main/webapp/i18n/he/password.json +13 -0
  167. package/dist/generators/languages/templates/src/main/webapp/i18n/he/register.json +25 -0
  168. package/dist/generators/languages/templates/src/main/webapp/i18n/he/reset.json.ejs +45 -0
  169. package/dist/generators/languages/templates/src/main/webapp/i18n/he/sessions.json +16 -0
  170. package/dist/generators/languages/templates/src/main/webapp/i18n/he/settings.json +33 -0
  171. package/dist/generators/languages/templates/src/main/webapp/i18n/he/tracker.json +13 -0
  172. package/dist/generators/languages/templates/src/main/webapp/i18n/he/user-management.json +32 -0
  173. package/dist/generators/languages/templates/src/test/resources/i18n/messages_he.properties.ejs +4 -0
  174. package/dist/generators/liquibase/generator.d.ts +9 -1
  175. package/dist/generators/liquibase/generator.js +3 -19
  176. package/dist/generators/maven/generator.d.ts +6 -1
  177. package/dist/generators/maven/generators/code-quality/generator.d.ts +1 -1
  178. package/dist/generators/maven/generators/frontend-plugin/generator.d.ts +1 -1
  179. package/dist/generators/maven/generators/jib/generator.d.ts +1 -1
  180. package/dist/generators/project-name/generator.d.ts +3 -1
  181. package/dist/generators/react/generator.d.ts +15 -1
  182. package/dist/generators/react/resources/package.json +34 -34
  183. package/dist/generators/react/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_-delete-dialog.tsx.ejs +2 -1
  184. package/dist/generators/react/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_.reducer.ts.ejs +4 -4
  185. package/dist/generators/react/templates/src/main/webapp/app/entities/menu.tsx.ejs +2 -2
  186. package/dist/generators/react/templates/src/main/webapp/app/entities/routes.tsx.ejs +1 -1
  187. package/dist/generators/react/templates/src/main/webapp/app/modules/administration/administration.reducer.spec.ts.ejs +0 -6
  188. package/dist/generators/react/templates/src/main/webapp/app/shared/reducers/application-profile.spec.ts.ejs +0 -6
  189. package/dist/generators/react/templates/src/main/webapp/app/shared/reducers/locale.spec.ts.ejs +0 -47
  190. package/dist/generators/react/templates/src/main/webapp/app/shared/reducers/reducer.utils.ts.ejs +1 -1
  191. package/dist/generators/react/templates/src/main/webapp/app/shared/util/entity-utils.ts.ejs +1 -1
  192. package/dist/generators/server/generator.d.ts +7 -1
  193. package/dist/generators/server/resources/Dockerfile +17 -17
  194. package/dist/generators/server/resources/gradle/libs.versions.toml +15 -15
  195. package/dist/generators/server/resources/pom.xml +16 -16
  196. package/dist/generators/server/types.d.ts +22 -0
  197. package/dist/generators/spring-boot/generator.d.ts +14 -2
  198. package/dist/generators/spring-boot/generator.js +35 -4
  199. package/dist/generators/spring-boot/resources/spring-boot-dependencies.pom +158 -148
  200. package/dist/generators/spring-boot/templates/src/main/java/_package_/Application.java.ejs +11 -0
  201. package/dist/generators/spring-boot/templates/src/main/java/_package_/_entityPackage_/service/_entityClass_QueryService.java.ejs +12 -23
  202. package/dist/generators/spring-boot/templates/src/main/java/_package_/config/SecurityJwtConfiguration.java.ejs +0 -1
  203. package/dist/generators/spring-boot/templates/src/main/java/_package_/security/DomainUserDetailsService.java.ejs +61 -5
  204. package/dist/generators/spring-boot/templates/src/main/java/_package_/security/SecurityUtils.java.ejs +29 -1
  205. package/dist/generators/spring-boot/templates/src/main/java/_package_/web/rest/AccountResource.java.ejs +7 -6
  206. package/dist/generators/spring-boot/templates/src/main/java/_package_/web/rest/AccountResource_oauth2.java.ejs +8 -6
  207. package/dist/generators/spring-boot/templates/src/main/java/_package_/web/rest/AccountResource_skipUserManagement.java.ejs +8 -6
  208. package/dist/generators/spring-boot/templates/src/main/java/_package_/web/rest/AuthenticateController.java.ejs +17 -11
  209. package/dist/generators/spring-boot/templates/src/main/java/_package_/web/rest/errors/ExceptionTranslator.java.ejs +8 -3
  210. package/dist/generators/spring-boot/templates/src/main/resources/config/application.yml.ejs +3 -0
  211. package/dist/generators/spring-boot/templates/src/test/java/_package_/_entityPackage_/service/UserServiceIT.java.ejs +3 -3
  212. package/dist/generators/spring-boot/templates/src/test/java/_package_/_entityPackage_/web/rest/PublicUserResourceIT.java.ejs +4 -4
  213. package/dist/generators/spring-boot/templates/src/test/java/_package_/_entityPackage_/web/rest/UserResourceIT.java.ejs +4 -4
  214. package/dist/generators/spring-boot/templates/src/test/java/_package_/_entityPackage_/web/rest/_entityClass_ResourceIT.java.ejs +3 -3
  215. package/dist/generators/spring-boot/templates/src/test/java/_package_/config/JHipsterBlockHoundIntegration.java.ejs +0 -2
  216. package/dist/generators/spring-boot/templates/src/test/java/_package_/config/WebConfigurerTest.java.ejs +1 -1
  217. package/dist/generators/spring-boot/templates/src/test/java/_package_/management/SecurityMetersServiceTests.java.ejs +1 -1
  218. package/dist/generators/spring-boot/templates/src/test/java/_package_/security/DomainUserDetailsServiceIT.java.ejs +2 -2
  219. package/dist/generators/spring-boot/templates/src/test/java/_package_/security/SecurityUtilsUnitTest_imperative.java.ejs +35 -11
  220. package/dist/generators/spring-boot/templates/src/test/java/_package_/security/SecurityUtilsUnitTest_reactive.java.ejs +35 -6
  221. package/dist/generators/spring-boot/templates/src/test/java/_package_/security/jwt/JwtAuthenticationTestUtils.java.ejs +3 -2
  222. package/dist/generators/spring-boot/templates/src/test/java/_package_/security/jwt/TestAuthenticationResource.java.ejs +5 -5
  223. package/dist/generators/spring-boot/templates/src/test/java/_package_/security/jwt/TokenAuthenticationIT.java.ejs +2 -2
  224. package/dist/generators/spring-boot/templates/src/test/java/_package_/security/jwt/TokenAuthenticationSecurityMetersIT.java.ejs +1 -4
  225. package/dist/generators/spring-boot/templates/src/test/java/_package_/security/oauth2/CustomClaimConverterIT.java.ejs +1 -1
  226. package/dist/generators/spring-boot/templates/src/test/java/_package_/service/MailServiceIT.java.ejs +1 -1
  227. package/dist/generators/spring-boot/templates/src/test/java/_package_/service/mapper/UserMapperTest.java.ejs +1 -1
  228. package/dist/generators/spring-boot/templates/src/test/java/_package_/web/filter/SpaWebFilterIT_imperative.java.ejs +1 -1
  229. package/dist/generators/spring-boot/templates/src/test/java/_package_/web/filter/SpaWebFilterIT_reactive.java.ejs +1 -2
  230. package/dist/generators/spring-boot/templates/src/test/java/_package_/web/rest/AccountResourceIT.java.ejs +9 -15
  231. package/dist/generators/spring-boot/templates/src/test/java/_package_/web/rest/AccountResourceIT_oauth2.java.ejs +8 -17
  232. package/dist/generators/spring-boot/templates/src/test/java/_package_/web/rest/AccountResourceIT_skipUserManagement.java.ejs +6 -15
  233. package/dist/generators/spring-boot/templates/src/test/java/_package_/web/rest/LogoutResourceIT.java.ejs +1 -1
  234. package/dist/generators/spring-boot/templates/src/test/java/_package_/web/rest/errors/ExceptionTranslatorIT_reactive.java.ejs +1 -1
  235. package/dist/generators/spring-cache/cleanup.d.ts +2 -20
  236. package/dist/generators/spring-cache/cleanup.js +24 -2
  237. package/dist/generators/spring-cache/files.js +0 -6
  238. package/dist/generators/spring-cache/generator.d.ts +5 -1
  239. package/dist/generators/spring-cache/resources/gradle/libs.versions.toml +1 -1
  240. package/dist/generators/spring-cache/templates/src/main/java/_package_/config/CacheConfiguration.java.ejs +0 -14
  241. package/dist/generators/spring-cloud/generators/gateway/generator.d.ts +5 -1
  242. package/dist/generators/spring-cloud-stream/generator.d.ts +2 -1
  243. package/dist/generators/spring-cloud-stream/generators/kafka/generator.d.ts +2 -1
  244. package/dist/generators/spring-cloud-stream/generators/kafka/templates/src/test/java/_package_/web/rest/KafkaResourceIT_reactive.java.ejs +1 -1
  245. package/dist/generators/spring-cloud-stream/generators/pulsar/generator.d.ts +2 -1
  246. package/dist/generators/spring-data-cassandra/generator.d.ts +4 -1
  247. package/dist/generators/spring-data-couchbase/generator.d.ts +9 -1
  248. package/dist/generators/spring-data-elasticsearch/generator.d.ts +10 -1
  249. package/dist/generators/spring-data-mongodb/generator.d.ts +9 -1
  250. package/dist/generators/spring-data-neo4j/generator.d.ts +11 -1
  251. package/dist/generators/spring-data-relational/generator.d.ts +11 -1
  252. package/dist/generators/spring-data-relational/templates/src/test/java/_package_/config/timezone/HibernateTimeZoneIT.java.ejs +2 -2
  253. package/dist/generators/spring-websocket/generator.d.ts +2 -1
  254. package/dist/generators/upgrade/generator.d.ts +3 -1
  255. package/dist/generators/vue/cleanup.js +7 -1
  256. package/dist/generators/vue/files-vue.js +3 -8
  257. package/dist/generators/vue/generator.d.ts +9 -1
  258. package/dist/generators/vue/resources/package.json +31 -31
  259. package/dist/generators/vue/templates/src/main/webapp/app/account/account.service.ts.ejs +9 -9
  260. package/dist/generators/vue/templates/src/main/webapp/app/account/activate/activate.component.spec.ts.ejs +21 -7
  261. package/dist/generators/vue/templates/src/main/webapp/app/account/activate/activate.component.ts.ejs +23 -9
  262. package/dist/generators/vue/templates/src/main/webapp/app/account/activate/activate.service.ts.ejs +1 -1
  263. package/dist/generators/vue/templates/src/main/webapp/app/account/activate/activate.vue.ejs +1 -1
  264. package/dist/generators/vue/templates/src/main/webapp/app/account/change-password/change-password.vue.ejs +1 -1
  265. package/dist/generators/vue/templates/src/main/webapp/app/account/login-form/login-form.component.spec.ts.ejs +22 -10
  266. package/dist/generators/vue/templates/src/main/webapp/app/account/login-form/login-form.component.ts.ejs +24 -5
  267. package/dist/generators/vue/templates/src/main/webapp/app/account/login-modal.ts.ejs +38 -0
  268. package/dist/generators/vue/templates/src/main/webapp/app/account/login.service.spec.ts.ejs +0 -4
  269. package/dist/generators/vue/templates/src/main/webapp/app/account/login.service.ts.ejs +3 -25
  270. package/dist/generators/vue/templates/src/main/webapp/app/account/register/register.component.spec.ts.ejs +24 -8
  271. package/dist/generators/vue/templates/src/main/webapp/app/account/register/register.component.ts.ejs +23 -9
  272. package/dist/generators/vue/templates/src/main/webapp/app/account/register/register.service.ts.ejs +1 -1
  273. package/dist/generators/vue/templates/src/main/webapp/app/account/register/register.vue.ejs +1 -1
  274. package/dist/generators/vue/templates/src/main/webapp/app/account/reset-password/finish/reset-password-finish.component.spec.ts.ejs +20 -4
  275. package/dist/generators/vue/templates/src/main/webapp/app/account/reset-password/finish/reset-password-finish.component.ts.ejs +23 -13
  276. package/dist/generators/vue/templates/src/main/webapp/app/account/reset-password/finish/reset-password-finish.vue.ejs +1 -1
  277. package/dist/generators/vue/templates/src/main/webapp/app/account/settings/settings.vue.ejs +1 -1
  278. package/dist/generators/vue/templates/src/main/webapp/app/admin/configuration/configuration.service.ts.ejs +2 -2
  279. package/dist/generators/vue/templates/src/main/webapp/app/admin/gateway/gateway.service.ts.ejs +1 -1
  280. package/dist/generators/vue/templates/src/main/webapp/app/admin/health/health.service.ts.ejs +10 -10
  281. package/dist/generators/vue/templates/src/main/webapp/app/admin/logs/logs.service.ts.ejs +2 -2
  282. package/dist/generators/vue/templates/src/main/webapp/app/admin/metrics/metrics-modal.vue.ejs +2 -2
  283. package/dist/generators/vue/templates/src/main/webapp/app/admin/metrics/metrics.service.ts.ejs +2 -2
  284. package/dist/generators/vue/templates/src/main/webapp/app/admin/tracker/tracker.service.ts.ejs +5 -5
  285. package/dist/generators/vue/templates/src/main/webapp/app/admin/user-management/user-management.service.ts.ejs +6 -6
  286. package/dist/generators/vue/templates/src/main/webapp/app/app.component.ts.ejs +29 -7
  287. package/dist/generators/vue/templates/src/main/webapp/app/app.vue.ejs +19 -1
  288. package/dist/generators/vue/templates/src/main/webapp/app/core/error/error.component.spec.ts.ejs +66 -51
  289. package/dist/generators/vue/templates/src/main/webapp/app/core/error/error.component.ts.ejs +30 -8
  290. package/dist/generators/vue/templates/src/main/webapp/app/core/home/home.component.spec.ts.ejs +41 -11
  291. package/dist/generators/vue/templates/src/main/webapp/app/core/home/home.component.ts.ejs +10 -11
  292. package/dist/generators/vue/templates/src/main/webapp/app/core/home/home.vue.ejs +2 -2
  293. package/dist/generators/vue/templates/src/main/webapp/app/core/jhi-navbar/jhi-navbar.component.spec.ts.ejs +43 -16
  294. package/dist/generators/vue/templates/src/main/webapp/app/core/jhi-navbar/jhi-navbar.component.ts.ejs +14 -9
  295. package/dist/generators/vue/templates/src/main/webapp/app/core/jhi-navbar/jhi-navbar.vue.ejs +1 -1
  296. package/dist/generators/vue/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_.service.ts.ejs +7 -7
  297. package/dist/generators/vue/templates/src/main/webapp/app/entities/user/user.service.ts.ejs +1 -1
  298. package/dist/generators/vue/templates/src/main/webapp/app/locale/translation.service.ts.ejs +5 -5
  299. package/dist/generators/vue/templates/src/main/webapp/app/main.ts.ejs +18 -14
  300. package/dist/generators/vue/templates/src/main/webapp/app/shared/alert/alert.service.ts.ejs +4 -4
  301. package/dist/generators/workspaces/generator.d.ts +7 -1
  302. package/dist/generators/workspaces/support/applications-lookup.js +2 -2
  303. package/dist/lib/jdl/converters/parsed-jdl-to-jdl-object/parsed-jdl-to-jdl-object-converter.js +1 -1
  304. package/dist/lib/jdl/core/built-in-options/binary-options.d.ts +12 -1
  305. package/dist/lib/testing/apply-patch-to-template.d.ts +13 -0
  306. package/dist/lib/testing/apply-patch-to-template.js +90 -0
  307. package/dist/lib/testing/github.js +6 -3
  308. package/dist/lib/testing/helpers.d.ts +1 -0
  309. package/dist/lib/testing/helpers.js +15 -0
  310. package/dist/lib/utils/yo-rc.d.ts +3 -219
  311. package/package.json +36 -37
  312. package/dist/generators/spring-cache/templates/src/main/java/_package_/config/CacheFactoryConfiguration.java.ejs +0 -49
@@ -7,27 +7,27 @@ import { type IUser } from '@/shared/model/user.model';
7
7
 
8
8
  export default class UserManagementService {
9
9
 
10
- public get(userId: string): Promise<any> {
10
+ get(userId: string): Promise<any> {
11
11
  return axios.get(`api/admin/users/${userId}`);
12
12
  }
13
13
 
14
- public create(user: IUser): Promise<any> {
14
+ create(user: IUser): Promise<any> {
15
15
  return axios.post('api/admin/users', user);
16
16
  }
17
17
 
18
- public update(user: IUser): Promise<any> {
18
+ update(user: IUser): Promise<any> {
19
19
  return axios.put('api/admin/users', user);
20
20
  }
21
21
 
22
- public remove(userId: <%- user.primaryKey.tsType %>): Promise<any> {
22
+ remove(userId: <%- user.primaryKey.tsType %>): Promise<any> {
23
23
  return axios.delete(`api/admin/users/${userId}`);
24
24
  }
25
25
 
26
- public retrieve(<%_ if (!databaseTypeCassandra) { _%>req?: any <%_ } _%>): Promise<any> {
26
+ retrieve(<%_ if (!databaseTypeCassandra) { _%>req?: any <%_ } _%>): Promise<any> {
27
27
  return axios.get(`api/admin/users<%_ if (!databaseTypeCassandra) { _%>?${buildPaginationQueryOpts(req)}<%_ } _%>`);
28
28
  }
29
29
 
30
- public retrieveAuthorities(): Promise<any> {
30
+ retrieveAuthorities(): Promise<any> {
31
31
  <%_ if (!databaseTypeCassandra) { _%>
32
32
  return axios.get('api/authorities').then(response => {
33
33
  response.data = response.data.map(authority => authority.name);
@@ -1,15 +1,33 @@
1
+ <%#
2
+ Copyright 2013-2025 the original author or authors from the JHipster project.
3
+
4
+ This file is part of the JHipster project, see https://www.jhipster.tech/
5
+ for more information.
6
+
7
+ Licensed under the Apache License, Version 2.0 (the "License");
8
+ you may not use this file except in compliance with the License.
9
+ You may obtain a copy of the License at
10
+
11
+ https://www.apache.org/licenses/LICENSE-2.0
12
+
13
+ Unless required by applicable law or agreed to in writing, software
14
+ distributed under the License is distributed on an "AS IS" BASIS,
15
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ See the License for the specific language governing permissions and
17
+ limitations under the License.
18
+ -%>
1
19
  import { defineComponent, provide } from 'vue';
2
- <%_ if (enableTranslation) { _%>
3
20
  import { useI18n } from 'vue-i18n';
21
+ import { storeToRefs } from 'pinia';
22
+
23
+ <%_ if (!authenticationTypeOauth2) { _%>
24
+ import { useLoginModal } from '@/account/login-modal';
25
+ import LoginForm from '@/account/login-form/login-form.vue';
4
26
  <%_ } _%>
5
27
  import Ribbon from '@/core/ribbon/ribbon.vue';
6
28
  import JhiFooter from '@/core/jhi-footer/jhi-footer.vue';
7
29
  import JhiNavbar from '@/core/jhi-navbar/jhi-navbar.vue';
8
- <%_ if (!authenticationTypeOauth2) { _%>
9
- import LoginForm from '@/account/login-form/login-form.vue';
10
- <%_ } %>
11
30
  import { useAlertService } from '@/shared/alert/alert.service';
12
-
13
31
  import '@/shared/config/dayjs';
14
32
 
15
33
  export default defineComponent({
@@ -25,11 +43,15 @@ export default defineComponent({
25
43
  },
26
44
  setup() {
27
45
  provide('alertService', useAlertService());
46
+ <%_ if (!authenticationTypeOauth2) { _%>
47
+ const { loginModalOpen } = storeToRefs(useLoginModal());
48
+ <%_ } _%>
28
49
 
29
50
  return {
30
- <%_ if (enableTranslation) { _%>
31
- t$: useI18n().t,
51
+ <%_ if (!authenticationTypeOauth2) { _%>
52
+ loginModalOpen,
32
53
  <%_ } _%>
54
+ t$: useI18n().t,
33
55
  };
34
56
  },
35
57
  });
@@ -1,3 +1,21 @@
1
+ <%#
2
+ Copyright 2013-2025 the original author or authors from the JHipster project.
3
+
4
+ This file is part of the JHipster project, see https://www.jhipster.tech/
5
+ for more information.
6
+
7
+ Licensed under the Apache License, Version 2.0 (the "License");
8
+ you may not use this file except in compliance with the License.
9
+ You may obtain a copy of the License at
10
+
11
+ https://www.apache.org/licenses/LICENSE-2.0
12
+
13
+ Unless required by applicable law or agreed to in writing, software
14
+ distributed under the License is distributed on an "AS IS" BASIS,
15
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ See the License for the specific language governing permissions and
17
+ limitations under the License.
18
+ -%>
1
19
  <template>
2
20
  <div id="app">
3
21
  <ribbon></ribbon>
@@ -9,7 +27,7 @@
9
27
  <router-view></router-view>
10
28
  </div>
11
29
  <%_ if (!authenticationTypeOauth2) { _%>
12
- <b-modal id="login-page" hide-footer lazy>
30
+ <b-modal id="login-page" v-model="loginModalOpen" hide-footer lazy>
13
31
  <template #modal-title>
14
32
  <span data-cy="loginTitle" id="login-title" v-text="t$('login.title')">Sign in</span>
15
33
  </template>
@@ -1,11 +1,32 @@
1
+ <%#
2
+ Copyright 2013-2025 the original author or authors from the JHipster project.
3
+
4
+ This file is part of the JHipster project, see https://www.jhipster.tech/
5
+ for more information.
6
+
7
+ Licensed under the Apache License, Version 2.0 (the "License");
8
+ you may not use this file except in compliance with the License.
9
+ You may obtain a copy of the License at
10
+
11
+ https://www.apache.org/licenses/LICENSE-2.0
12
+
13
+ Unless required by applicable law or agreed to in writing, software
14
+ distributed under the License is distributed on an "AS IS" BASIS,
15
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ See the License for the specific language governing permissions and
17
+ limitations under the License.
18
+ -%>
1
19
  import { vitest } from 'vitest';
2
20
  import { type Ref, ref } from 'vue';
3
- import { shallowMount } from '@vue/test-utils';
21
+ import { shallowMount, type ComponentMountingOptions } from '@vue/test-utils';
4
22
  import { type RouteLocation } from 'vue-router';
23
+ import { createTestingPinia } from '@pinia/testing';
5
24
 
6
- import Error from './error.vue';
25
+ <%_ if (generateUserManagement) { _%>
26
+ import { useLoginModal } from '@/account/login-modal';
7
27
 
8
- import <% if (authenticationTypeOauth2) { %>type <% } %>LoginService from '@/account/login.service';
28
+ <%_ } _%>
29
+ import Error from './error.vue';
9
30
 
10
31
  type ErrorComponentType = InstanceType<typeof Error>;
11
32
 
@@ -19,22 +40,32 @@ const customErrorMsg = 'An error occurred.';
19
40
 
20
41
  describe('Error component', () => {
21
42
  let error: ErrorComponentType;
43
+ <%_ if (authenticationTypeOauth2) { _%>
22
44
  let loginService: LoginService;
45
+ <%_ } _%>
46
+ <%_ if (generateUserManagement) { _%>
47
+ let login: ReturnType<typeof useLoginModal>;
48
+ <%_ } _%>
23
49
  let authenticated: Ref<boolean>;
50
+ let mountOptions: ComponentMountingOptions<ErrorComponentType>;
24
51
 
25
52
  beforeEach(() => {
26
53
  route = {};
27
54
  authenticated = ref(false);
28
- <%_ if (authenticationTypeJwt) { _%>
29
- loginService = new LoginService({ emit: vitest.fn() });
30
- vitest.spyOn(loginService, 'openLogin');
31
- <%_ } else if (authenticationTypeSession) { _%>
32
- loginService = new LoginService({ emit: vitest.fn() });
33
- vitest.spyOn(loginService, 'openLogin');
34
- vitest.spyOn(loginService, 'logout');
35
- <%_ } else if (authenticationTypeOauth2) { _%>
55
+ <%_ if (authenticationTypeOauth2) { _%>
36
56
  loginService = { login: vitest.fn(), logout: vitest.fn() };
37
57
  <%_ } _%>
58
+ mountOptions = {
59
+ global: {
60
+ plugins: [createTestingPinia()],
61
+ provide: {
62
+ <%_ if (authenticationTypeOauth2) { _%>
63
+ loginService,
64
+ <%_ } _%>
65
+ authenticated,
66
+ },
67
+ },
68
+ };
38
69
  });
39
70
 
40
71
  it('should have retrieve custom error on routing', () => {
@@ -43,21 +74,17 @@ describe('Error component', () => {
43
74
  name: 'CustomMessage',
44
75
  meta: { errorMessage: customErrorMsg },
45
76
  };
46
- const wrapper = shallowMount(Error, {
47
- global: {
48
- provide: {
49
- loginService,
50
- authenticated,
51
- },
52
- },
53
- });
77
+ const wrapper = shallowMount(Error, mountOptions);
54
78
  error = wrapper.vm;
79
+ <%_ if (generateUserManagement) { _%>
80
+ login = useLoginModal();
81
+ <%_ } _%>
55
82
 
56
83
  expect(error.errorMessage).toBe(customErrorMsg);
57
84
  expect(error.error403).toBeFalsy();
58
85
  expect(error.error404).toBeFalsy();
59
- <%_ if (!authenticationTypeOauth2) { _%>
60
- expect(loginService.openLogin).toHaveBeenCalledTimes(0);
86
+ <%_ if (generateUserManagement) { _%>
87
+ expect(login.showLogin).not.toHaveBeenCalled();
61
88
  <%_ } else { _%>
62
89
  expect(loginService.login).toHaveBeenCalledTimes(0);
63
90
  <%_ } _%>
@@ -67,21 +94,17 @@ describe('Error component', () => {
67
94
  route = {
68
95
  meta: { error403: true },
69
96
  };
70
- const wrapper = shallowMount(Error, {
71
- global: {
72
- provide: {
73
- loginService,
74
- authenticated,
75
- },
76
- },
77
- });
97
+ const wrapper = shallowMount(Error, mountOptions);
78
98
  error = wrapper.vm;
99
+ <%_ if (generateUserManagement) { _%>
100
+ login = useLoginModal();
101
+ <%_ } _%>
79
102
 
80
103
  expect(error.errorMessage).toBeNull();
81
104
  expect(error.error403).toBeTruthy();
82
105
  expect(error.error404).toBeFalsy();
83
- <%_ if (!authenticationTypeOauth2) { _%>
84
- expect(loginService.openLogin).toHaveBeenCalled();
106
+ <%_ if (generateUserManagement) { _%>
107
+ expect(login.showLogin).toHaveBeenCalled();
85
108
  <%_ } else { _%>
86
109
  expect(loginService.login).toHaveBeenCalled();
87
110
  <%_ } _%>
@@ -91,42 +114,34 @@ describe('Error component', () => {
91
114
  route = {
92
115
  meta: { error404: true },
93
116
  };
94
- const wrapper = shallowMount(Error, {
95
- global: {
96
- provide: {
97
- loginService,
98
- authenticated,
99
- },
100
- },
101
- });
117
+ const wrapper = shallowMount(Error, mountOptions);
102
118
  error = wrapper.vm;
119
+ <%_ if (generateUserManagement) { _%>
120
+ login = useLoginModal();
121
+ <%_ } _%>
103
122
 
104
123
  expect(error.errorMessage).toBeNull();
105
124
  expect(error.error403).toBeFalsy();
106
125
  expect(error.error404).toBeTruthy();
107
- <%_ if (!authenticationTypeOauth2) { _%>
108
- expect(loginService.openLogin).toHaveBeenCalledTimes(0);
126
+ <%_ if (generateUserManagement) { _%>
127
+ expect(login.showLogin).not.toHaveBeenCalled();
109
128
  <%_ } else { _%>
110
129
  expect(loginService.login).toHaveBeenCalledTimes(0);
111
130
  <%_ } _%>
112
131
  });
113
132
 
114
133
  it('should have set default on no error', () => {
115
- const wrapper = shallowMount(Error, {
116
- global: {
117
- provide: {
118
- loginService,
119
- authenticated,
120
- },
121
- },
122
- });
134
+ const wrapper = shallowMount(Error, mountOptions);
123
135
  error = wrapper.vm;
136
+ <%_ if (generateUserManagement) { _%>
137
+ login = useLoginModal();
138
+ <%_ } _%>
124
139
 
125
140
  expect(error.errorMessage).toBeNull();
126
141
  expect(error.error403).toBeFalsy();
127
142
  expect(error.error404).toBeFalsy();
128
- <%_ if (!authenticationTypeOauth2) { _%>
129
- expect(loginService.openLogin).toHaveBeenCalledTimes(0);
143
+ <%_ if (generateUserManagement) { _%>
144
+ expect(login.showLogin).not.toHaveBeenCalled();
130
145
  <%_ } else { _%>
131
146
  expect(loginService.login).toHaveBeenCalledTimes(0);
132
147
  <%_ } _%>
@@ -1,15 +1,41 @@
1
- import { type ComputedRef, defineComponent, inject, type Ref, ref } from 'vue';
1
+ <%#
2
+ Copyright 2013-2025 the original author or authors from the JHipster project.
3
+
4
+ This file is part of the JHipster project, see https://www.jhipster.tech/
5
+ for more information.
6
+
7
+ Licensed under the Apache License, Version 2.0 (the "License");
8
+ you may not use this file except in compliance with the License.
9
+ You may obtain a copy of the License at
10
+
11
+ https://www.apache.org/licenses/LICENSE-2.0
12
+
13
+ Unless required by applicable law or agreed to in writing, software
14
+ distributed under the License is distributed on an "AS IS" BASIS,
15
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ See the License for the specific language governing permissions and
17
+ limitations under the License.
18
+ -%>
19
+ import { type ComputedRef, type Ref, defineComponent, inject, ref } from 'vue';
2
20
  <%_ if (enableTranslation) { _%>
3
21
  import { useI18n } from 'vue-i18n';
4
22
  <%_ } _%>
5
- import type LoginService from '@/account/login.service';
6
23
  import { useRoute } from 'vue-router';
24
+ <%_ if (authenticationTypeOauth2) { _%>
25
+ import type LoginService from '@/account/login.service';
26
+ <%_ } else { _%>
27
+ import { useLoginModal } from '@/account/login-modal';
28
+ <%_ } _%>
7
29
 
8
30
  export default defineComponent({
9
31
  compatConfig: { MODE: 3 },
10
32
  name: 'Error',
11
33
  setup() {
12
- const loginService = inject<LoginService>('loginService');
34
+ <%_ if (authenticationTypeOauth2) { _%>
35
+ const { login } = inject<LoginService>('loginService');
36
+ <%_ } else { _%>
37
+ const { showLogin } = useLoginModal();
38
+ <%_ } _%>
13
39
  const authenticated = inject<ComputedRef<boolean>>('authenticated');
14
40
  const errorMessage: Ref<string> = ref(null);
15
41
  const error403: Ref<boolean> = ref(false);
@@ -21,11 +47,7 @@ export default defineComponent({
21
47
  error403.value = route.meta.error403 ?? false;
22
48
  error404.value = route.meta.error404 ?? false;
23
49
  if (!authenticated.value && error403.value) {
24
- <%_ if (!authenticationTypeOauth2) { _%>
25
- loginService.openLogin();
26
- <%_ } else { %>
27
- loginService.login();
28
- <%_ } %>
50
+ <% if (authenticationTypeOauth2) { %>login<% } else { %>showLogin<% } %>();
29
51
  }
30
52
  }
31
53
 
@@ -1,6 +1,28 @@
1
- import { vitest } from 'vitest';
1
+ <%#
2
+ Copyright 2013-2025 the original author or authors from the JHipster project.
3
+
4
+ This file is part of the JHipster project, see https://www.jhipster.tech/
5
+ for more information.
6
+
7
+ Licensed under the Apache License, Version 2.0 (the "License");
8
+ you may not use this file except in compliance with the License.
9
+ You may obtain a copy of the License at
10
+
11
+ https://www.apache.org/licenses/LICENSE-2.0
12
+
13
+ Unless required by applicable law or agreed to in writing, software
14
+ distributed under the License is distributed on an "AS IS" BASIS,
15
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ See the License for the specific language governing permissions and
17
+ limitations under the License.
18
+ -%>
19
+ import { beforeEach, describe, expect, it } from 'vitest';
2
20
  import { ref } from 'vue';
3
21
  import { shallowMount } from '@vue/test-utils';
22
+ <%_ if (!authenticationTypeOauth2) { _%>
23
+ import { createTestingPinia } from '@pinia/testing';
24
+ import { useLoginModal } from '@/account/login-modal';
25
+ <%_ } _%>
4
26
  import Home from './home.vue';
5
27
 
6
28
  type HomeComponentType = InstanceType<typeof Home>;
@@ -9,30 +31,37 @@ describe('Home', () => {
9
31
  let home: HomeComponentType;
10
32
  let authenticated;
11
33
  let currentUsername;
12
- <%_ if (authenticationTypeJwt) { _%>
13
- const loginService = { openLogin: vitest.fn() };
14
- <%_ } else if (authenticationTypeSession) { _%>
15
- const loginService = { openLogin: vitest.fn(), logout: vitest.fn() };
16
- <%_ } else if (authenticationTypeOauth2) { _%>
17
- const loginService = { login: vitest.fn(), logout: vitest.fn() };
34
+ <%_ if (!authenticationTypeOauth2) { _%>
35
+ let login: ReturnType<typeof useLoginModal>;
18
36
  <%_ } _%>
19
37
 
38
+ <%_ if (authenticationTypeOauth2) { _%>
39
+ const loginService = { login: vitest.fn(), logout: vitest.fn() };
40
+ <%_ } _%>
20
41
  beforeEach(() => {
21
42
  authenticated = ref(false);
22
43
  currentUsername = ref('');
23
44
  const wrapper = shallowMount(Home, {
24
45
  global: {
46
+ <%_ if (!authenticationTypeOauth2) { _%>
47
+ plugins: [createTestingPinia()],
48
+ <%_ } _%>
25
49
  stubs: {
26
50
  'router-link': true,
27
51
  },
28
52
  provide: {
53
+ <%_ if (authenticationTypeOauth2) { _%>
29
54
  loginService,
55
+ <%_ } _%>
30
56
  authenticated,
31
57
  currentUsername,
32
58
  },
33
59
  },
34
60
  });
35
61
  home = wrapper.vm;
62
+ <%_ if (!authenticationTypeOauth2) { _%>
63
+ login = useLoginModal();
64
+ <%_ } _%>
36
65
  });
37
66
 
38
67
  it('should not have user data set', () => {
@@ -49,12 +78,13 @@ describe('Home', () => {
49
78
  });
50
79
 
51
80
  it('should use login service', () => {
52
- home.openLogin();
53
81
 
54
- <%_ if (!authenticationTypeOauth2) { _%>
55
- expect(loginService.openLogin).toHaveBeenCalled();
56
- <%_ } else { %>
82
+ <%_ if (authenticationTypeOauth2) { _%>
83
+ home.login();
57
84
  expect(loginService.login).toHaveBeenCalled();
85
+ <%_ } else { %>
86
+ home.showLogin();
87
+ expect(login.showLogin).toHaveBeenCalled();
58
88
  <%_ } %>
59
89
  });
60
90
  });
@@ -3,28 +3,27 @@ import { type ComputedRef, defineComponent, inject } from 'vue';
3
3
  import { useI18n } from 'vue-i18n';
4
4
  <%_ } _%>
5
5
 
6
+ <%_ if (authenticationTypeOauth2) { _%>
6
7
  import type LoginService from '@/account/login.service';
8
+ <%_ } else { _%>
9
+ import { useLoginModal } from '@/account/login-modal';
10
+ <%_ } _%>
7
11
 
8
12
  export default defineComponent({
9
13
  compatConfig: { MODE: 3 },
10
14
  setup() {
11
- const loginService = inject<LoginService>('loginService');
12
-
15
+ <%_ if (authenticationTypeOauth2) { _%>
16
+ const { login } = inject<LoginService>('loginService');
17
+ <%_ } else { _%>
18
+ const { showLogin } = useLoginModal();
19
+ <%_ } _%>
13
20
  const authenticated = inject<ComputedRef<boolean>>('authenticated');
14
21
  const username = inject<ComputedRef<string>>('currentUsername');
15
22
 
16
- const openLogin = () => {
17
- <%_ if (!authenticationTypeOauth2) { _%>
18
- loginService.openLogin();
19
- <%_ } else { %>
20
- loginService.login();
21
- <%_ } _%>
22
- };
23
-
24
23
  return {
25
24
  authenticated,
26
25
  username,
27
- openLogin,
26
+ <% if (authenticationTypeOauth2) { %>login<% } else { %>showLogin<% } %>,
28
27
  <%_ if (enableTranslation) { _%>
29
28
  t$: useI18n().t,
30
29
  <%_ } _%>
@@ -9,12 +9,12 @@
9
9
 
10
10
  <div>
11
11
  <div class="alert alert-success" v-if="authenticated">
12
- <span v-if="username" v-text="t$('home.logged.message', { username: username })">You are logged in as user "{{ username }}"</span>
12
+ <span v-if="username" v-text="t$('home.logged.message', { username })">You are logged in as user "{{ username }}"</span>
13
13
  </div>
14
14
 
15
15
  <div class="alert alert-warning" v-if="!authenticated">
16
16
  <span v-text="t$('global.messages.info.authenticated.prefix')">If you want to </span>
17
- <a class="alert-link" @click="openLogin()" v-text="t$('global.messages.info.authenticated.link')">sign in</a
17
+ <a class="alert-link" @click="<% if (authenticationTypeOauth2) { %>login<% } else { %>showLogin<% } %>()" v-text="t$('global.messages.info.authenticated.link')">sign in</a
18
18
  ><span v-html="t$('global.messages.info.authenticated.suffix')"
19
19
  >, you can try the default accounts:<br />- Administrator (login="admin" and password="admin") <br />- User (login="user" and
20
20
  password="user").</span
@@ -1,14 +1,36 @@
1
+ <%#
2
+ Copyright 2013-2025 the original author or authors from the JHipster project.
3
+
4
+ This file is part of the JHipster project, see https://www.jhipster.tech/
5
+ for more information.
6
+
7
+ Licensed under the Apache License, Version 2.0 (the "License");
8
+ you may not use this file except in compliance with the License.
9
+ You may obtain a copy of the License at
10
+
11
+ https://www.apache.org/licenses/LICENSE-2.0
12
+
13
+ Unless required by applicable law or agreed to in writing, software
14
+ distributed under the License is distributed on an "AS IS" BASIS,
15
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ See the License for the specific language governing permissions and
17
+ limitations under the License.
18
+ -%>
1
19
  import { vitest } from 'vitest';
2
20
  import { computed } from 'vue';
3
21
  import { shallowMount } from '@vue/test-utils';
4
- import JhiNavbar from './jhi-navbar.vue';
5
22
  import { type Router } from 'vue-router';
6
23
  import { createTestingPinia } from '@pinia/testing';
7
24
 
8
25
  import { useStore } from '@/store';
9
26
  import { createRouter } from '@/router';
10
- import <% if (authenticationTypeOauth2) { %>type <% } %>LoginService from '@/account/login.service';
11
-
27
+ <%_ if (authenticationUsesCsrf) { _%>
28
+ import type LoginService from '@/account/login.service';
29
+ <%_ } _%>
30
+ <%_ if (generateUserManagement) { _%>
31
+ import { useLoginModal } from '@/account/login-modal';
32
+ <%_ } _%>
33
+ import JhiNavbar from './jhi-navbar.vue';
12
34
  <%_ if (applicationTypeGateway && microfrontend) { _%>
13
35
 
14
36
  vitest.mock('@module-federation/enhanced/runtime', () => ({
@@ -23,7 +45,12 @@ const store = useStore();
23
45
 
24
46
  describe('JhiNavbar', () => {
25
47
  let jhiNavbar: JhiNavbarComponentType;
48
+ <%_ if (authenticationUsesCsrf) { _%>
26
49
  let loginService: LoginService;
50
+ <%_ } _%>
51
+ <%_ if (generateUserManagement) { _%>
52
+ let login: ReturnType<typeof useLoginModal>;
53
+ <%_ } _%>
27
54
  const accountService = { hasAnyAuthorityAndCheckAuth: vitest.fn().mockImplementation(() => Promise.resolve(true)) };
28
55
  <%_ if (enableTranslation) { _%>
29
56
  const changeLanguage = vitest.fn();
@@ -32,14 +59,7 @@ describe('JhiNavbar', () => {
32
59
 
33
60
  beforeEach(() => {
34
61
  router = createRouter();
35
- <%_ if (authenticationTypeJwt) { _%>
36
- loginService = new LoginService({ emit: vitest.fn() });
37
- vitest.spyOn(loginService, 'openLogin');
38
- <%_ } else if (authenticationTypeSession) { _%>
39
- loginService = new LoginService({ emit: vitest.fn() });
40
- vitest.spyOn(loginService, 'openLogin');
41
- vitest.spyOn(loginService, 'logout');
42
- <%_ } else if (authenticationTypeOauth2) { _%>
62
+ <%_ if (authenticationUsesCsrf) { _%>
43
63
  loginService = { login: vitest.fn(), logout: vitest.fn() };
44
64
  <%_ } _%>
45
65
  const wrapper = shallowMount(JhiNavbar, {
@@ -57,7 +77,9 @@ describe('JhiNavbar', () => {
57
77
  'b-navbar-brand': true,
58
78
  },
59
79
  provide: {
80
+ <%_ if (authenticationUsesCsrf) { _%>
60
81
  loginService,
82
+ <%_ } _%>
61
83
  currentLanguage: computed(() => 'foo'),
62
84
  <%_ if (enableTranslation) { _%>
63
85
  changeLanguage,
@@ -67,6 +89,9 @@ describe('JhiNavbar', () => {
67
89
  },
68
90
  });
69
91
  jhiNavbar = wrapper.vm;
92
+ <%_ if (generateUserManagement) { _%>
93
+ login = useLoginModal();
94
+ <%_ } _%>
70
95
  });
71
96
 
72
97
  it('should not have user data set', () => {
@@ -89,11 +114,12 @@ describe('JhiNavbar', () => {
89
114
  });
90
115
 
91
116
  it('should use login service', () => {
92
- jhiNavbar.openLogin();
93
- <%_ if (!authenticationTypeOauth2) { _%>
94
- expect(loginService.openLogin).toHaveBeenCalled();
95
- <%_ } else { _%>
117
+ jhiNavbar.<% if (authenticationTypeOauth2) { %>login<% } else { %>showLogin<% } %>();
118
+
119
+ <%_ if (authenticationTypeOauth2) { _%>
96
120
  expect(loginService.login).toHaveBeenCalled();
121
+ <%_ } else { _%>
122
+ expect(login.showLogin).toHaveBeenCalled();
97
123
  <%_ } _%>
98
124
  });
99
125
 
@@ -108,9 +134,10 @@ describe('JhiNavbar', () => {
108
134
  <%_ if (authenticationTypeOauth2) { _%>
109
135
  const logoutUrl = '/to-match';
110
136
  (loginService.logout as any).mockReturnValue(Promise.resolve({ data: { logoutUrl } }));
111
- <%_ } else if (!authenticationTypeJwt) { _%>
137
+ <%_ } else if (authenticationUsesCsrf) { _%>
112
138
  (loginService.logout as any).mockReturnValue(Promise.resolve({}));
113
139
  <%_ } _%>
140
+
114
141
  await jhiNavbar.logout();
115
142
 
116
143
  <%_ if (!authenticationTypeJwt) { _%>