generator-jhipster 8.0.0-rc.1 → 8.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +71 -58
- package/dist/cli/environment-builder.mjs +14 -7
- package/dist/cli/jhipster-command.mjs +7 -3
- package/dist/cli/program.mjs +2 -2
- package/dist/generators/angular/cleanup.mjs +7 -0
- package/dist/generators/angular/files-angular.mjs +3 -4
- package/dist/generators/angular/generator.mjs +10 -22
- package/dist/generators/angular/needle-api/needle-client-angular.mjs +2 -8
- package/dist/generators/angular/resources/package.json +25 -24
- package/dist/generators/angular/support/translate-angular.mjs +2 -2
- package/dist/generators/angular/templates/README.md.jhi.client.angular.ejs +1 -1
- package/dist/generators/angular/templates/angular.json.ejs +3 -7
- package/dist/generators/angular/templates/package.json.ejs +4 -8
- package/dist/generators/angular/templates/src/main/webapp/app/account/activate/activate.component.html.ejs +6 -4
- package/dist/generators/angular/templates/src/main/webapp/app/account/password/password-strength-bar/password-strength-bar.component.ts.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/account/password/password.component.html.ejs +39 -33
- package/dist/generators/angular/templates/src/main/webapp/app/account/password-reset/finish/password-reset-finish.component.html.ejs +44 -36
- package/dist/generators/angular/templates/src/main/webapp/app/account/password-reset/init/password-reset-init.component.html.ejs +24 -23
- package/dist/generators/angular/templates/src/main/webapp/app/account/register/register.component.html.ejs +74 -62
- package/dist/generators/angular/templates/src/main/webapp/app/account/sessions/sessions.component.html.ejs +12 -4
- package/dist/generators/angular/templates/src/main/webapp/app/account/settings/settings.component.html.ejs +54 -48
- package/dist/generators/angular/templates/src/main/webapp/app/admin/admin.routes.ts.ejs +74 -0
- package/dist/generators/angular/templates/src/main/webapp/app/admin/configuration/configuration.component.html.ejs +15 -5
- package/dist/generators/angular/templates/src/main/webapp/app/admin/docs/docs.component.ts.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/admin/gateway/gateway.component.html.ejs +20 -7
- package/dist/generators/angular/templates/src/main/webapp/app/admin/health/health.component.html.ejs +10 -7
- package/dist/generators/angular/templates/src/main/webapp/app/admin/health/modal/health-modal.component.html.ejs +9 -3
- package/dist/generators/angular/templates/src/main/webapp/app/admin/logs/logs.component.html.ejs +12 -4
- package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/jvm-memory/jvm-memory.component.html.ejs +13 -7
- package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-cache/metrics-cache.component.html.ejs +6 -2
- package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-datasource/metrics-datasource.component.html.ejs +3 -1
- package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-endpoints-requests/metrics-endpoints-requests.component.html.ejs +13 -9
- package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-garbagecollector/metrics-garbagecollector.component.html.ejs +13 -5
- package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-modal-threads/metrics-modal-threads.component.html.ejs +21 -7
- package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-request/metrics-request.component.html.ejs +6 -2
- package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-system/metrics-system.component.html.ejs +3 -1
- package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/metrics.component.html.ejs +16 -7
- package/dist/generators/angular/templates/src/main/webapp/app/admin/tracker/tracker.component.html.ejs +3 -1
- package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/delete/user-management-delete-dialog.component.html.ejs +3 -1
- package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/detail/user-management-detail.component.html.ejs +11 -4
- package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/list/user-management.component.html.ejs +20 -11
- package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/update/user-management-update.component.html.ejs +48 -34
- package/dist/generators/angular/templates/src/main/webapp/app/app.component.ts.ejs +73 -0
- package/dist/generators/angular/templates/src/main/webapp/app/app.config.ts.ejs +67 -0
- package/dist/generators/angular/templates/src/main/webapp/app/app.routes.ts.ejs +85 -0
- package/dist/generators/angular/templates/src/main/webapp/app/core/microfrontend/index.ts.ejs +5 -4
- package/dist/generators/angular/templates/src/main/webapp/app/core/util/alert.service.spec.ts.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/core/util/data-util.service.ts.ejs +2 -2
- package/dist/generators/angular/templates/src/main/webapp/app/core/util/event-manager.service.spec.ts.ejs +12 -12
- package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_.model.ts.ejs +4 -4
- package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/delete/_entityFile_-delete-dialog.component.html.ejs +3 -1
- package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/detail/_entityFile_-detail.component.html.ejs +26 -14
- package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/list/_entityFile_.component.html.ejs +44 -35
- package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/list/_entityFile_.component.ts.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/service/_entityFile_.service.ts.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/update/_entityFile_-form.service.spec.ts.ejs +2 -2
- package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/update/_entityFile_-form.service.ts.ejs +5 -12
- package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/update/_entityFile_-update.component.html.ejs +55 -21
- package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/update/_entityFile_-update.component.spec.ts.ejs +2 -2
- package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/update/_entityFile_-update.component.ts.ejs +10 -10
- package/dist/generators/angular/templates/src/main/webapp/app/entities/entity.routes.ts.ejs +25 -0
- package/dist/generators/angular/templates/src/main/webapp/app/home/home.component.html.ejs +21 -17
- package/dist/generators/angular/templates/src/main/webapp/app/home/home.component.ts.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/layouts/error/error.component.html.ejs +3 -3
- package/dist/generators/angular/templates/src/main/webapp/app/layouts/main/main.component.spec.ts.ejs +5 -2
- package/dist/generators/angular/templates/src/main/webapp/app/layouts/main/main.component.ts.ejs +5 -1
- package/dist/generators/angular/templates/src/main/webapp/app/layouts/navbar/navbar.component.html.ejs +97 -78
- package/dist/generators/angular/templates/src/main/webapp/app/layouts/navbar/navbar.component.scss.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/layouts/navbar/navbar.component.ts.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/layouts/profiles/page-ribbon.component.scss.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/layouts/profiles/page-ribbon.component.ts.ejs +6 -4
- package/dist/generators/angular/templates/src/main/webapp/app/login/login.component.html.ejs +3 -3
- package/dist/generators/angular/templates/src/main/webapp/app/shared/alert/alert-error.component.html.ejs +6 -2
- package/dist/generators/angular/templates/src/main/webapp/app/shared/alert/alert.component.html.ejs +6 -2
- package/dist/generators/angular/templates/src/main/webapp/app/shared/filter/filter.component.html.ejs +11 -7
- package/dist/generators/angular/templates/src/main/webapp/app/shared/filter/filter.model.spec.ts.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/shared/sort/sort-by.directive.spec.ts.ejs +3 -3
- package/dist/generators/angular/templates/src/main/webapp/bootstrap.ts.ejs +5 -5
- package/dist/generators/angular/templates/src/main/webapp/content/scss/global.scss.ejs +1 -1
- package/dist/generators/angular/templates/webpack/webpack.microfrontend.js.ejs +48 -126
- package/dist/generators/app/README.md +108 -0
- package/dist/generators/app/USAGE +3 -0
- package/dist/generators/app/command.mjs +3 -3
- package/dist/generators/app/generator.mjs +11 -0
- package/dist/generators/app/support/config.mjs +3 -3
- package/dist/generators/base/command.mjs +0 -11
- package/dist/generators/base/generator.mjs +0 -3
- package/dist/generators/base/support/config.mjs +6 -6
- package/dist/generators/base/support/jhipster7-context.mjs +3 -3
- package/dist/generators/base-application/generator.mjs +7 -8
- package/dist/generators/base-application/support/entities.mjs +2 -2
- package/dist/generators/base-application/support/enum.mjs +1 -1
- package/dist/generators/base-application/support/index.mjs +1 -0
- package/dist/generators/base-application/support/prepare-entity.mjs +14 -11
- package/dist/generators/base-application/support/prepare-field.mjs +11 -7
- package/dist/generators/base-application/support/prepare-relationship.mjs +16 -14
- package/dist/generators/base-application/support/update-application-entities-transform.mjs +52 -0
- package/dist/generators/base-core/generator.mjs +17 -4
- package/dist/generators/base-entity-changes/generator.mjs +1 -1
- package/dist/generators/base-workspaces/internal/docker-prompts.mjs +13 -12
- package/dist/generators/bootstrap/command.mjs +6 -0
- package/dist/generators/bootstrap/generator.mjs +84 -45
- package/dist/generators/bootstrap/support/auto-crlf-transform.mjs +34 -21
- package/dist/generators/bootstrap/support/eslint-transform.mjs +2 -5
- package/dist/generators/bootstrap/support/java-unused-imports-transform.mjs +2 -2
- package/dist/generators/bootstrap/support/multi-step-transform/index.mjs +17 -28
- package/dist/generators/bootstrap/support/multi-step-transform/template-file-fs.mjs +12 -6
- package/dist/generators/bootstrap/support/multi-step-transform/template-file.mjs +1 -0
- package/dist/generators/bootstrap/support/prettier-support.mjs +2 -2
- package/dist/generators/bootstrap-application/generator.mjs +10 -21
- package/dist/generators/bootstrap-application-base/command.mjs +30 -0
- package/dist/generators/bootstrap-application-base/generator.mjs +36 -11
- package/dist/generators/bootstrap-application-base/index.mjs +1 -0
- package/dist/generators/bootstrap-application-base/support/export-jdl-transform.mjs +61 -0
- package/dist/generators/bootstrap-application-base/support/import-jdl-transform.mjs +64 -0
- package/dist/generators/bootstrap-application-base/support/index.mjs +2 -0
- package/dist/generators/bootstrap-application-server/generator.mjs +2 -2
- package/dist/generators/client/command.mjs +2 -0
- package/dist/generators/client/resources/package.json +4 -4
- package/dist/generators/client/support/entity-definition.mjs +3 -3
- package/dist/generators/client/templates/README.md.jhi.client.ejs +2 -2
- package/dist/generators/client/templates/src/main/webapp/content/css/loading.css.ejs +1 -1
- package/dist/generators/client/templates/src/main/webapp/index.html.ejs +2 -2
- package/dist/generators/client/templates/webpack/webpack.microfrontend.js.jhi.ejs +14 -1
- package/dist/generators/common/command.mjs +2 -0
- package/dist/generators/common/files.mjs +1 -1
- package/dist/generators/common/generator.mjs +29 -7
- package/dist/generators/common/resources/package.json +4 -4
- package/dist/generators/common/templates/.lintstagedrc.cjs.ejs +21 -0
- package/dist/generators/common/templates/.prettierrc.ejs +1 -1
- package/dist/generators/common/templates/README.md.jhi.ejs +2 -0
- package/dist/generators/common/templates/sonar-project.properties.ejs +1 -1
- package/dist/generators/cypress/templates/src/test/javascript/cypress/e2e/account/settings-page.cy.ts.ejs +3 -0
- package/dist/generators/cypress/templates/src/test/javascript/cypress/e2e/entity/_entity_.cy.ts.ejs +0 -1
- package/dist/generators/docker/generator.mjs +1 -1
- package/dist/generators/docker/templates/docker/cassandra.yml.ejs +2 -2
- package/dist/generators/docker/templates/docker/keycloak.yml.ejs +1 -1
- package/dist/generators/docker/templates/docker/realm-config/jhipster-realm.json.ejs +4 -1
- package/dist/generators/docker-compose/generator.mjs +4 -11
- package/dist/generators/docker-compose/templates/docker-compose.yml.ejs +1 -1
- package/dist/generators/docker-compose/templates/realm-config/jhipster-realm.json.ejs +4 -1
- package/dist/generators/entity/prompts.mjs +123 -306
- package/dist/generators/export-jdl/generator.mjs +1 -1
- package/dist/generators/feign-client/cleanup.mjs +12 -0
- package/dist/generators/feign-client/files.mjs +35 -0
- package/dist/generators/feign-client/generator.mjs +65 -0
- package/dist/generators/feign-client/index.mjs +19 -0
- package/dist/generators/feign-client/templates/src/main/java/_package_/client/AuthorizationHeaderUtil.java.ejs +174 -0
- package/dist/generators/feign-client/templates/src/main/java/_package_/client/AuthorizedFeignClient.java.ejs +72 -0
- package/dist/generators/feign-client/templates/src/main/java/_package_/client/OAuth2InterceptedFeignConfiguration.java.ejs +35 -0
- package/dist/generators/feign-client/templates/src/main/java/_package_/client/OAuthIdpTokenResponseDTO.java.ejs +161 -0
- package/dist/generators/feign-client/templates/src/main/java/_package_/client/TokenRelayRequestInterceptor.java.ejs +42 -0
- package/dist/generators/feign-client/templates/src/main/java/_package_/client/UserFeignClientInterceptor_jwt.java.ejs +36 -0
- package/dist/generators/feign-client/templates/src/main/java/_package_/config/FeignConfiguration.java.ejs +45 -0
- package/dist/generators/feign-client/templates/src/test/java/_package_/client/AuthorizationHeaderUtilTest.java.ejs +263 -0
- package/dist/generators/generate-blueprint/command.mjs +1 -1
- package/dist/generators/generate-blueprint/resources/package.json +1 -1
- package/dist/generators/generate-blueprint/templates/vitest.config.ts.ejs +1 -1
- package/dist/generators/generator-constants.mjs +11 -7
- package/dist/generators/generator-list.mjs +1 -0
- package/dist/generators/git/generator.mjs +3 -5
- package/dist/generators/gradle/constants.mjs +1 -1
- package/dist/generators/heroku/generator.mjs +318 -595
- package/dist/generators/heroku/templates/Procfile.ejs +1 -1
- package/dist/generators/heroku/templates/application-heroku.yml.ejs +0 -12
- package/dist/generators/info/generator.mjs +6 -4
- package/dist/generators/init/generator.mjs +2 -2
- package/dist/generators/java/command.mjs +6 -0
- package/dist/generators/java/entity-files.mjs +5 -1
- package/dist/generators/java/generator.mjs +15 -15
- package/dist/generators/java/support/package-info-transform.mjs +20 -6
- package/dist/generators/java/templates/src/main/java/_package_/_entityPackage_/domain/_persistClass_.java.jhi.ejs +24 -28
- package/dist/generators/java/templates/src/main/java/_package_/_entityPackage_/domain/_persistClass_.java.jhi.jackson_identity_info.ejs +30 -0
- package/dist/generators/java/templates/src/main/java/_package_/_entityPackage_/domain/enumeration/_enumName_.java.ejs +3 -3
- package/dist/generators/java/templates/src/test/java/_package_/_entityPackage_/domain/_persistClass_Test.java.ejs +86 -8
- package/dist/generators/java/templates/src/test/java/_package_/_entityPackage_/domain/_persistClass_TestSamples.java.ejs +85 -0
- package/dist/generators/jdl/generator.mjs +32 -28
- package/dist/generators/kubernetes/templates/ingress.yml.ejs +0 -1
- package/dist/generators/kubernetes/templates/keycloak/keycloak-configmap.yml.ejs +4 -1
- package/dist/generators/kubernetes/templates/keycloak/keycloak.yml.ejs +1 -1
- package/dist/generators/languages/command.mjs +5 -0
- package/dist/generators/languages/generator.mjs +44 -28
- package/dist/generators/languages/prompts.mjs +3 -1
- package/dist/generators/languages/support/translate.mjs +1 -1
- package/dist/generators/languages/templates/entity/i18n/entity_pt-br.json.ejs +1 -1
- package/dist/generators/languages/translation-data.mjs +8 -13
- package/dist/generators/liquibase/README.md +19 -0
- package/dist/generators/liquibase/generator.mjs +7 -3
- package/dist/generators/project-name/generator.mjs +14 -19
- package/dist/generators/project-name/support/name-resolver.mjs +35 -6
- package/dist/generators/react/generator.mjs +18 -10
- package/dist/generators/react/resources/package.json +30 -29
- package/dist/generators/react/templates/package.json.ejs +4 -5
- package/dist/generators/react/templates/src/main/webapp/app/config/icon-loader.ts.ejs +35 -33
- package/dist/generators/react/templates/src/main/webapp/app/config/notification-middleware.spec.ts.ejs +4 -4
- package/dist/generators/react/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_-detail.tsx.ejs +1 -2
- package/dist/generators/react/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_-update.tsx.ejs +19 -15
- package/dist/generators/react/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_.reducer.ts.ejs +1 -1
- package/dist/generators/react/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_.tsx.ejs +3 -8
- package/dist/generators/react/templates/src/main/webapp/app/entities/_entityFolder_/_entityModel_.model.ts.ejs +1 -1
- package/dist/generators/react/templates/src/main/webapp/app/modules/home/home.tsx.ejs +1 -1
- package/dist/generators/react/templates/src/main/webapp/app/routes.tsx.ejs +9 -2
- package/dist/generators/react/templates/src/main/webapp/app/shared/layout/header/header-components.tsx.ejs +1 -1
- package/dist/generators/react/templates/src/main/webapp/app/shared/layout/header/header.scss.ejs +6 -5
- package/dist/generators/react/templates/src/main/webapp/app/shared/layout/menus/entities.tsx.ejs +10 -1
- package/dist/generators/react/templates/src/main/webapp/app/shared/reducers/reducer.utils.ts.ejs +1 -1
- package/dist/generators/react/templates/src/main/webapp/app/shared/util/date-utils.ts.ejs +1 -1
- package/dist/generators/react/templates/tsconfig.test.json.ejs +1 -1
- package/dist/generators/react/templates/webpack/webpack.microfrontend.js.jhi.react.ejs +13 -58
- package/dist/generators/server/cleanup.mjs +5 -0
- package/dist/generators/server/command.mjs +13 -2
- package/dist/generators/server/entity-files.mjs +3 -3
- package/dist/generators/server/files.mjs +2 -38
- package/dist/generators/server/generator.mjs +48 -23
- package/dist/generators/server/jdl/application-definition.mjs +5 -2
- package/dist/generators/server/options/feign-client.mjs +24 -0
- package/dist/generators/server/options/index.mjs +1 -0
- package/dist/generators/server/resources/Dockerfile +19 -19
- package/dist/generators/server/resources/gradle/libs.versions.toml +4 -4
- package/dist/generators/server/resources/pom.xml +18 -18
- package/dist/generators/server/support/config.mjs +5 -4
- package/dist/generators/server/support/prepare-entity.mjs +9 -6
- package/dist/generators/server/support/prepare-field.mjs +20 -0
- package/dist/generators/server/support/relationship.mjs +2 -1
- package/dist/generators/server/support/templates/field-values.mjs +5 -2
- package/dist/generators/server/templates/README.md.jhi.spring-boot.ejs +0 -1
- package/dist/generators/server/templates/build.gradle.ejs +1 -2
- package/dist/generators/server/templates/gradle/profile_dev.gradle.ejs +3 -21
- package/dist/generators/server/templates/gradle/profile_prod.gradle.ejs +5 -15
- package/dist/generators/server/templates/package.json.ejs +0 -5
- package/dist/generators/server/templates/pom.xml.ejs +2 -12
- package/dist/generators/server/templates/src/main/java/_package_/_entityPackage_/_partials_entity_/get_all_template.ejs +8 -8
- package/dist/generators/server/templates/src/main/java/_package_/_entityPackage_/_partials_entity_/search_template.ejs +4 -4
- package/dist/generators/server/templates/src/main/java/_package_/_entityPackage_/repository/_entityClass_Repository.java.ejs +1 -1
- package/dist/generators/server/templates/src/main/java/_package_/_entityPackage_/service/dto/_dtoClass_.java.ejs +2 -2
- package/dist/generators/server/templates/src/main/java/_package_/_entityPackage_/service/mapper/_entityClass_Mapper.java.ejs +2 -2
- package/dist/generators/server/templates/src/main/java/_package_/_entityPackage_/web/rest/_entityClass_Resource.java.ejs +14 -14
- package/dist/generators/server/templates/src/main/java/_package_/config/JacksonConfiguration.java.ejs +2 -1
- package/dist/generators/server/templates/src/main/java/_package_/config/SecurityConfiguration_imperative.java.ejs +21 -3
- package/dist/generators/server/templates/src/main/java/_package_/config/SecurityConfiguration_reactive.java.ejs +6 -1
- package/dist/generators/server/templates/src/main/java/_package_/security/oauth2/CustomClaimConverter.java.ejs +1 -5
- package/dist/generators/server/templates/src/main/java/_package_/service/MailService.java.ejs +48 -6
- package/dist/generators/server/templates/src/main/java/_package_/web/rest/AccountResource.java.ejs +1 -1
- package/dist/generators/server/templates/src/main/java/_package_/web/rest/LogoutResource_imperative.java.ejs +4 -13
- package/dist/generators/server/templates/src/main/java/_package_/web/rest/LogoutResource_reactive.java.ejs +5 -11
- package/dist/generators/server/templates/src/main/java/_package_/web/rest/PublicUserResource.java.ejs +6 -7
- package/dist/generators/server/templates/src/main/java/_package_/web/rest/UserResource.java.ejs +6 -8
- package/dist/generators/server/templates/src/main/java/_package_/web/rest/errors/ExceptionTranslator.java.ejs +4 -7
- package/dist/generators/server/templates/src/main/resources/config/application.yml.ejs +8 -7
- package/dist/generators/server/templates/src/test/java/_package_/TechnicalStructureTest.java.ejs +1 -1
- package/dist/generators/server/templates/src/test/java/_package_/_entityPackage_/web/rest/_entityClass_ResourceIT.java.ejs +11 -11
- package/dist/generators/server/templates/src/test/java/_package_/web/rest/AccountResourceIT.java.ejs +4 -4
- package/dist/generators/server/templates/src/test/java/_package_/web/rest/errors/ExceptionTranslatorTestController.java.ejs +2 -2
- package/dist/generators/spring-cache/internal/dependencies.mjs +1 -1
- package/dist/generators/spring-cache/templates/gradle/cache.gradle.ejs +1 -1
- package/dist/generators/spring-cache/templates/src/main/java/_package_/config/CacheFactoryConfiguration.java.ejs +1 -1
- package/dist/generators/spring-cloud-stream/templates/src/main/java/_package_/web/rest/KafkaResource_imperative.java.ejs +1 -1
- package/dist/generators/spring-cloud-stream/templates/src/main/java/_package_/web/rest/KafkaResource_reactive.java.ejs +1 -1
- package/dist/generators/spring-cloud-stream/templates/src/test/java/_package_/web/rest/KafkaResourceIT_reactive.java.ejs +3 -0
- package/dist/generators/spring-data-elasticsearch/templates/src/main/java/_package_/_entityPackage_/domain/_persistClass_.java.jhi.elastic_search.ejs +1 -1
- package/dist/generators/spring-data-elasticsearch/templates/src/main/java/_package_/_entityPackage_/repository/search/_entityClass_SearchRepository.java.ejs +1 -3
- package/dist/generators/spring-data-elasticsearch/templates/src/main/java/_package_/repository/search/UserSearchRepository.java.ejs +4 -4
- package/dist/generators/spring-data-neo4j/generator.mjs +43 -1
- package/dist/generators/spring-data-neo4j/templates/src/main/java/_package_/_entityPackage_/domain/_persistClass_.java.jhi.spring_data_neo4j.ejs +3 -37
- package/dist/generators/spring-data-relational/README.md +7 -0
- package/dist/generators/spring-data-relational/generator.mjs +2 -1
- package/dist/generators/spring-data-relational/internal/dependencies.mjs +29 -8
- package/dist/generators/spring-data-relational/support/database-data.mjs +4 -0
- package/dist/generators/spring-data-relational/templates/src/main/java/_package_/repository/EntityManager_reactive.java.ejs +49 -8
- package/dist/generators/spring-data-relational/templates/src/test/java/_package_/config/SqlTestContainersSpringContextCustomizerFactory.java.ejs +1 -1
- package/dist/generators/upgrade/generator.mjs +3 -3
- package/dist/generators/vue/generator.mjs +25 -16
- package/dist/generators/vue/resources/package.json +29 -28
- package/dist/generators/vue/templates/package.json.ejs +4 -5
- package/dist/generators/vue/templates/src/main/webapp/app/core/jhi-navbar/jhi-navbar.component.ts.ejs +10 -3
- package/dist/generators/vue/templates/src/main/webapp/app/core/jhi-navbar/jhi-navbar.vue.ejs +3 -4
- package/dist/generators/vue/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_-details.vue.ejs +1 -2
- package/dist/generators/vue/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_-update.component.spec.ts.ejs +1 -1
- package/dist/generators/vue/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_-update.component.ts.ejs +3 -3
- package/dist/generators/vue/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_-update.vue.ejs +2 -15
- package/dist/generators/vue/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_.service.ts.ejs +1 -1
- package/dist/generators/vue/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_.vue.ejs +14 -7
- package/dist/generators/vue/templates/src/main/webapp/app/router/index.ts.ejs +8 -1
- package/dist/generators/vue/templates/webpack/webpack.microfrontend.js.jhi.vue.ejs +19 -34
- package/dist/jdl/converters/jdl-to-json/jdl-to-json-basic-entity-converter.js +1 -0
- package/dist/jdl/converters/jdl-to-json/jdl-to-json-option-converter.js +2 -2
- package/dist/jdl/converters/jdl-to-json/jdl-to-json-relationship-converter.js +1 -1
- package/dist/jdl/converters/jdl-to-json/jdl-without-application-to-json-converter.js +1 -1
- package/dist/jdl/converters/json-to-jdl-converter.js +1 -1
- package/dist/jdl/converters/json-to-jdl-entity-converter.js +1 -0
- package/dist/jdl/converters/parsed-jdl-to-jdl-object/application-converter.js +1 -17
- package/dist/jdl/converters/parsed-jdl-to-jdl-object/entity-converter.js +5 -0
- package/dist/jdl/converters/parsed-jdl-to-jdl-object/parsed-jdl-to-jdl-object-converter.js +0 -27
- package/dist/jdl/exporters/applications/jhipster-application-formatter.js +17 -1
- package/dist/jdl/exporters/config.js +11 -0
- package/dist/jdl/exporters/export-utils.js +2 -13
- package/dist/jdl/exporters/jhipster-entity-exporter.js +3 -2
- package/dist/jdl/index.js +1 -0
- package/dist/jdl/jdl-importer.js +6 -2
- package/dist/jdl/jhipster/default-application-options.js +1 -1
- package/dist/jdl/jhipster/field-types.js +1 -1
- package/dist/jdl/jhipster/json-entity.js +6 -0
- package/dist/jdl/models/jdl-application-configuration-factory.js +34 -2
- package/dist/jdl/models/jdl-application-configuration.js +6 -3
- package/dist/jdl/models/jdl-application-factory.js +2 -2
- package/dist/jdl/models/jdl-application.js +12 -3
- package/dist/jdl/models/jdl-entity.js +16 -1
- package/dist/jdl/models/jdl-field.js +13 -0
- package/dist/jdl/models/jdl-object.js +3 -3
- package/dist/jdl/models/jdl-relationship.js +23 -5
- package/dist/jdl/parsing/jdl-ast-builder-visitor.js +63 -7
- package/dist/jdl/parsing/jdl-parser.js +52 -6
- package/dist/jdl/parsing/lexer/application-tokens.js +2 -2
- package/dist/jdl/validators/entity-validator.js +4 -2
- package/dist/jdl/validators/enum-validator.js +4 -2
- package/dist/jdl/validators/jdl-with-application-validator.js +18 -8
- package/dist/jdl/validators/jdl-without-application-validator.js +30 -29
- package/dist/jdl/validators/validator.js +1 -1
- package/dist/testing/helpers.mjs +10 -3
- package/dist/types/cli/environment-builder.d.mts +2 -0
- package/dist/types/generators/angular/needle-api/needle-client-angular.d.mts +0 -1
- package/dist/types/generators/base/api.d.mts +12 -0
- package/dist/types/generators/base/support/config.d.mts +3 -3
- package/dist/types/generators/base/support/needles.d.mts +1 -1
- package/dist/types/generators/base-application/generator.d.mts +2 -2
- package/dist/types/generators/base-application/support/index.d.mts +1 -0
- package/dist/types/generators/base-application/support/prepare-entity.d.mts +6 -1
- package/dist/types/generators/base-application/support/update-application-entities-transform.d.mts +4 -0
- package/dist/types/generators/base-application/types/relationship.d.mts +4 -0
- package/dist/types/generators/base-core/generator.d.mts +7 -1
- package/dist/types/generators/bootstrap/support/auto-crlf-transform.d.mts +3 -2
- package/dist/types/generators/bootstrap/support/multi-step-transform/index.d.mts +3 -20
- package/dist/types/generators/bootstrap/support/multi-step-transform/template-file-fs.d.mts +15 -9
- package/dist/types/generators/bootstrap/support/multi-step-transform/template-file.d.mts +1 -0
- package/dist/types/generators/bootstrap-application-base/support/export-jdl-transform.d.mts +8 -0
- package/dist/types/generators/bootstrap-application-base/support/import-jdl-transform.d.mts +6 -0
- package/dist/types/generators/bootstrap-application-base/support/index.d.mts +2 -0
- package/dist/types/generators/client/support/entity-definition.d.mts +2 -2
- package/dist/types/generators/feign-client/types-export.d.ts +1 -0
- package/dist/types/generators/generator-constants.d.mts +52 -48
- package/dist/types/generators/generator-list.d.mts +1 -0
- package/dist/types/generators/java/support/package-info-transform.d.mts +1 -4
- package/dist/types/generators/project-name/support/name-resolver.d.mts +9 -1
- package/dist/types/generators/server/options/feign-client.d.mts +21 -0
- package/dist/types/generators/server/options/index.d.mts +1 -0
- package/dist/types/generators/server/support/templates/field-values.d.mts +1 -1
- package/dist/types/jdl/converters/json-to-jdl-converter.d.ts +1 -0
- package/dist/types/jdl/converters/parsed-jdl-to-jdl-object/option-converter.d.ts +1 -1
- package/dist/types/jdl/exporters/config.d.ts +1 -0
- package/dist/types/jdl/index.d.ts +1 -0
- package/dist/types/jdl/jdl-importer.d.ts +1 -0
- package/dist/types/jdl/jhipster/json-entity.d.ts +2 -0
- package/dist/types/jdl/models/jdl-application-configuration-factory.d.ts +1 -0
- package/dist/types/jdl/models/jdl-application-configuration-option.d.ts +2 -2
- package/dist/types/jdl/models/jdl-application-configuration.d.ts +8 -6
- package/dist/types/jdl/models/jdl-application-factory.d.ts +1 -1
- package/dist/types/jdl/models/jdl-application.d.ts +8 -4
- package/dist/types/jdl/models/jdl-entity.d.ts +1 -0
- package/dist/types/jdl/models/jdl-object.d.ts +1 -1
- package/dist/types/jdl/models/jdl-relationship.d.ts +0 -18
- package/dist/types/jdl/models/list-jdl-application-configuration-option.d.ts +1 -1
- package/dist/types/jdl/parsing/jdl-ast-builder-visitor.d.ts +10 -0
- package/dist/types/jdl/parsing/jdl-parser.d.ts +3 -0
- package/dist/types/jdl/parsing/lexer/application-tokens.d.ts +1 -0
- package/dist/types/jdl/types/types.d.mts +2 -2
- package/dist/types/jdl/validators/entity-validator.d.ts +2 -2
- package/dist/types/jdl/validators/enum-validator.d.ts +2 -2
- package/dist/types/jdl/validators/validator.d.ts +4 -1
- package/package.json +41 -41
|
@@ -62,11 +62,18 @@ import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
|
|
|
62
62
|
import org.springframework.security.crypto.password.PasswordEncoder;
|
|
63
63
|
<%_ } _%>
|
|
64
64
|
<%_ if (authenticationTypeOauth2) { _%>
|
|
65
|
+
import static org.springframework.security.oauth2.core.oidc.StandardClaimNames.PREFERRED_USERNAME;
|
|
66
|
+
|
|
65
67
|
import <%= packageName %>.security.oauth2.AudienceValidator;
|
|
66
68
|
import <%= packageName %>.security.SecurityUtils;
|
|
67
69
|
import org.springframework.security.authentication.AbstractAuthenticationToken;
|
|
70
|
+
import org.springframework.security.oauth2.client.userinfo.OAuth2UserService;
|
|
71
|
+
import org.springframework.security.oauth2.client.oidc.userinfo.OidcUserRequest;
|
|
72
|
+
import org.springframework.security.oauth2.client.oidc.userinfo.OidcUserService;
|
|
68
73
|
import org.springframework.security.oauth2.core.DelegatingOAuth2TokenValidator;
|
|
69
74
|
import org.springframework.security.oauth2.core.OAuth2TokenValidator;
|
|
75
|
+
import org.springframework.security.oauth2.core.oidc.user.DefaultOidcUser;
|
|
76
|
+
import org.springframework.security.oauth2.core.oidc.user.OidcUser;
|
|
70
77
|
import org.springframework.security.oauth2.jwt.*;
|
|
71
78
|
import org.springframework.security.oauth2.server.resource.authentication.JwtAuthenticationConverter;
|
|
72
79
|
import org.springframework.beans.factory.annotation.Value;
|
|
@@ -182,7 +189,7 @@ public class SecurityConfiguration {
|
|
|
182
189
|
// prettier-ignore
|
|
183
190
|
authz
|
|
184
191
|
<%_ if (!skipClient) { _%>
|
|
185
|
-
.requestMatchers(mvc.pattern("/index.html"), mvc.pattern("/*.js"), mvc.pattern("/*.map"), mvc.pattern("/*.css")).permitAll()
|
|
192
|
+
.requestMatchers(mvc.pattern("/index.html"), mvc.pattern("/*.js"), mvc.pattern("/*.txt"), mvc.pattern("/*.json"), mvc.pattern("/*.map"), mvc.pattern("/*.css")).permitAll()
|
|
186
193
|
.requestMatchers(mvc.pattern("/*.ico"), mvc.pattern("/*.png"), mvc.pattern("/*.svg"), mvc.pattern("/*.webapp")).permitAll()
|
|
187
194
|
<%_ if (clientFrameworkVue) { _%>
|
|
188
195
|
.requestMatchers(mvc.pattern("/assets/**")).permitAll()
|
|
@@ -261,14 +268,14 @@ public class SecurityConfiguration {
|
|
|
261
268
|
.oauth2ResourceServer(oauth2 -> oauth2.jwt(Customizer.withDefaults()));
|
|
262
269
|
<%_ } else if (authenticationTypeOauth2) { _%>
|
|
263
270
|
<%_ if (applicationTypeMonolith) { _%>
|
|
264
|
-
.oauth2Login(
|
|
271
|
+
.oauth2Login(oauth2 -> oauth2.userInfoEndpoint(userInfo -> userInfo.oidcUserService(this.oidcUserService())))
|
|
265
272
|
<%_ } else if (applicationTypeMicroservice) { _%>
|
|
266
273
|
.sessionManagement(session -> session.sessionCreationPolicy(SessionCreationPolicy.STATELESS))
|
|
267
274
|
<%_ } _%>
|
|
268
275
|
.oauth2ResourceServer(oauth2 -> oauth2
|
|
269
276
|
.jwt(jwt -> jwt
|
|
270
277
|
.jwtAuthenticationConverter(authenticationConverter())))
|
|
271
|
-
.oauth2Client();
|
|
278
|
+
.oauth2Client(withDefaults());
|
|
272
279
|
<%_ } _%>
|
|
273
280
|
<%_ if (devDatabaseTypeH2Any) { _%>
|
|
274
281
|
if (env.acceptsProfiles(Profiles.of(JHipsterConstants.SPRING_PROFILE_DEVELOPMENT))) {
|
|
@@ -291,9 +298,20 @@ public class SecurityConfiguration {
|
|
|
291
298
|
Converter<Jwt, AbstractAuthenticationToken> authenticationConverter() {
|
|
292
299
|
JwtAuthenticationConverter jwtAuthenticationConverter = new JwtAuthenticationConverter();
|
|
293
300
|
jwtAuthenticationConverter.setJwtGrantedAuthoritiesConverter(new JwtGrantedAuthorityConverter());
|
|
301
|
+
jwtAuthenticationConverter.setPrincipalClaimName(PREFERRED_USERNAME);
|
|
294
302
|
return jwtAuthenticationConverter;
|
|
295
303
|
}
|
|
304
|
+
|
|
305
|
+
OAuth2UserService<OidcUserRequest, OidcUser> oidcUserService() {
|
|
306
|
+
final OidcUserService delegate = new OidcUserService();
|
|
307
|
+
|
|
308
|
+
return userRequest -> {
|
|
309
|
+
OidcUser oidcUser = delegate.loadUser(userRequest);
|
|
310
|
+
return new DefaultOidcUser(oidcUser.getAuthorities(), oidcUser.getIdToken(), oidcUser.getUserInfo(), PREFERRED_USERNAME);
|
|
311
|
+
};
|
|
312
|
+
}
|
|
296
313
|
<%_ if (!applicationTypeMicroservice) { _%>
|
|
314
|
+
|
|
297
315
|
/**
|
|
298
316
|
* Map authorities from "groups" or "roles" claim in ID Token.
|
|
299
317
|
*
|
|
@@ -20,6 +20,8 @@ package <%= packageName %>.config;
|
|
|
20
20
|
|
|
21
21
|
import <%= packageName %>.security.AuthoritiesConstants;
|
|
22
22
|
<%_ if (authenticationTypeOauth2) { _%>
|
|
23
|
+
import static org.springframework.security.oauth2.core.oidc.StandardClaimNames.PREFERRED_USERNAME;
|
|
24
|
+
|
|
23
25
|
import <%= packageName %>.security.SecurityUtils;
|
|
24
26
|
import <%= packageName %>.security.oauth2.AudienceValidator;
|
|
25
27
|
import <%= packageName %>.security.oauth2.JwtGrantedAuthorityConverter;
|
|
@@ -285,6 +287,8 @@ public class SecurityConfiguration {
|
|
|
285
287
|
<%_ if (microfrontend) { _%>
|
|
286
288
|
// microfrontend resources are loaded by webpack without authentication, they need to be public
|
|
287
289
|
.pathMatchers("/services/*/*.js").permitAll()
|
|
290
|
+
.pathMatchers("/services/*/*.txt").permitAll()
|
|
291
|
+
.pathMatchers("/services/*/*.json").permitAll()
|
|
288
292
|
.pathMatchers("/services/*/*.js.map").permitAll()
|
|
289
293
|
<%_ } _%>
|
|
290
294
|
.pathMatchers("/services/*/management/health/readiness").permitAll()
|
|
@@ -337,6 +341,7 @@ public class SecurityConfiguration {
|
|
|
337
341
|
Converter<Jwt, Mono<AbstractAuthenticationToken>> jwtAuthenticationConverter() {
|
|
338
342
|
JwtAuthenticationConverter jwtAuthenticationConverter = new JwtAuthenticationConverter();
|
|
339
343
|
jwtAuthenticationConverter.setJwtGrantedAuthoritiesConverter(new JwtGrantedAuthorityConverter());
|
|
344
|
+
jwtAuthenticationConverter.setPrincipalClaimName(PREFERRED_USERNAME);
|
|
340
345
|
return new ReactiveJwtAuthenticationConverterAdapter(jwtAuthenticationConverter);
|
|
341
346
|
}
|
|
342
347
|
|
|
@@ -361,7 +366,7 @@ public class SecurityConfiguration {
|
|
|
361
366
|
}
|
|
362
367
|
});
|
|
363
368
|
|
|
364
|
-
return new DefaultOidcUser(mappedAuthorities, user.getIdToken(), user.getUserInfo());
|
|
369
|
+
return new DefaultOidcUser(mappedAuthorities, user.getIdToken(), user.getUserInfo(), PREFERRED_USERNAME);
|
|
365
370
|
});
|
|
366
371
|
};
|
|
367
372
|
}
|
|
@@ -80,7 +80,7 @@ public class CustomClaimConverter implements Converter<Map<String, Object>, Map<
|
|
|
80
80
|
// Retrieve and set the token
|
|
81
81
|
String token = bearerTokenResolver.resolve(((ServletRequestAttributes) attributes).getRequest());
|
|
82
82
|
HttpHeaders headers = new HttpHeaders();
|
|
83
|
-
headers.
|
|
83
|
+
headers.setBearerAuth(token);
|
|
84
84
|
|
|
85
85
|
// Retrieve user info from OAuth provider if not already loaded
|
|
86
86
|
ObjectNode user = users.get(claims.get("sub").toString(), s -> {
|
|
@@ -126,8 +126,4 @@ public class CustomClaimConverter implements Converter<Map<String, Object>, Map<
|
|
|
126
126
|
}
|
|
127
127
|
return convertedClaims;
|
|
128
128
|
}
|
|
129
|
-
|
|
130
|
-
private String buildBearer(String token) {
|
|
131
|
-
return "Bearer " + token;
|
|
132
|
-
}
|
|
133
129
|
}
|
package/dist/generators/server/templates/src/main/java/_package_/service/MailService.java.ejs
CHANGED
|
@@ -33,15 +33,25 @@ import org.springframework.context.MessageSource;
|
|
|
33
33
|
import org.springframework.mail.MailException;
|
|
34
34
|
import org.springframework.mail.javamail.JavaMailSender;
|
|
35
35
|
import org.springframework.mail.javamail.MimeMessageHelper;
|
|
36
|
-
import org.springframework.scheduling.annotation.Async;
|
|
37
36
|
import org.springframework.stereotype.Service;
|
|
38
37
|
import org.thymeleaf.context.Context;
|
|
39
38
|
import org.thymeleaf.spring6.SpringTemplateEngine;
|
|
39
|
+
<%_ if (reactive) { _%>
|
|
40
|
+
import reactor.core.publisher.Mono;
|
|
41
|
+
<%_ } else { _%>
|
|
42
|
+
import org.springframework.scheduling.annotation.Async;
|
|
43
|
+
<%_ } _%>
|
|
44
|
+
<%_
|
|
45
|
+
const localSendEmailFromTemplateApi = reactive ? 'sendEmailFromTemplate' : 'sendEmailFromTemplateSync';
|
|
46
|
+
_%>
|
|
47
|
+
|
|
40
48
|
|
|
41
49
|
/**
|
|
42
|
-
* Service for sending emails.
|
|
50
|
+
* Service for sending emails asynchronously.
|
|
51
|
+
<%_ if (!reactive) { _%>
|
|
43
52
|
* <p>
|
|
44
53
|
* We use the {@link Async} annotation to send emails asynchronously.
|
|
54
|
+
<%_ } _%>
|
|
45
55
|
*/
|
|
46
56
|
@Service
|
|
47
57
|
public class MailService {
|
|
@@ -69,8 +79,21 @@ public class MailService {
|
|
|
69
79
|
this.templateEngine = templateEngine;
|
|
70
80
|
}
|
|
71
81
|
|
|
82
|
+
<%_ if (!reactive) { _%>
|
|
72
83
|
@Async
|
|
84
|
+
<%_ } _%>
|
|
73
85
|
public void sendEmail(String to, String subject, String content, boolean isMultipart, boolean isHtml) {
|
|
86
|
+
<%_ if (reactive) { _%>
|
|
87
|
+
Mono.defer(() -> {
|
|
88
|
+
this.sendEmailSync(to, subject, content, isMultipart, isHtml);
|
|
89
|
+
return Mono.empty();
|
|
90
|
+
}).subscribe();
|
|
91
|
+
<%_ } else { _%>
|
|
92
|
+
this.sendEmailSync(to, subject, content, isMultipart, isHtml);
|
|
93
|
+
<%_ } _%>
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
private void sendEmailSync(String to, String subject, String content, boolean isMultipart, boolean isHtml) {
|
|
74
97
|
log.debug("Send email[multipart '{}' and html '{}'] to '{}' with subject '{}' and content={}",
|
|
75
98
|
isMultipart, isHtml, to, subject, content);
|
|
76
99
|
|
|
@@ -89,8 +112,21 @@ public class MailService {
|
|
|
89
112
|
}
|
|
90
113
|
}
|
|
91
114
|
|
|
115
|
+
<%_ if (!reactive) { _%>
|
|
92
116
|
@Async
|
|
117
|
+
<%_ } _%>
|
|
93
118
|
public void sendEmailFromTemplate(<%= user.persistClass %> user, String templateName, String titleKey) {
|
|
119
|
+
<%_ if (reactive) { _%>
|
|
120
|
+
Mono.defer(() -> {
|
|
121
|
+
this.sendEmailFromTemplateSync(user, templateName, titleKey);
|
|
122
|
+
return Mono.empty();
|
|
123
|
+
}).subscribe();
|
|
124
|
+
<%_ } else { _%>
|
|
125
|
+
this.sendEmailFromTemplateSync(user, templateName, titleKey);
|
|
126
|
+
<%_ } _%>
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
private void sendEmailFromTemplateSync(<%= user.persistClass %> user, String templateName, String titleKey) {
|
|
94
130
|
if (user.getEmail() == null) {
|
|
95
131
|
log.debug("Email doesn't exist for user '{}'", user.getLogin());
|
|
96
132
|
return;
|
|
@@ -101,26 +137,32 @@ public class MailService {
|
|
|
101
137
|
context.setVariable(BASE_URL, jHipsterProperties.getMail().getBaseUrl());
|
|
102
138
|
String content = templateEngine.process(templateName, context);
|
|
103
139
|
String subject = messageSource.getMessage(titleKey, null, locale);
|
|
104
|
-
|
|
140
|
+
this.sendEmailSync(user.getEmail(), subject, content, false, true);
|
|
105
141
|
}
|
|
106
142
|
<%_ if (!authenticationTypeOauth2) { _%>
|
|
107
143
|
|
|
144
|
+
<%_ if (!reactive) { _%>
|
|
108
145
|
@Async
|
|
146
|
+
<%_ } _%>
|
|
109
147
|
public void sendActivationEmail(<%= user.persistClass %> user) {
|
|
110
148
|
log.debug("Sending activation email to '{}'", user.getEmail());
|
|
111
|
-
|
|
149
|
+
this.<%- localSendEmailFromTemplateApi %>(user, "mail/activationEmail", "email.activation.title");
|
|
112
150
|
}
|
|
113
151
|
|
|
152
|
+
<%_ if (!reactive) { _%>
|
|
114
153
|
@Async
|
|
154
|
+
<%_ } _%>
|
|
115
155
|
public void sendCreationEmail(<%= user.persistClass %> user) {
|
|
116
156
|
log.debug("Sending creation email to '{}'", user.getEmail());
|
|
117
|
-
|
|
157
|
+
this.<%- localSendEmailFromTemplateApi %>(user, "mail/creationEmail", "email.activation.title");
|
|
118
158
|
}
|
|
119
159
|
|
|
160
|
+
<%_ if (!reactive) { _%>
|
|
120
161
|
@Async
|
|
162
|
+
<%_ } _%>
|
|
121
163
|
public void sendPasswordResetMail(<%= user.persistClass %> user) {
|
|
122
164
|
log.debug("Sending password reset email to '{}'", user.getEmail());
|
|
123
|
-
|
|
165
|
+
this.<%- localSendEmailFromTemplateApi %>(user, "mail/passwordResetEmail", "email.reset.title");
|
|
124
166
|
}
|
|
125
167
|
<%_ } _%>
|
|
126
168
|
}
|
package/dist/generators/server/templates/src/main/java/_package_/web/rest/AccountResource.java.ejs
CHANGED
|
@@ -264,7 +264,7 @@ public class AccountResource {
|
|
|
264
264
|
* @throws IllegalArgumentException if the series couldn't be URL decoded.
|
|
265
265
|
*/
|
|
266
266
|
@DeleteMapping("/account/sessions/{series}")
|
|
267
|
-
public void invalidateSession(@PathVariable String series) {
|
|
267
|
+
public void invalidateSession(@PathVariable("series") String series) {
|
|
268
268
|
String decodedSeries = URLDecoder.decode(series, StandardCharsets.UTF_8);
|
|
269
269
|
SecurityUtils.getCurrentUserLogin()
|
|
270
270
|
.flatMap(userRepository::findOneByLogin)
|
|
@@ -52,21 +52,12 @@ public class LogoutResource {
|
|
|
52
52
|
@AuthenticationPrincipal(expression = "idToken") OidcIdToken idToken) {
|
|
53
53
|
StringBuilder logoutUrl = new StringBuilder();
|
|
54
54
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
logoutUrl.append(issuerUri.endsWith("/") ? issuerUri + "v2/logout" : issuerUri + "/v2/logout");
|
|
58
|
-
} else {
|
|
59
|
-
logoutUrl.append(this.registration.getProviderDetails().getConfigurationMetadata().get("end_session_endpoint").toString());
|
|
60
|
-
}
|
|
61
|
-
|
|
55
|
+
logoutUrl.append(this.registration.getProviderDetails().getConfigurationMetadata().get("end_session_endpoint").toString());
|
|
56
|
+
|
|
62
57
|
String originUrl = request.getHeader(HttpHeaders.ORIGIN);
|
|
63
58
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
} else {
|
|
67
|
-
logoutUrl.append("?id_token_hint=").append(idToken.getTokenValue()).append("&post_logout_redirect_uri=").append(originUrl);
|
|
68
|
-
}
|
|
69
|
-
|
|
59
|
+
logoutUrl.append("?id_token_hint=").append(idToken.getTokenValue()).append("&post_logout_redirect_uri=").append(originUrl);
|
|
60
|
+
|
|
70
61
|
request.getSession().invalidate();
|
|
71
62
|
return ResponseEntity.ok().body(Map.of("logoutUrl", logoutUrl.toString()));
|
|
72
63
|
}
|
|
@@ -59,19 +59,13 @@ public class LogoutResource {
|
|
|
59
59
|
|
|
60
60
|
private Map<String, String> prepareLogoutUri(ServerHttpRequest request, ClientRegistration clientRegistration, OidcIdToken idToken) {
|
|
61
61
|
StringBuilder logoutUrl = new StringBuilder();
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
logoutUrl.append(issuerUri.endsWith("/") ? issuerUri + "v2/logout" : issuerUri + "/v2/logout");
|
|
65
|
-
} else {
|
|
66
|
-
logoutUrl.append(clientRegistration.getProviderDetails().getConfigurationMetadata().get("end_session_endpoint").toString());
|
|
67
|
-
}
|
|
62
|
+
|
|
63
|
+
logoutUrl.append(clientRegistration.getProviderDetails().getConfigurationMetadata().get("end_session_endpoint").toString());
|
|
68
64
|
|
|
69
65
|
String originUrl = request.getHeaders().getOrigin();
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
logoutUrl.append("?id_token_hint=").append(idToken.getTokenValue()).append("&post_logout_redirect_uri=").append(originUrl);
|
|
74
|
-
}
|
|
66
|
+
|
|
67
|
+
logoutUrl.append("?id_token_hint=").append(idToken.getTokenValue()).append("&post_logout_redirect_uri=").append(originUrl);
|
|
68
|
+
|
|
75
69
|
return Map.of("logoutUrl", logoutUrl.toString());
|
|
76
70
|
}
|
|
77
71
|
}
|
|
@@ -59,7 +59,7 @@ import org.springframework.http.server.reactive.ServerHttpRequest;
|
|
|
59
59
|
import org.springframework.web.bind.annotation.*;
|
|
60
60
|
<%_ if (reactive) { _%>
|
|
61
61
|
import org.springframework.web.server.ResponseStatusException;
|
|
62
|
-
import org.springframework.web.util.
|
|
62
|
+
import org.springframework.web.util.ForwardedHeaderUtils;
|
|
63
63
|
import reactor.core.publisher.Flux;
|
|
64
64
|
import reactor.core.publisher.Mono;
|
|
65
65
|
<%_ } else {_%>
|
|
@@ -75,7 +75,6 @@ import java.util.*;
|
|
|
75
75
|
<%_ } _%>
|
|
76
76
|
<%_ if (searchEngineElasticsearch && !reactive) { _%>
|
|
77
77
|
import java.util.stream.StreamSupport;
|
|
78
|
-
import static org.springframework.data.elasticsearch.client.elc.QueryBuilders.*;
|
|
79
78
|
<%_ } _%>
|
|
80
79
|
|
|
81
80
|
@RestController
|
|
@@ -111,7 +110,7 @@ public class PublicUserResource {
|
|
|
111
110
|
}
|
|
112
111
|
|
|
113
112
|
/**
|
|
114
|
-
* {@code GET /users} : get all users with only
|
|
113
|
+
* {@code GET /users} : get all users with only public information - calling this method is allowed for anyone.
|
|
115
114
|
<%_ if (databaseTypeSql || databaseTypeMongodb || databaseTypeNeo4j || databaseTypeCouchbase) { _%>
|
|
116
115
|
*
|
|
117
116
|
<%_ if (reactive) { _%>
|
|
@@ -134,7 +133,7 @@ public class PublicUserResource {
|
|
|
134
133
|
|
|
135
134
|
return userService.countManagedUsers()
|
|
136
135
|
.map(total -> new PageImpl<>(new ArrayList<>(), pageable, total))
|
|
137
|
-
.map(page -> PaginationUtil.generatePaginationHttpHeaders(
|
|
136
|
+
.map(page -> PaginationUtil.generatePaginationHttpHeaders(ForwardedHeaderUtils.adaptFromForwardedHeaders(request.getURI(), request.getHeaders()), page))
|
|
138
137
|
.map(headers -> ResponseEntity.ok().headers(headers).body(userService.getAllPublicUsers(pageable)));
|
|
139
138
|
}
|
|
140
139
|
<%_ } else { _%>
|
|
@@ -176,13 +175,13 @@ public class PublicUserResource {
|
|
|
176
175
|
<%_ if (searchEngineAny) { _%>
|
|
177
176
|
|
|
178
177
|
/**
|
|
179
|
-
* {@code SEARCH /_search
|
|
178
|
+
* {@code SEARCH /users/_search/:query} : search for the User corresponding to the query.
|
|
180
179
|
*
|
|
181
180
|
* @param query the query to search.
|
|
182
181
|
* @return the result of the search.
|
|
183
182
|
*/
|
|
184
|
-
@GetMapping("/_search/
|
|
185
|
-
public <% if(reactive) { %>Mono<<% } %>List<<%= user.dtoClass %>><% if(reactive) { %>><% } %> search(@PathVariable String query) {
|
|
183
|
+
@GetMapping("/users/_search/{query}")
|
|
184
|
+
public <% if(reactive) { %>Mono<<% } %>List<<%= user.dtoClass %>><% if(reactive) { %>><% } %> search(@PathVariable("query") String query) {
|
|
186
185
|
<%_ if (searchEngineElasticsearch) { _%>
|
|
187
186
|
<%_ if (reactive) { _%>
|
|
188
187
|
return userSearchRepository.search(query).map(<%= user.dtoClass %>::new).collectList();
|
package/dist/generators/server/templates/src/main/java/_package_/web/rest/UserResource.java.ejs
CHANGED
|
@@ -62,7 +62,7 @@ import org.springframework.security.access.prepost.PreAuthorize;
|
|
|
62
62
|
import org.springframework.web.bind.annotation.*;
|
|
63
63
|
<%_ if (reactive) { _%>
|
|
64
64
|
import org.springframework.web.server.ResponseStatusException;
|
|
65
|
-
import org.springframework.web.util.
|
|
65
|
+
import org.springframework.web.util.ForwardedHeaderUtils;
|
|
66
66
|
import reactor.core.publisher.Flux;
|
|
67
67
|
import reactor.core.publisher.Mono;
|
|
68
68
|
<%_ } else { _%>
|
|
@@ -83,8 +83,6 @@ import java.util.*;
|
|
|
83
83
|
<%_ if (searchEngineElasticsearch && !reactive) { _%>
|
|
84
84
|
import java.util.stream.Collectors;
|
|
85
85
|
import java.util.stream.StreamSupport;
|
|
86
|
-
|
|
87
|
-
import static org.springframework.data.elasticsearch.client.elc.QueryBuilders.*;
|
|
88
86
|
<%_ } _%>
|
|
89
87
|
|
|
90
88
|
/**
|
|
@@ -272,7 +270,7 @@ public class UserResource {
|
|
|
272
270
|
|
|
273
271
|
return userService.countManagedUsers()
|
|
274
272
|
.map(total -> new PageImpl<>(new ArrayList<>(), pageable, total))
|
|
275
|
-
.map(page -> PaginationUtil.generatePaginationHttpHeaders(
|
|
273
|
+
.map(page -> PaginationUtil.generatePaginationHttpHeaders(ForwardedHeaderUtils.adaptFromForwardedHeaders(request.getURI(), request.getHeaders()), page))
|
|
276
274
|
.map(headers -> ResponseEntity.ok().headers(headers).body(userService.getAllManagedUsers(pageable)));
|
|
277
275
|
<%_ } else { _%>
|
|
278
276
|
public ResponseEntity<List<<%= user.adminUserDto %>>> getAllUsers(@org.springdoc.core.annotations.ParameterObject Pageable pageable) {
|
|
@@ -308,13 +306,13 @@ public class UserResource {
|
|
|
308
306
|
@GetMapping("/users/{login}")
|
|
309
307
|
@PreAuthorize("hasAuthority(\"" + AuthoritiesConstants.ADMIN + "\")")
|
|
310
308
|
<%_ if (reactive) { _%>
|
|
311
|
-
public Mono<<%= user.adminUserDto %>> getUser(@PathVariable String login) {
|
|
309
|
+
public Mono<<%= user.adminUserDto %>> getUser(@PathVariable("login") String login) {
|
|
312
310
|
log.debug("REST request to get User : {}", login);
|
|
313
311
|
return userService.getUserWithAuthoritiesByLogin(login)
|
|
314
312
|
.map(<%= user.adminUserDto %>::new)
|
|
315
313
|
.switchIfEmpty(Mono.error(new ResponseStatusException(HttpStatus.NOT_FOUND)));
|
|
316
314
|
<%_ } else { _%>
|
|
317
|
-
public ResponseEntity<<%= user.adminUserDto %>> getUser(@PathVariable @Pattern(regexp = Constants.LOGIN_REGEX) String login) {
|
|
315
|
+
public ResponseEntity<<%= user.adminUserDto %>> getUser(@PathVariable("login") @Pattern(regexp = Constants.LOGIN_REGEX) String login) {
|
|
318
316
|
log.debug("REST request to get User : {}", login);
|
|
319
317
|
return ResponseUtil.wrapOrNotFound(
|
|
320
318
|
userService.getUserWithAuthoritiesByLogin(login)
|
|
@@ -331,12 +329,12 @@ public class UserResource {
|
|
|
331
329
|
@DeleteMapping("/users/{login}")
|
|
332
330
|
@PreAuthorize("hasAuthority(\"" + AuthoritiesConstants.ADMIN + "\")")
|
|
333
331
|
<%_ if (reactive) { _%>
|
|
334
|
-
public Mono<ResponseEntity<Void>> deleteUser(@PathVariable @Pattern(regexp = Constants.LOGIN_REGEX) String login) {
|
|
332
|
+
public Mono<ResponseEntity<Void>> deleteUser(@PathVariable("login") @Pattern(regexp = Constants.LOGIN_REGEX) String login) {
|
|
335
333
|
log.debug("REST request to delete User: {}", login);
|
|
336
334
|
return userService.deleteUser(login)
|
|
337
335
|
.then(Mono.just(ResponseEntity.noContent().headers(HeaderUtil.createAlert( applicationName, <% if (enableTranslation) { %> "userManagement.deleted"<% } else { %> "A user is deleted with identifier " + login<% } %>, login)).build()));
|
|
338
336
|
<%_ } else { _%>
|
|
339
|
-
public ResponseEntity<Void> deleteUser(@PathVariable @Pattern(regexp = Constants.LOGIN_REGEX) String login) {
|
|
337
|
+
public ResponseEntity<Void> deleteUser(@PathVariable("login") @Pattern(regexp = Constants.LOGIN_REGEX) String login) {
|
|
340
338
|
log.debug("REST request to delete User: {}", login);
|
|
341
339
|
userService.deleteUser(login);
|
|
342
340
|
return ResponseEntity.noContent().headers(HeaderUtil.createAlert(applicationName, <% if (enableTranslation) { %> "userManagement.deleted"<% } else { %> "A user is deleted with identifier " + login<% } %>, login)).build();
|
|
@@ -149,13 +149,10 @@ _%>
|
|
|
149
149
|
|
|
150
150
|
private ProblemDetailWithCause getProblemDetailWithCause(Throwable ex) {
|
|
151
151
|
<%_ if (!skipUserManagement) { _%>
|
|
152
|
-
if(ex instanceof <%= packageName %>.service.
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
return ProblemDetailWithCauseBuilder.instance()
|
|
157
|
-
.withStatus(201).build();
|
|
158
|
-
}
|
|
152
|
+
if(ex instanceof <%= packageName %>.service.UsernameAlreadyUsedException )
|
|
153
|
+
return (ProblemDetailWithCause) new LoginAlreadyUsedException().getBody();
|
|
154
|
+
if(ex instanceof <%= packageName %>.service.EmailAlreadyUsedException )
|
|
155
|
+
return (ProblemDetailWithCause) new EmailAlreadyUsedException().getBody();
|
|
159
156
|
if(ex instanceof <%= packageName %>.service.InvalidPasswordException )
|
|
160
157
|
return (ProblemDetailWithCause) new InvalidPasswordException().getBody();
|
|
161
158
|
|
|
@@ -142,6 +142,10 @@ management:
|
|
|
142
142
|
export:
|
|
143
143
|
enabled: true
|
|
144
144
|
step: 60
|
|
145
|
+
observations:
|
|
146
|
+
key-values:
|
|
147
|
+
application: ${spring.application.name}
|
|
148
|
+
metrics:
|
|
145
149
|
enable:
|
|
146
150
|
http: true
|
|
147
151
|
jvm: true
|
|
@@ -153,13 +157,10 @@ management:
|
|
|
153
157
|
all: true
|
|
154
158
|
percentiles:
|
|
155
159
|
all: 0, 0.5, 0.75, 0.95, 0.99, 1.0
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
request:
|
|
161
|
-
autotime:
|
|
162
|
-
enabled: true
|
|
160
|
+
data:
|
|
161
|
+
repository:
|
|
162
|
+
autotime:
|
|
163
|
+
enabled: true
|
|
163
164
|
|
|
164
165
|
<%_ if (databaseTypeMongodb) { _%>
|
|
165
166
|
mongock:
|
package/dist/generators/server/templates/src/test/java/_package_/TechnicalStructureTest.java.ejs
CHANGED
|
@@ -28,7 +28,7 @@ import static com.tngtech.archunit.core.domain.JavaClass.Predicates.belongToAnyO
|
|
|
28
28
|
import static com.tngtech.archunit.library.Architectures.layeredArchitecture;
|
|
29
29
|
|
|
30
30
|
<%_
|
|
31
|
-
const hasClientLayer =
|
|
31
|
+
const hasClientLayer = feignClient;
|
|
32
32
|
const hasDomainLayer = !databaseTypeNo;
|
|
33
33
|
const hasConstants = !skipUserManagement || databaseTypeSql || databaseTypeMongodb || databaseTypeCouchbase || databaseTypeNeo4j;
|
|
34
34
|
_%>
|
|
@@ -152,9 +152,6 @@ import org.springframework.test.web.servlet.MockMvc;
|
|
|
152
152
|
import org.springframework.transaction.annotation.Transactional;
|
|
153
153
|
<%_ } _%>
|
|
154
154
|
<%_ } _%>
|
|
155
|
-
<%_ if (anyFieldIsBlobDerived) { _%>
|
|
156
|
-
import org.springframework.util.Base64Utils;
|
|
157
|
-
<%_ } _%>
|
|
158
155
|
<%_ if (reactive && (implementsEagerLoadApis || searchEngineElasticsearch)) { _%>
|
|
159
156
|
import reactor.core.publisher.Flux;
|
|
160
157
|
import reactor.core.publisher.Mono;
|
|
@@ -190,6 +187,9 @@ import java.time.temporal.ChronoUnit;
|
|
|
190
187
|
<%_ if (!reactive && implementsEagerLoadApis) { _%>
|
|
191
188
|
import java.util.ArrayList;
|
|
192
189
|
<%_ } _%>
|
|
190
|
+
<%_ if (anyFieldIsBlobDerived) { _%>
|
|
191
|
+
import java.util.Base64;
|
|
192
|
+
<%_ } _%>
|
|
193
193
|
<%_ if (searchEngineElasticsearch && !reactive) { _%>
|
|
194
194
|
import java.util.Collections;
|
|
195
195
|
<%_ if (paginationNo) { _%>
|
|
@@ -433,15 +433,15 @@ if (field.fieldTypeString || field.blobContentTypeText) {
|
|
|
433
433
|
private static final String ENTITY_API_URL = "/api/<%= entityApiUrl %>";
|
|
434
434
|
private static final String ENTITY_API_URL_ID = ENTITY_API_URL + "/{<%= primaryKey.name %>}";
|
|
435
435
|
<%_ if (searchEngineAny) { _%>
|
|
436
|
-
private static final String ENTITY_SEARCH_API_URL = "/api
|
|
436
|
+
private static final String ENTITY_SEARCH_API_URL = "/api/<%= entityApiUrl %>/_search";
|
|
437
437
|
<%_ } _%>
|
|
438
438
|
<%_ if (!embedded && (primaryKey.hasLong || primaryKey.hasInteger)) { _%>
|
|
439
439
|
|
|
440
440
|
private static Random random = new Random();
|
|
441
441
|
<%_ if (primaryKey.hasLong) { _%>
|
|
442
|
-
private static AtomicLong
|
|
442
|
+
private static AtomicLong longCount = new AtomicLong(random.nextInt() + ( 2 * Integer.MAX_VALUE ));
|
|
443
443
|
<%_ } else if (primaryKey.hasInteger) { _%>
|
|
444
|
-
private static AtomicInteger
|
|
444
|
+
private static AtomicInteger intCount = new AtomicInteger(random.nextInt() + ( 2 * Short.MAX_VALUE ));
|
|
445
445
|
<%_ } _%>
|
|
446
446
|
<%_ } _%>
|
|
447
447
|
|
|
@@ -933,7 +933,7 @@ _%>
|
|
|
933
933
|
<%= !reactive ? '.andExpect(' : '.' %>jsonPath("$.[*].<%= field.fieldName %>ContentType").value(hasItem(<%= 'DEFAULT_' + field.fieldNameUnderscored.toUpperCase() %>_CONTENT_TYPE))<%= !reactive ? ')' : '' %>
|
|
934
934
|
<%_ } _%>
|
|
935
935
|
<%= !reactive ? '.andExpect(' : '.' %>jsonPath("$.[*].<%= field.fieldName %>").value(hasItem(<%
|
|
936
|
-
if (field.fieldTypeBinary && !field.blobContentTypeText) { %>
|
|
936
|
+
if (field.fieldTypeBinary && !field.blobContentTypeText) { %>Base64.getEncoder().encodeToString(<% } else
|
|
937
937
|
if (field.fieldTypeZonedDateTime) { %>sameInstant(<% } else
|
|
938
938
|
if (field.fieldTypeBigDecimal) { %>sameNumber(<% } %><%= 'DEFAULT_' + field.fieldNameUnderscored.toUpperCase() %><%
|
|
939
939
|
if (field.fieldTypeBinary && !field.blobContentTypeText) { %><%
|
|
@@ -1020,7 +1020,7 @@ _%>
|
|
|
1020
1020
|
<%= !reactive ? '.andExpect(' : '.' %>jsonPath("$.<%= field.fieldName %>ContentType").value(<%= reactive ? 'is(' : '' %><%= 'DEFAULT_' + field.fieldNameUnderscored.toUpperCase() %>_CONTENT_TYPE))
|
|
1021
1021
|
<%_ } _%>
|
|
1022
1022
|
<%= !reactive ? '.andExpect(' : '.' %>jsonPath("$.<%= field.fieldName %>").value(<%= reactive ? 'is(' : '' %><%
|
|
1023
|
-
if (field.fieldTypeBinary && !field.blobContentTypeText) { %>
|
|
1023
|
+
if (field.fieldTypeBinary && !field.blobContentTypeText) { %>Base64.getEncoder().encodeToString(<% } else
|
|
1024
1024
|
if (field.fieldTypeZonedDateTime) { %>sameInstant(<% } else
|
|
1025
1025
|
if (field.fieldTypeBigDecimal) { %>sameNumber(<% } %><%= 'DEFAULT_' + field.fieldNameUnderscored.toUpperCase() %><%
|
|
1026
1026
|
if (field.fieldTypeBinary && !field.blobContentTypeText) { %><%
|
|
@@ -1259,7 +1259,7 @@ _%>
|
|
|
1259
1259
|
.jsonPath("$.[*].<%= field.fieldName %>ContentType").value(hasItem(<%= 'DEFAULT_' + field.fieldNameUnderscored.toUpperCase() %>_CONTENT_TYPE))
|
|
1260
1260
|
<%_ } _%>
|
|
1261
1261
|
.jsonPath("$.[*].<%= field.fieldName %>").value(hasItem(<% if
|
|
1262
|
-
(field.fieldTypeBinary && !field.blobContentTypeText) { %>
|
|
1262
|
+
(field.fieldTypeBinary && !field.blobContentTypeText) { %>Base64.getEncoder().encodeToString(<% } else
|
|
1263
1263
|
if (field.fieldTypeZonedDateTime) { %>sameInstant(<% } else
|
|
1264
1264
|
if (field.fieldTypeBigDecimal) { %>sameNumber(<% } %><%= 'DEFAULT_' + field.fieldNameUnderscored.toUpperCase() %><%
|
|
1265
1265
|
if (field.fieldTypeBinary && !field.blobContentTypeText) { %><% if (databaseTypeCassandra) { %>.array()<% } %>)<% } else
|
|
@@ -1301,7 +1301,7 @@ _%>
|
|
|
1301
1301
|
.andExpect(jsonPath("$.[*].<%= field.fieldName %>ContentType").value(hasItem(<%= 'DEFAULT_' + field.fieldNameUnderscored.toUpperCase() %>_CONTENT_TYPE)))
|
|
1302
1302
|
<%_ } _%>
|
|
1303
1303
|
.andExpect(jsonPath("$.[*].<%= field.fieldName %>").value(hasItem(<%
|
|
1304
|
-
if (field.fieldTypeBinary && !field.blobContentTypeText) { %>
|
|
1304
|
+
if (field.fieldTypeBinary && !field.blobContentTypeText) { %>Base64.getEncoder().encodeToString(<% } else
|
|
1305
1305
|
if (field.fieldTypeZonedDateTime) { %>sameInstant(<% } else
|
|
1306
1306
|
if (field.fieldTypeBigDecimal) { %>sameNumber(<% } %><%= 'DEFAULT_' + field.fieldNameUnderscored.toUpperCase() %><%
|
|
1307
1307
|
if (field.fieldTypeBinary && !field.blobContentTypeText) { %><%
|
|
@@ -1831,7 +1831,7 @@ _%>
|
|
|
1831
1831
|
<%= !reactive ? '.andExpect(' : '.' %>jsonPath("$.[*].<%= field.fieldName %>ContentType").value(hasItem(<%= 'DEFAULT_' + field.fieldNameUnderscored.toUpperCase() %>_CONTENT_TYPE))<%= !reactive ? ')' : '' %>
|
|
1832
1832
|
<%_ } _%>
|
|
1833
1833
|
<%= !reactive ? '.andExpect(' : '.' %>jsonPath("$.[*].<%= field.fieldName %>").value(hasItem(<%
|
|
1834
|
-
if (field.fieldTypeBinary && !field.blobContentTypeText) { %>
|
|
1834
|
+
if (field.fieldTypeBinary && !field.blobContentTypeText) { %>Base64.getEncoder().encodeToString(<% } else
|
|
1835
1835
|
if (field.fieldTypeZonedDateTime) { %>sameInstant(<% } else
|
|
1836
1836
|
if (field.fieldTypeBigDecimal) { %>sameNumber(<% } %><%= 'DEFAULT_' + field.fieldNameUnderscored.toUpperCase() %><%
|
|
1837
1837
|
if (field.fieldTypeBinary && !field.blobContentTypeText) { %><%
|
package/dist/generators/server/templates/src/test/java/_package_/web/rest/AccountResourceIT.java.ejs
CHANGED
|
@@ -529,14 +529,14 @@ class AccountResourceIT {
|
|
|
529
529
|
.contentType(MediaType.APPLICATION_JSON)
|
|
530
530
|
.bodyValue(TestUtil.convertObjectToJsonBytes(secondUser))
|
|
531
531
|
.exchange()
|
|
532
|
-
.expectStatus().
|
|
532
|
+
.expectStatus().isBadRequest();
|
|
533
533
|
<%_ } else { _%>
|
|
534
534
|
restAccountMockMvc.perform(
|
|
535
535
|
post("/api/register")
|
|
536
536
|
.contentType(MediaType.APPLICATION_JSON)
|
|
537
537
|
.content(TestUtil.convertObjectToJsonBytes(secondUser))<% if (authenticationUsesCsrf) { %>
|
|
538
538
|
.with(csrf())<% } %>)
|
|
539
|
-
.andExpect(status().
|
|
539
|
+
.andExpect(status().is4xxClientError());
|
|
540
540
|
<%_ } _%>
|
|
541
541
|
}
|
|
542
542
|
|
|
@@ -655,14 +655,14 @@ class AccountResourceIT {
|
|
|
655
655
|
.contentType(MediaType.APPLICATION_JSON)
|
|
656
656
|
.bodyValue(TestUtil.convertObjectToJsonBytes(secondUser))
|
|
657
657
|
.exchange()
|
|
658
|
-
.expectStatus().
|
|
658
|
+
.expectStatus().is4xxClientError();
|
|
659
659
|
<%_ } else { _%>
|
|
660
660
|
restAccountMockMvc.perform(
|
|
661
661
|
post("/api/register")
|
|
662
662
|
.contentType(MediaType.APPLICATION_JSON)
|
|
663
663
|
.content(TestUtil.convertObjectToJsonBytes(secondUser))<% if (authenticationUsesCsrf) { %>
|
|
664
664
|
.with(csrf())<% } %>)
|
|
665
|
-
.andExpect(status().
|
|
665
|
+
.andExpect(status().is4xxClientError());
|
|
666
666
|
<%_ } _%>
|
|
667
667
|
}
|
|
668
668
|
|
|
@@ -45,11 +45,11 @@ public class ExceptionTranslatorTestController {
|
|
|
45
45
|
}
|
|
46
46
|
|
|
47
47
|
@GetMapping("/missing-servlet-request-part")
|
|
48
|
-
public void missingServletRequestPartException(@RequestPart String part) {
|
|
48
|
+
public void missingServletRequestPartException(@RequestPart("part") String part) {
|
|
49
49
|
}
|
|
50
50
|
|
|
51
51
|
@GetMapping("/missing-servlet-request-parameter")
|
|
52
|
-
public void missingServletRequestParameterException(@RequestParam String param) {
|
|
52
|
+
public void missingServletRequestParameterException(@RequestParam("param") String param) {
|
|
53
53
|
}
|
|
54
54
|
|
|
55
55
|
@GetMapping("/access-denied")
|
|
@@ -139,7 +139,7 @@ export const getCacheProviderMavenDefinition = (cacheProvider, javaDependencies)
|
|
|
139
139
|
javaxCacheApi,
|
|
140
140
|
{
|
|
141
141
|
groupId: 'org.infinispan',
|
|
142
|
-
artifactId: 'infinispan-hibernate-cache-
|
|
142
|
+
artifactId: 'infinispan-hibernate-cache-v62',
|
|
143
143
|
},
|
|
144
144
|
{
|
|
145
145
|
groupId: 'org.infinispan',
|
|
@@ -24,7 +24,7 @@ dependencies {
|
|
|
24
24
|
implementation "com.hazelcast:hazelcast-spring:${hazelcastSpringVersion}"
|
|
25
25
|
<%_ } _%>
|
|
26
26
|
<%_ if (cacheProviderInfinispan) { _%>
|
|
27
|
-
implementation "org.infinispan:infinispan-hibernate-cache-
|
|
27
|
+
implementation "org.infinispan:infinispan-hibernate-cache-v62"
|
|
28
28
|
implementation "org.infinispan:infinispan-spring-boot3-starter-embedded"
|
|
29
29
|
implementation "org.infinispan:infinispan-commons-jakarta"
|
|
30
30
|
implementation "org.infinispan:infinispan-core-jakarta"
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
package <%= packageName %>.config;
|
|
20
20
|
|
|
21
21
|
import org.hibernate.service.ServiceRegistry;
|
|
22
|
-
import org.infinispan.hibernate.cache.
|
|
22
|
+
import org.infinispan.hibernate.cache.v62.InfinispanRegionFactory;
|
|
23
23
|
import org.infinispan.manager.EmbeddedCacheManager;
|
|
24
24
|
import org.springframework.stereotype.Component;
|
|
25
25
|
|
|
@@ -43,7 +43,7 @@ public class <%= upperFirstCamelCaseBaseName %>KafkaResource {
|
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
@PostMapping("/publish")
|
|
46
|
-
public void publish(@RequestParam String message) {
|
|
46
|
+
public void publish(@RequestParam("message") String message) {
|
|
47
47
|
log.debug("REST request the message : {} to send to Kafka topic ", message);
|
|
48
48
|
streamBridge.send(PRODUCER_BINDING_NAME, message);
|
|
49
49
|
}
|