generator-jhipster 8.7.3 → 8.8.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 +1 -1
- package/dist/cli/environment-builder.d.mts +1 -3
- package/dist/cli/jhipster-command.d.mts +2 -2
- package/dist/cli/program.mjs +2 -1
- package/dist/generators/angular/files-angular.d.ts +2 -0
- package/dist/generators/angular/files-angular.js +39 -4
- package/dist/generators/angular/generator.d.ts +14 -154
- package/dist/generators/angular/generator.js +98 -196
- package/dist/generators/angular/resources/package.json +26 -22
- package/dist/generators/angular/support/path-utils.d.ts +1 -0
- package/dist/generators/angular/support/path-utils.js +1 -0
- package/dist/generators/angular/support/translate-angular.d.ts +3 -2
- package/dist/generators/angular/support/translate-angular.js +2 -10
- package/dist/generators/angular/support/update-languages.d.ts +1 -1
- package/dist/generators/angular/support/update-languages.js +3 -1
- package/dist/generators/angular/templates/angular.json.ejs +7 -1
- package/dist/generators/angular/templates/angular.json.esbuild.ejs +160 -0
- package/dist/generators/angular/templates/build-plugins/define-esbuild.mjs.ejs +10 -0
- package/dist/generators/angular/templates/build-plugins/i18n-esbuild.mjs.ejs +49 -0
- package/dist/generators/angular/templates/eslint.config.js.jhi.angular.ejs +1 -7
- package/dist/generators/angular/templates/jest.conf.js.ejs +1 -2
- package/dist/generators/angular/templates/package.json.ejs +2 -19
- package/dist/generators/angular/templates/postcss.config.json.ejs +5 -0
- package/dist/generators/angular/templates/proxy.conf.json.ejs +27 -0
- package/dist/generators/angular/templates/src/main/webapp/app/account/activate/activate.component.ts.ejs +0 -1
- package/dist/generators/angular/templates/src/main/webapp/app/account/password/password-strength-bar/password-strength-bar.component.ts.ejs +0 -1
- package/dist/generators/angular/templates/src/main/webapp/app/account/password/password.component.ts.ejs +0 -1
- package/dist/generators/angular/templates/src/main/webapp/app/account/password-reset/finish/password-reset-finish.component.ts.ejs +0 -1
- package/dist/generators/angular/templates/src/main/webapp/app/account/password-reset/init/password-reset-init.component.ts.ejs +0 -1
- package/dist/generators/angular/templates/src/main/webapp/app/account/register/register.component.ts.ejs +0 -1
- package/dist/generators/angular/templates/src/main/webapp/app/account/sessions/sessions.component.ts.ejs +0 -1
- package/dist/generators/angular/templates/src/main/webapp/app/account/settings/settings.component.ts.ejs +0 -1
- package/dist/generators/angular/templates/src/main/webapp/app/admin/configuration/configuration.component.html.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/admin/configuration/configuration.component.ts.ejs +0 -1
- package/dist/generators/angular/templates/src/main/webapp/app/admin/docs/docs.component.ts.ejs +0 -1
- package/dist/generators/angular/templates/src/main/webapp/app/admin/gateway/gateway.component.ts.ejs +0 -1
- package/dist/generators/angular/templates/src/main/webapp/app/admin/health/health.component.ts.ejs +1 -2
- package/dist/generators/angular/templates/src/main/webapp/app/admin/health/modal/health-modal.component.ts.ejs +0 -1
- package/dist/generators/angular/templates/src/main/webapp/app/admin/logs/logs.component.html.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/admin/logs/logs.component.ts.ejs +0 -1
- package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/jvm-memory/jvm-memory.component.ts.ejs +0 -1
- package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/jvm-threads/jvm-threads.component.ts.ejs +0 -1
- package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-cache/metrics-cache.component.ts.ejs +0 -1
- package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-datasource/metrics-datasource.component.ts.ejs +0 -1
- package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-endpoints-requests/metrics-endpoints-requests.component.ts.ejs +0 -1
- package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-garbagecollector/metrics-garbagecollector.component.html.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-garbagecollector/metrics-garbagecollector.component.ts.ejs +0 -1
- package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-modal-threads/metrics-modal-threads.component.ts.ejs +0 -1
- package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-request/metrics-request.component.ts.ejs +0 -1
- package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-system/metrics-system.component.ts.ejs +0 -1
- package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/metrics.component.ts.ejs +0 -3
- package/dist/generators/angular/templates/src/main/webapp/app/admin/tracker/tracker.component.ts.ejs +0 -1
- package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/delete/user-management-delete-dialog.component.ts.ejs +0 -1
- package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/detail/user-management-detail.component.spec.ts.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/detail/user-management-detail.component.ts.ejs +0 -1
- package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/list/user-management.component.html.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/list/user-management.component.spec.ts.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/list/user-management.component.ts.ejs +1 -3
- package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/service/user-management.service.spec.ts.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/update/user-management-update.component.spec.ts.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/update/user-management-update.component.ts.ejs +0 -1
- package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/user-management.model.ts.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/app.component.ts.ejs +0 -1
- package/dist/generators/angular/templates/src/main/webapp/app/app.config.ts.ejs +2 -2
- package/dist/generators/angular/templates/src/main/webapp/app/config/translation.config.ts.ejs +16 -1
- package/dist/generators/angular/templates/src/main/webapp/app/core/auth/account.service.spec.ts.ejs +2 -2
- package/dist/generators/angular/templates/src/main/webapp/app/core/auth/account.service.ts.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_.model.ts.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_.test-samples.ts.ejs +5 -5
- package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/delete/_entityFile_-delete-dialog.component.spec.ts.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/delete/_entityFile_-delete-dialog.component.ts.ejs +0 -1
- package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/detail/_entityFile_-detail.component.html.ejs +4 -4
- package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/detail/_entityFile_-detail.component.spec.ts.ejs +2 -2
- package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/detail/_entityFile_-detail.component.ts.ejs +13 -2
- package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/list/_entityFile_.component.html.ejs +5 -7
- package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/list/_entityFile_.component.spec.ts.ejs +4 -5
- package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/list/_entityFile_.component.ts.ejs +27 -17
- package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/route/_entityFile_-routing-resolve.service.spec.ts.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/service/_entityFile_.service.spec.ts.ejs +7 -7
- package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/update/_entityFile_-update.component.html.ejs +3 -3
- package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/update/_entityFile_-update.component.spec.ts.ejs +12 -12
- package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/update/_entityFile_-update.component.ts.ejs +1 -2
- package/dist/generators/angular/templates/src/main/webapp/app/entities/entity-navbar-items.ts.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/home/home.component.ts.ejs +0 -1
- package/dist/generators/angular/templates/src/main/webapp/app/layouts/error/error.component.ts.ejs +0 -1
- package/dist/generators/angular/templates/src/main/webapp/app/layouts/footer/footer.component.ts.ejs +0 -1
- package/dist/generators/angular/templates/src/main/webapp/app/layouts/main/main.component.spec.ts.ejs +7 -5
- package/dist/generators/angular/templates/src/main/webapp/app/layouts/main/main.component.ts.ejs +0 -1
- package/dist/generators/angular/templates/src/main/webapp/app/layouts/navbar/active-menu.directive.ts.ejs +0 -1
- package/dist/generators/angular/templates/src/main/webapp/app/layouts/navbar/navbar.component.ts.ejs +2 -2
- package/dist/generators/angular/templates/src/main/webapp/app/layouts/profiles/page-ribbon.component.ts.ejs +0 -1
- package/dist/generators/angular/templates/src/main/webapp/app/login/login.component.ts.ejs +0 -1
- package/dist/generators/angular/templates/src/main/webapp/app/shared/alert/alert-error.component.ts.ejs +0 -1
- package/dist/generators/angular/templates/src/main/webapp/app/shared/alert/alert.component.ts.ejs +0 -1
- package/dist/generators/angular/templates/src/main/webapp/app/shared/auth/has-any-authority.directive.spec.ts.ejs +2 -2
- package/dist/generators/angular/templates/src/main/webapp/app/shared/auth/has-any-authority.directive.ts.ejs +7 -11
- package/dist/generators/angular/templates/src/main/webapp/app/shared/date/duration.pipe.ts.ejs +0 -1
- package/dist/generators/angular/templates/src/main/webapp/app/shared/date/format-medium-date.pipe.ts.ejs +0 -1
- package/dist/generators/angular/templates/src/main/webapp/app/shared/date/format-medium-datetime.pipe.ts.ejs +0 -1
- package/dist/generators/angular/templates/src/main/webapp/app/shared/filter/filter.component.html.ejs +2 -2
- package/dist/generators/angular/templates/src/main/webapp/app/shared/filter/filter.component.ts.ejs +4 -5
- package/dist/generators/angular/templates/src/main/webapp/app/shared/language/find-language-from-key.pipe.ts.ejs +0 -1
- package/dist/generators/angular/templates/src/main/webapp/app/shared/language/translate.directive.spec.ts.ejs +2 -2
- package/dist/generators/angular/templates/src/main/webapp/app/shared/language/translate.directive.ts.ejs +5 -6
- package/dist/generators/angular/templates/src/main/webapp/app/shared/language/translation.module.ts.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/shared/pagination/item-count.component.ts.ejs +0 -1
- package/dist/generators/angular/templates/src/main/webapp/app/shared/sort/sort-by.directive.spec.ts.ejs +5 -6
- package/dist/generators/angular/templates/src/main/webapp/app/shared/sort/sort-by.directive.ts.ejs +4 -5
- package/dist/generators/angular/templates/src/main/webapp/app/shared/sort/sort.directive.spec.ts.ejs +1 -2
- package/dist/generators/angular/templates/src/main/webapp/app/shared/sort/sort.directive.ts.ejs +8 -13
- package/dist/generators/angular/templates/src/main/webapp/bootstrap.ts.ejs +2 -2
- package/dist/generators/angular/templates/src/main/webapp/declarations.d.ts.ejs +5 -0
- package/dist/generators/angular/templates/src/main/webapp/{app/entities/_entityFolder_/list/pagination-template.ejs → environments/environment.development.ts.ejs} +4 -3
- package/dist/generators/angular/templates/src/main/webapp/environments/environment.ts.ejs +22 -0
- package/dist/generators/angular/templates/src/main/webapp/i18n/index.ts.ejs +14 -0
- package/dist/generators/angular/templates/webpack/environment.js.ejs +0 -1
- package/dist/generators/angular/templates/webpack/webpack.custom.js.ejs +2 -22
- package/dist/generators/angular/types-partial.d.ts +32 -0
- package/dist/generators/angular/types.d.ts +35 -1
- package/dist/generators/app/generator.d.ts +1 -0
- package/dist/generators/app/support/config.d.ts +2 -1
- package/dist/generators/base/shared-data.d.ts +12 -8
- package/dist/generators/base/shared-data.js +14 -4
- package/dist/generators/base/support/index.d.ts +4 -3
- package/dist/generators/base/support/index.js +4 -3
- package/dist/generators/base/support/jhipster7-context.d.ts +1 -1
- package/dist/generators/base/support/jhipster7-context.js +1 -1
- package/dist/generators/base/types.d.ts +8 -2
- package/dist/generators/base-application/generator.d.ts +98 -87
- package/dist/generators/base-application/support/prepare-entity.d.ts +6 -3
- package/dist/generators/base-application/support/prepare-entity.js +37 -40
- package/dist/generators/base-application/support/prepare-field.js +22 -23
- package/dist/generators/base-application/types.d.ts +8 -9
- package/dist/generators/base-core/generator.d.ts +5 -5
- package/dist/generators/base-core/generator.js +8 -7
- package/dist/generators/base-entity-changes/generator.d.ts +2 -4
- package/dist/generators/bootstrap/generator.d.ts +1 -0
- package/dist/generators/bootstrap/generator.js +2 -8
- package/dist/generators/bootstrap/support/eslint-worker.d.ts +1 -1
- package/dist/generators/bootstrap-application/generator.d.ts +1 -0
- package/dist/generators/bootstrap-application/generator.js +1 -1
- package/dist/generators/bootstrap-application-base/generator.d.ts +2 -1
- package/dist/generators/bootstrap-application-base/generator.js +10 -0
- package/dist/generators/bootstrap-application-base/utils.d.ts +4 -71
- package/dist/generators/bootstrap-application-base/utils.js +7 -6
- package/dist/generators/bootstrap-application-client/generator.d.ts +2 -1
- package/dist/generators/bootstrap-application-client/generator.js +16 -9
- package/dist/generators/bootstrap-application-server/generator.d.ts +2 -0
- package/dist/generators/bootstrap-application-server/generator.js +27 -5
- package/dist/generators/bootstrap-workspaces/generator.d.ts +1 -0
- package/dist/generators/ci-cd/generator.d.ts +1 -0
- package/dist/generators/ci-cd/templates/.gitlab-ci.yml.ejs +4 -6
- package/dist/generators/client/command.d.ts +15 -1
- package/dist/generators/client/command.js +15 -1
- package/dist/generators/client/files-common.js +1 -1
- package/dist/generators/client/generator.d.ts +2 -1
- package/dist/generators/client/generator.js +24 -11
- package/dist/generators/client/generators/common/generator.d.ts +1 -0
- package/dist/generators/client/prompts.d.ts +2 -2
- package/dist/generators/client/resources/package.json +5 -5
- package/dist/generators/client/support/config.js +4 -2
- package/dist/generators/client/support/entity-definition.d.ts +2 -5
- package/dist/generators/client/support/entity-definition.js +3 -8
- package/dist/generators/client/support/filter-entities.d.ts +5 -1
- package/dist/generators/client/support/filter-entities.js +4 -2
- package/dist/generators/client/support/prepare-entity.d.ts +20 -1
- package/dist/generators/client/support/prepare-entity.js +30 -19
- package/dist/generators/client/support/template-utils.d.ts +16 -12
- package/dist/generators/client/support/template-utils.js +45 -18
- package/dist/generators/client/support/update-languages.d.ts +4 -4
- package/dist/generators/client/types.d.ts +10 -3
- package/dist/generators/common/files.d.ts +1 -3
- package/dist/generators/common/files.js +3 -3
- package/dist/generators/common/generator.d.ts +2 -4
- package/dist/generators/common/generator.js +17 -15
- package/dist/generators/common/resources/package.json +2 -2
- package/dist/generators/common/templates/sonar-project.properties.ejs +21 -21
- package/dist/generators/cucumber/generator.d.ts +1 -0
- package/dist/generators/cypress/generator.d.ts +1 -0
- package/dist/generators/cypress/generator.js +12 -5
- package/dist/generators/cypress/templates/src/test/javascript/cypress/e2e/account/register-page.cy.ts.ejs +1 -1
- package/dist/generators/cypress/templates/src/test/javascript/cypress/e2e/entity/_entity_.cy.ts.ejs +4 -1
- package/dist/generators/docker/generator.d.ts +1 -0
- package/dist/generators/docker/generator.js +1 -1
- package/dist/generators/docker/templates/docker/couchbase.yml.ejs +2 -2
- package/dist/generators/docker/templates/docker/kafka.yml.ejs +8 -16
- package/dist/generators/docker/templates/docker/mysql.yml.ejs +2 -2
- package/dist/generators/docker-compose/generator.d.ts +1 -0
- package/dist/generators/docker-compose/generator.js +3 -0
- package/dist/generators/docker-compose/templates/README-DOCKER-COMPOSE.md.ejs +0 -1
- package/dist/generators/docker-compose/templates/docker-compose.yml.ejs +7 -9
- package/dist/generators/docker-compose/templates/realm-config/jhipster-realm.json.ejs +1 -3
- package/dist/generators/entities/generator.d.ts +1 -0
- package/dist/generators/entity/generator.d.ts +1 -0
- package/dist/generators/export-jdl/generator.d.ts +1 -0
- package/dist/generators/feign-client/generator.d.ts +1 -0
- package/dist/generators/gatling/generator.d.ts +1 -0
- package/dist/generators/generate-blueprint/command.d.ts +15 -0
- package/dist/generators/generate-blueprint/command.js +15 -0
- package/dist/generators/generate-blueprint/constants.d.ts +2 -2
- package/dist/generators/generate-blueprint/constants.js +1 -2
- package/dist/generators/generate-blueprint/files.js +4 -1
- package/dist/generators/generate-blueprint/generator.d.ts +2 -0
- package/dist/generators/generate-blueprint/generator.js +5 -3
- package/dist/generators/generate-blueprint/resources/package.json +3 -3
- package/dist/generators/generate-blueprint/templates/.blueprint/generate-sample/command.mjs.ejs +10 -1
- package/dist/generators/generate-blueprint/templates/.blueprint/generate-sample/generator.mjs.ejs +64 -30
- package/dist/generators/{angular/templates/src/main/webapp/app/app.constants.ts.ejs → generate-blueprint/templates/.blueprint/github-build-matrix/command.mjs.ejs} +24 -8
- package/dist/generators/generate-blueprint/templates/.blueprint/github-build-matrix/generator.mjs.ejs +23 -7
- package/dist/generators/generate-blueprint/templates/.blueprint/github-build-matrix/generator.spec.mjs.ejs +24 -0
- package/dist/generators/generate-blueprint/templates/.blueprint/github-build-matrix/index.mjs.ejs +1 -0
- package/dist/generators/generate-blueprint/templates/.github/workflows/samples.yml.ejs +14 -8
- package/dist/generators/generate-blueprint/templates/.gitignore.jhi.blueprint.ejs +22 -0
- package/dist/generators/generate-blueprint/templates/generators/generator/generator.spec.mjs.ejs +6 -7
- package/dist/generators/generate-blueprint/templates/vitest.config.ts.ejs +1 -0
- package/dist/generators/generate-blueprint/templates/vitest.test-setup.ts.ejs +7 -0
- package/dist/generators/generator-constants.d.ts +1 -1
- package/dist/generators/generator-constants.js +1 -1
- package/dist/generators/git/generator.d.ts +1 -0
- package/dist/generators/git/templates/.gitignore.jhi.ejs +2 -2
- package/dist/generators/gradle/command.d.ts +31 -20
- package/dist/generators/gradle/generator.d.ts +1 -0
- package/dist/generators/gradle/generators/code-quality/generator.d.ts +1 -0
- package/dist/generators/gradle/generators/jib/generator.d.ts +1 -0
- package/dist/generators/gradle/generators/node-gradle/generator.d.ts +1 -0
- package/dist/generators/gradle/generators/node-gradle/templates/buildSrc/src/main/groovy/jhipster.node-gradle-conventions.gradle.ejs +5 -54
- package/dist/generators/gradle/templates/gradle/wrapper/gradle-wrapper.properties +1 -1
- package/dist/generators/heroku/generator.d.ts +1 -0
- package/dist/generators/info/generator.d.ts +1 -0
- package/dist/generators/info/support/extract-info.d.ts +2 -0
- package/dist/generators/info/support/extract-info.js +25 -12
- package/dist/generators/info/support/index.d.ts +1 -0
- package/dist/generators/info/support/index.js +1 -0
- package/dist/generators/info/support/markdown-content.d.ts +6 -0
- package/dist/generators/info/support/markdown-content.js +14 -0
- package/dist/generators/init/generator.d.ts +1 -0
- package/dist/generators/init/resources/.node-version +1 -1
- package/dist/generators/java/generators/bootstrap/generator.d.ts +2 -0
- package/dist/generators/java/generators/bootstrap/generator.js +13 -0
- package/dist/generators/java/generators/build-tool/generator.d.ts +1 -0
- package/dist/generators/java/generators/code-quality/generator.d.ts +1 -0
- package/dist/generators/java/generators/domain/generator.d.ts +1 -0
- package/dist/generators/java/generators/domain/generator.js +1 -1
- package/dist/generators/java/generators/domain/templates/src/test/java/_package_/domain/AssertUtils.java.ejs +1 -1
- package/dist/generators/java/generators/graalvm/generator.d.ts +3 -1
- package/dist/generators/java/generators/graalvm/generator.js +16 -2
- package/dist/generators/java/generators/graalvm/internal/constants.d.ts +1 -0
- package/dist/generators/java/generators/graalvm/internal/constants.js +2 -0
- package/dist/generators/java/generators/graalvm/internal/maven-definition.d.ts +2 -1
- package/dist/generators/java/generators/graalvm/internal/maven-definition.js +2 -1
- package/dist/generators/java/generators/graalvm/templates/gradle/native.gradle.ejs +5 -1
- package/dist/generators/java/generators/jib/generator.d.ts +1 -0
- package/dist/generators/java/generators/node/generator.d.ts +3 -1
- package/dist/generators/java/generators/node/generator.js +22 -1
- package/dist/generators/java/generators/node/templates/{npmw.cmd → npmw.cmd.ejs} +11 -11
- package/dist/generators/java/generators/node/templates/{npmw → npmw.ejs} +5 -2
- package/dist/generators/java/generators/openapi-generator/generator.d.ts +1 -0
- package/dist/generators/java/generators/server/command.d.ts +5 -0
- package/dist/generators/java/generators/server/command.js +5 -0
- package/dist/generators/java/generators/server/generator.d.ts +24 -0
- package/dist/generators/java/generators/server/generator.js +107 -0
- package/dist/generators/java/generators/server/index.d.ts +20 -0
- package/dist/generators/java/generators/server/index.js +20 -0
- package/dist/generators/java/types.d.ts +3 -0
- package/dist/generators/javascript/generators/bootstrap/generator.d.ts +3 -1
- package/dist/generators/javascript/generators/bootstrap/generator.js +18 -3
- package/dist/generators/javascript/generators/eslint/command.d.ts +12 -20
- package/dist/generators/javascript/generators/eslint/command.js +2 -0
- package/dist/generators/javascript/generators/eslint/generator.d.ts +1 -0
- package/dist/generators/javascript/generators/husky/generator.d.ts +1 -0
- package/dist/generators/javascript/generators/prettier/generator.d.ts +1 -0
- package/dist/generators/javascript/generators/prettier/generator.js +12 -2
- package/dist/generators/javascript/resources/package.json +2 -2
- package/dist/generators/javascript/types.d.ts +24 -9
- package/dist/generators/jdl/generator.d.ts +1 -0
- package/dist/generators/kubernetes/files.js +3 -0
- package/dist/generators/kubernetes/generator.d.ts +49 -0
- package/dist/generators/kubernetes/templates/keycloak/keycloak-configmap.yml.ejs +1 -3
- package/dist/generators/kubernetes/templates/messagebroker/kafka.yml.ejs +16 -55
- package/dist/generators/kubernetes-helm/generator.d.ts +42 -0
- package/dist/generators/kubernetes-helm/templates/csvc/helpers.tpl.ejs +1 -12
- package/dist/generators/kubernetes-helm/templates/csvc/values.yml.ejs +0 -7
- package/dist/generators/kubernetes-knative/generator.d.ts +27 -1
- package/dist/generators/languages/generator.d.ts +5 -6
- package/dist/generators/languages/generator.js +8 -8
- package/dist/generators/languages/prompts.js +8 -5
- package/dist/generators/languages/support/translate.d.ts +4 -3
- package/dist/generators/languages/support/translate.js +1 -19
- package/dist/generators/languages/templates/src/main/webapp/i18n/fr/user-management.json +1 -1
- package/dist/generators/liquibase/generator.d.ts +1 -0
- package/dist/generators/liquibase/generator.js +11 -10
- package/dist/generators/liquibase/support/relationship.d.ts +3 -2
- package/dist/generators/liquibase/templates/src/main/java/_package_/config/LiquibaseConfiguration.java.ejs +10 -9
- package/dist/generators/maven/generator.d.ts +1 -0
- package/dist/generators/maven/generators/code-quality/generator.d.ts +1 -0
- package/dist/generators/maven/generators/frontend-plugin/generator.d.ts +1 -0
- package/dist/generators/maven/generators/frontend-plugin/generator.js +5 -31
- package/dist/generators/maven/generators/jib/generator.d.ts +1 -0
- package/dist/generators/project-name/generator.d.ts +1 -0
- package/dist/generators/react/files-react.js +1 -6
- package/dist/generators/react/generator.d.ts +3 -4
- package/dist/generators/react/generator.js +21 -13
- package/dist/generators/react/resources/package.json +26 -25
- package/dist/generators/react/support/translate-react.d.ts +3 -2
- package/dist/generators/react/support/translate-react.js +2 -2
- package/dist/generators/react/support/update-languages.d.ts +1 -1
- package/dist/generators/react/templates/eslint.config.js.jhi.react.ejs +1 -0
- package/dist/generators/react/templates/jest.conf.js.ejs +1 -1
- package/dist/generators/react/templates/package.json.ejs +1 -2
- package/dist/generators/react/templates/src/main/webapp/app/config/notification-middleware.ts.ejs +4 -4
- package/dist/generators/react/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_-reducer.spec.ts.ejs +3 -3
- package/dist/generators/react/templates/src/main/webapp/app/entities/_entityFolder_/index.tsx.ejs +1 -1
- package/dist/generators/react/templates/src/main/webapp/app/entities/routes.tsx.ejs +1 -1
- package/dist/generators/react/templates/src/main/webapp/app/modules/account/index.tsx.ejs +1 -1
- package/dist/generators/react/templates/src/main/webapp/app/modules/administration/index.tsx.ejs +1 -1
- package/dist/generators/react/templates/src/main/webapp/app/modules/administration/user-management/index.tsx.ejs +1 -1
- package/dist/generators/react/templates/src/main/webapp/app/routes.tsx.ejs +4 -1
- package/dist/generators/react/templates/src/main/webapp/app/shared/auth/private-route.spec.tsx.ejs +1 -1
- package/dist/generators/react/templates/src/main/webapp/app/shared/error/error-boundary-routes.spec.tsx.ejs +1 -1
- package/dist/generators/react/templates/src/main/webapp/app/shared/error/error-boundary-routes.tsx.ejs +2 -1
- package/dist/generators/react/templates/src/main/webapp/app/shared/layout/header/header.spec.tsx.ejs +7 -1
- package/dist/generators/react/templates/src/main/webapp/app/shared/layout/menus/account.spec.tsx.ejs +1 -1
- package/dist/generators/react/templates/tsconfig.test.json.ejs +0 -5
- package/dist/generators/react/templates/webpack/webpack.dev.js.ejs +1 -1
- package/dist/generators/server/generator.d.ts +2 -34
- package/dist/generators/server/generator.js +4 -182
- package/dist/generators/server/resources/Dockerfile +13 -16
- package/dist/generators/server/resources/gradle/libs.versions.toml +8 -8
- package/dist/generators/server/resources/pom.xml +9 -9
- package/dist/generators/server/support/config.d.ts +2 -4
- package/dist/generators/server/support/config.js +0 -6
- package/dist/generators/server/support/prepare-entity.d.ts +2 -1
- package/dist/generators/server/support/prepare-entity.js +3 -2
- package/dist/generators/server/support/prepare-field.d.ts +2 -1
- package/dist/generators/server/support/prepare-field.js +2 -0
- package/dist/generators/server/support/prepare-relationship.d.ts +2 -1
- package/dist/generators/server/support/templates/field-values.d.ts +2 -1
- package/dist/generators/server/support/templates/field-values.js +4 -3
- package/dist/generators/server/support/update-languages.d.ts +9 -2
- package/dist/generators/server/types.d.ts +10 -0
- package/dist/generators/spring-boot/command.d.ts +8 -1
- package/dist/generators/spring-boot/command.js +13 -6
- package/dist/generators/spring-boot/generator.d.ts +2 -11
- package/dist/generators/spring-boot/generator.js +21 -20
- package/dist/generators/spring-boot/prompts.d.ts +2 -6
- package/dist/generators/spring-boot/prompts.js +25 -42
- package/dist/generators/spring-boot/resources/spring-boot-dependencies.pom +191 -252
- package/dist/generators/spring-boot/templates/README.md.jhi.spring-boot.ejs +1 -1
- package/dist/generators/spring-boot/templates/build.gradle.ejs +6 -1
- package/dist/generators/spring-boot/templates/gradle/profile_dev.gradle.ejs +7 -48
- package/dist/generators/spring-boot/templates/gradle/profile_prod.gradle.ejs +1 -1
- package/dist/generators/spring-boot/templates/package.json.ejs +1 -4
- package/dist/generators/spring-boot/templates/pom.xml.ejs +6 -2
- package/dist/generators/spring-boot/templates/settings.gradle.ejs +1 -1
- package/dist/generators/spring-boot/templates/src/main/java/_package_/_entityPackage_/repository/UserRepository.java.ejs +7 -7
- package/dist/generators/spring-boot/templates/src/main/java/_package_/_entityPackage_/service/UserService.java.ejs +10 -4
- package/dist/generators/spring-boot/templates/src/main/java/_package_/_entityPackage_/web/rest/PublicUserResource.java.ejs +2 -0
- package/dist/generators/spring-boot/templates/src/main/java/_package_/_entityPackage_/web/rest/UserResource.java.ejs +1 -1
- package/dist/generators/spring-boot/templates/src/main/java/_package_/config/SecurityConfiguration_imperative.java.ejs +14 -40
- package/dist/generators/spring-boot/templates/src/main/java/_package_/config/SecurityConfiguration_reactive.java.ejs +3 -24
- package/dist/generators/spring-boot/templates/src/main/java/_package_/service/MailService.java.ejs +8 -8
- package/dist/generators/spring-boot/templates/src/main/java/_package_/web/rest/LogoutResource_imperative.java.ejs +4 -4
- package/dist/generators/spring-boot/templates/src/main/java/_package_/web/rest/LogoutResource_reactive.java.ejs +4 -3
- package/dist/generators/spring-boot/templates/src/main/resources/config/application-dev.yml.ejs +1 -1
- package/dist/generators/spring-boot/templates/src/main/resources/config/application-tls.yml.ejs +9 -1
- package/dist/generators/spring-boot/templates/src/test/java/_package_/_entityPackage_/service/UserServiceIT.java.ejs +6 -6
- package/dist/generators/spring-boot/templates/src/test/java/_package_/_entityPackage_/service/criteria/_entityClass_CriteriaTest.java.ejs +5 -4
- package/dist/generators/spring-boot/templates/src/test/java/_package_/_entityPackage_/service/dto/_dtoClass_Test.java.ejs +2 -2
- package/dist/generators/spring-boot/templates/src/test/java/_package_/_entityPackage_/web/rest/UserResourceIT.java.ejs +19 -21
- package/dist/generators/spring-boot/templates/src/test/java/_package_/_entityPackage_/web/rest/_entityClass_ResourceIT.java.ejs +40 -21
- package/dist/generators/spring-boot/templates/src/test/java/_package_/security/DomainUserDetailsServiceIT.java.ejs +3 -3
- package/dist/generators/spring-boot/templates/src/test/java/_package_/security/jwt/JwtAuthenticationTestUtils.java.ejs +1 -0
- package/dist/generators/spring-boot/templates/src/test/java/_package_/security/oauth2/CustomClaimConverterIT.java.ejs +2 -2
- package/dist/generators/spring-boot/templates/src/test/java/_package_/service/MailServiceIT.java.ejs +2 -2
- package/dist/generators/spring-boot/templates/src/test/java/_package_/service/mapper/UserMapperTest.java.ejs +2 -2
- package/dist/generators/spring-boot/templates/src/test/java/_package_/web/rest/AccountResourceIT.java.ejs +19 -19
- package/dist/generators/spring-cache/generator.d.ts +1 -0
- package/dist/generators/spring-cache/generator.js +1 -3
- package/dist/generators/spring-cache/resources/gradle/libs.versions.toml +1 -1
- package/dist/generators/spring-cloud/generators/gateway/generator.d.ts +1 -0
- package/dist/generators/spring-cloud-stream/generator.d.ts +1 -0
- package/dist/generators/spring-cloud-stream/generators/kafka/generator.d.ts +1 -0
- package/dist/generators/spring-cloud-stream/generators/kafka/templates/src/main/java/_package_/broker/KafkaProducer.java.ejs +1 -1
- package/dist/generators/spring-cloud-stream/generators/kafka/templates/src/test/java/_package_/config/KafkaTestContainer.java.ejs +2 -1
- package/dist/generators/spring-cloud-stream/generators/kafka/templates/src/test/java/_package_/config/KafkaTestContainersSpringContextCustomizerFactory.java.ejs +1 -2
- package/dist/generators/spring-cloud-stream/generators/kafka/templates/src/test/java/_package_/web/rest/KafkaResourceIT_imperative.java.ejs +1 -1
- package/dist/generators/spring-cloud-stream/generators/kafka/templates/src/test/java/_package_/web/rest/KafkaResourceIT_reactive.java.ejs +1 -1
- package/dist/generators/spring-cloud-stream/generators/pulsar/generator.d.ts +1 -0
- package/dist/generators/spring-data-cassandra/generator.d.ts +1 -0
- package/dist/generators/spring-data-cassandra/generator.js +1 -1
- package/dist/generators/spring-data-couchbase/generator.d.ts +1 -0
- package/dist/generators/spring-data-couchbase/templates/src/main/java/_package_/_entityPackage_/repository/_entityClass_Repository.java.ejs +1 -1
- package/dist/generators/spring-data-couchbase/templates/src/main/java/_package_/config/DatabaseConfiguration.java.ejs +0 -21
- package/dist/generators/spring-data-couchbase/templates/src/main/java/_package_/repository/JHipsterCouchbaseRepository.java.ejs +1 -1
- package/dist/generators/spring-data-elasticsearch/generator.d.ts +1 -0
- package/dist/generators/spring-data-mongodb/generator.d.ts +1 -0
- package/dist/generators/spring-data-neo4j/generator.d.ts +1 -0
- package/dist/generators/spring-data-relational/generator.d.ts +2 -1
- package/dist/generators/spring-data-relational/generator.js +6 -4
- package/dist/generators/spring-data-relational/support/database-data.js +0 -3
- package/dist/generators/spring-data-relational/templates/src/main/java/_package_/repository/EntityManager_reactive.java.ejs +1 -2
- package/dist/generators/spring-websocket/generator.d.ts +1 -0
- package/dist/generators/upgrade/generator.d.ts +1 -0
- package/dist/generators/vue/files-vue.js +0 -9
- package/dist/generators/vue/generator.d.ts +4 -4
- package/dist/generators/vue/generator.js +47 -25
- package/dist/generators/vue/resources/package.json +28 -29
- package/dist/generators/vue/support/translate-vue.d.ts +4 -4
- package/dist/generators/vue/support/translate-vue.js +1 -1
- package/dist/generators/vue/support/update-languages.d.ts +1 -1
- package/dist/generators/vue/templates/package.json.ejs +0 -2
- package/dist/generators/vue/templates/src/main/webapp/app/admin/user-management/user-management-edit.component.spec.ts.ejs +1 -1
- package/dist/generators/vue/templates/src/main/webapp/app/admin/user-management/user-management-view.component.spec.ts.ejs +1 -1
- package/dist/generators/vue/templates/src/main/webapp/app/admin/user-management/user-management.component.spec.ts.ejs +1 -1
- package/dist/generators/vue/templates/src/main/webapp/app/core/jhi-navbar/jhi-navbar.component.spec.ts.ejs +7 -0
- package/dist/generators/vue/templates/src/main/webapp/app/core/jhi-navbar/jhi-navbar.component.ts.ejs +3 -6
- package/dist/generators/vue/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_-details.component.spec.ts.ejs +1 -1
- 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_.component.spec.ts.ejs +1 -1
- package/dist/generators/vue/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_.service.spec.ts.ejs +3 -3
- package/dist/generators/vue/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_.service.ts.ejs +2 -2
- package/dist/generators/vue/templates/src/main/webapp/app/main.ts.ejs +15 -0
- package/dist/generators/vue/templates/src/main/webapp/app/router/index.ts.ejs +2 -6
- package/dist/generators/vue/templates/vite.config.mts.ejs +1 -1
- package/dist/generators/vue/templates/vitest.config.mts.ejs +0 -7
- package/dist/generators/vue/templates/webpack/webpack.dev.js.ejs +1 -1
- package/dist/generators/workspaces/generator.d.ts +1 -0
- package/dist/lib/command/converter.d.ts +2 -2
- package/dist/lib/command/load.js +8 -25
- package/dist/lib/command/types.d.ts +9 -7
- package/dist/lib/internal/config-def.js +2 -8
- package/dist/lib/jdl/core/models/jdl-application.d.ts +1 -1
- package/dist/lib/jhipster/default-application-options.d.ts +7 -4
- package/dist/lib/jhipster/default-application-options.js +11 -3
- package/dist/lib/testing/github-group.d.ts +1 -1
- package/dist/lib/testing/github-group.js +5 -3
- package/dist/lib/testing/github.d.ts +5 -1
- package/dist/lib/testing/github.js +18 -5
- package/dist/lib/testing/helpers.d.ts +14 -1
- package/dist/lib/testing/helpers.js +34 -2
- package/dist/lib/testing/sample-config.js +2 -2
- package/dist/lib/testing/support/entity-samples.d.ts +29 -29
- package/dist/lib/testing/support/entity-samples.js +2 -2
- package/dist/lib/types/application/application.d.ts +4 -2
- package/dist/lib/types/application/entity.d.ts +47 -9
- package/dist/lib/types/application/field.d.ts +11 -2
- package/dist/lib/types/application/property.d.ts +10 -0
- package/dist/lib/types/application/relationship.d.ts +5 -1
- package/dist/lib/types/application/tasks.d.ts +14 -4
- package/dist/lib/types/base/entity.d.ts +11 -1
- package/dist/lib/types/base/field.d.ts +6 -2
- package/dist/lib/types/base/property.d.ts +6 -0
- package/dist/lib/types/base/relationship.d.ts +3 -1
- package/dist/lib/types/base/translation.d.ts +1 -0
- package/dist/lib/utils/derived-property.d.ts +6 -0
- package/dist/lib/utils/derived-property.js +27 -0
- package/dist/lib/utils/object.d.ts +4 -4
- package/dist/lib/utils/yo-rc.d.ts +22 -13
- package/package.json +37 -37
- package/dist/generators/angular/types-export.d.ts +0 -1
- package/dist/generators/app/types-export.d.ts +0 -1
- package/dist/generators/base/types-export.d.ts +0 -4
- package/dist/generators/base-application/types-export.d.ts +0 -6
- package/dist/generators/base-core/types-export.d.ts +0 -1
- package/dist/generators/base-entity-changes/types-export.d.ts +0 -1
- package/dist/generators/bootstrap/types-export.d.ts +0 -1
- package/dist/generators/bootstrap-application/types-export.d.ts +0 -1
- package/dist/generators/bootstrap-application-base/types-export.d.ts +0 -1
- package/dist/generators/bootstrap-application-client/types-export.d.ts +0 -1
- package/dist/generators/bootstrap-application-server/types-export.d.ts +0 -1
- package/dist/generators/ci-cd/types-export.d.ts +0 -1
- package/dist/generators/client/types-export.d.ts +0 -1
- package/dist/generators/common/types-export.d.ts +0 -1
- package/dist/generators/cucumber/types-export.d.ts +0 -1
- package/dist/generators/cypress/types-export.d.ts +0 -1
- package/dist/generators/docker/types-export.d.ts +0 -1
- package/dist/generators/docker-compose/types-export.d.ts +0 -1
- package/dist/generators/entities/types-export.d.ts +0 -1
- package/dist/generators/entity/types-export.d.ts +0 -1
- package/dist/generators/export-jdl/types-export.d.ts +0 -1
- package/dist/generators/feign-client/types-export.d.ts +0 -1
- package/dist/generators/gatling/types-export.d.ts +0 -1
- package/dist/generators/generate-blueprint/templates/.blueprint/github-build-matrix/build-matrix.mjs.ejs +0 -22
- package/dist/generators/generate-blueprint/types-export.d.ts +0 -1
- package/dist/generators/git/types-export.d.ts +0 -1
- package/dist/generators/gradle/types-export.d.ts +0 -1
- package/dist/generators/heroku/types-export.d.ts +0 -1
- package/dist/generators/info/types-export.d.ts +0 -1
- package/dist/generators/init/types-export.d.ts +0 -1
- package/dist/generators/java/types-export.d.ts +0 -1
- package/dist/generators/jdl/types-export.d.ts +0 -1
- package/dist/generators/kubernetes/types-export.d.ts +0 -1
- package/dist/generators/kubernetes-helm/types-export.d.ts +0 -1
- package/dist/generators/kubernetes-knative/types-export.d.ts +0 -1
- package/dist/generators/languages/types-export.d.ts +0 -1
- package/dist/generators/liquibase/types-export.d.ts +0 -1
- package/dist/generators/maven/types-export.d.ts +0 -1
- package/dist/generators/project-name/types-export.d.ts +0 -1
- package/dist/generators/react/templates/src/main/webapp/microfrontends/entities-menu.tsx.ejs +0 -3
- package/dist/generators/react/templates/src/main/webapp/microfrontends/entities-routes.tsx.ejs +0 -3
- package/dist/generators/react/types-export.d.ts +0 -1
- package/dist/generators/server/types-export.d.ts +0 -1
- package/dist/generators/spring-boot/types-export.d.ts +0 -1
- package/dist/generators/spring-cache/types-export.d.ts +0 -1
- package/dist/generators/spring-cloud-stream/types-export.d.ts +0 -1
- package/dist/generators/spring-data-cassandra/types-export.d.ts +0 -1
- package/dist/generators/spring-data-couchbase/types-export.d.ts +0 -1
- package/dist/generators/spring-data-elasticsearch/types-export.d.ts +0 -1
- package/dist/generators/spring-data-mongodb/types-export.d.ts +0 -1
- package/dist/generators/spring-data-neo4j/types-export.d.ts +0 -1
- package/dist/generators/spring-data-relational/types-export.d.ts +0 -1
- package/dist/generators/spring-websocket/types-export.d.ts +0 -1
- package/dist/generators/upgrade/types-export.d.ts +0 -1
- package/dist/generators/vue/templates/src/main/webapp/microfrontends/entities-menu-test.vue.ejs +0 -7
- package/dist/generators/vue/templates/src/main/webapp/microfrontends/entities-menu.component-test.ts.ejs +0 -6
- package/dist/generators/vue/templates/src/main/webapp/microfrontends/entities-router-test.ts.ejs +0 -1
- package/dist/generators/vue/types-export.d.ts +0 -1
- package/dist/generators/workspaces/types-export.d.ts +0 -1
|
@@ -345,7 +345,7 @@ To stop and remove the containers, run:
|
|
|
345
345
|
docker compose -f <%- dockerServicesDir %>services.yml down
|
|
346
346
|
```
|
|
347
347
|
|
|
348
|
-
[Spring Docker Compose Integration](https://docs.spring.io/spring-boot/reference/features/dev-services.html) is
|
|
348
|
+
[Spring Docker Compose Integration](https://docs.spring.io/spring-boot/reference/features/dev-services.html) is enabled by default. It's possible to disable it in application.yml:
|
|
349
349
|
|
|
350
350
|
```yaml
|
|
351
351
|
spring:
|
|
@@ -264,10 +264,15 @@ task cleanResources(type: Delete) {
|
|
|
264
264
|
delete "build/resources"
|
|
265
265
|
}
|
|
266
266
|
|
|
267
|
-
<%_ if (embeddableLaunchScript) { _%>
|
|
267
|
+
<%_ if ( embeddableLaunchScript || databaseTypeCouchbase ) { _%>
|
|
268
268
|
|
|
269
269
|
bootJar {
|
|
270
|
+
<%_ if ( databaseTypeCouchbase ) { _%>
|
|
271
|
+
loaderImplementation = org.springframework.boot.loader.tools.LoaderImplementation.CLASSIC
|
|
272
|
+
<%_ } _%>
|
|
273
|
+
<%_ if ( embeddableLaunchScript ) { _%>
|
|
270
274
|
launchScript()
|
|
275
|
+
<%_ } _%>
|
|
271
276
|
}
|
|
272
277
|
<%_ } _%>
|
|
273
278
|
|
|
@@ -51,59 +51,18 @@ bootRun {
|
|
|
51
51
|
<%_ if (!skipClient) { _%>
|
|
52
52
|
task webapp(type: NpmTask) {
|
|
53
53
|
inputs.property('appVersion', project.version)
|
|
54
|
-
inputs.files("package-lock.json")
|
|
55
|
-
.withPropertyName('package-lock')
|
|
56
|
-
.withPathSensitivity(PathSensitivity.RELATIVE)
|
|
57
54
|
inputs.files("build.gradle")
|
|
58
55
|
.withPropertyName('build.gradle')
|
|
59
56
|
.withPathSensitivity(PathSensitivity.RELATIVE)
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
.withPropertyName('angular.json')
|
|
63
|
-
.withPathSensitivity(PathSensitivity.RELATIVE)
|
|
64
|
-
inputs.files("tsconfig.json", "tsconfig.app.json")
|
|
65
|
-
.withPropertyName("tsconfig")
|
|
66
|
-
.withPathSensitivity(PathSensitivity.RELATIVE)
|
|
67
|
-
inputs.dir("<%= CLIENT_WEBPACK_DIR %>")
|
|
68
|
-
.withPropertyName("<%= CLIENT_WEBPACK_DIR %>")
|
|
69
|
-
.withPathSensitivity(PathSensitivity.RELATIVE)
|
|
70
|
-
<%_ } _%>
|
|
71
|
-
inputs.dir("<%= clientSrcDir %>")
|
|
72
|
-
.withPropertyName("webapp-source-dir")
|
|
73
|
-
.withPathSensitivity(PathSensitivity.RELATIVE)
|
|
74
|
-
<%_ if (clientFrameworkReact) { _%>
|
|
75
|
-
inputs.files("tsconfig.json")
|
|
76
|
-
.withPropertyName("tsconfig")
|
|
77
|
-
.withPathSensitivity(PathSensitivity.RELATIVE)
|
|
78
|
-
|
|
79
|
-
def webpackDevFiles = fileTree("<%= CLIENT_WEBPACK_DIR %>")
|
|
80
|
-
webpackDevFiles.exclude("webpack.prod.js")
|
|
81
|
-
inputs.files(webpackDevFiles)
|
|
82
|
-
.withPropertyName("webpack-dir")
|
|
83
|
-
.withPathSensitivity(PathSensitivity.RELATIVE)
|
|
84
|
-
<%_ } _%>
|
|
85
|
-
<%_ if (clientFrameworkVue) { _%>
|
|
86
|
-
inputs.files("tsconfig.json", "tsconfig.app.json")
|
|
87
|
-
.withPropertyName("tsconfig")
|
|
88
|
-
.withPathSensitivity(PathSensitivity.RELATIVE)
|
|
89
|
-
|
|
90
|
-
inputs.files(".postcssrc")
|
|
91
|
-
.withPropertyName("postcssrc")
|
|
57
|
+
inputs.files(<%- javaNodeBuildPaths.filter(file => !file.endsWith('/')).map(file => `'${file}'`).join(', ') %>)
|
|
58
|
+
.withPropertyName('<%= clientFramework %>-build')
|
|
92
59
|
.withPathSensitivity(PathSensitivity.RELATIVE)
|
|
93
|
-
<%_
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
webpackDevFiles.exclude("webpack.prod.js")
|
|
97
|
-
inputs.files(webpackDevFiles)
|
|
98
|
-
.withPropertyName("webpack-dir")
|
|
99
|
-
.withPathSensitivity(PathSensitivity.RELATIVE)
|
|
100
|
-
<%_ } else { _%>
|
|
101
|
-
|
|
102
|
-
inputs.files("vite.config.ts")
|
|
103
|
-
.withPropertyName("vite")
|
|
60
|
+
<%_ for (const file of javaNodeBuildPaths.filter(file => file.endsWith('/'))) { _%>
|
|
61
|
+
inputs.dir("<%= file %>")
|
|
62
|
+
.withPropertyName("<%= file %>")
|
|
104
63
|
.withPathSensitivity(PathSensitivity.RELATIVE)
|
|
105
64
|
<%_ } _%>
|
|
106
|
-
|
|
65
|
+
|
|
107
66
|
outputs.dir("<%= clientDistDir %>")
|
|
108
67
|
.withPropertyName("webapp-build-dir")
|
|
109
68
|
|
|
@@ -149,7 +108,7 @@ task integrationTest(type: Test) {
|
|
|
149
108
|
events 'FAILED', 'SKIPPED'
|
|
150
109
|
exceptionFormat "full"
|
|
151
110
|
}
|
|
152
|
-
systemProperty('spring.profiles.active', 'testdev')
|
|
111
|
+
systemProperty('spring.profiles.active', 'test,testdev')
|
|
153
112
|
systemProperty('java.security.egd', 'file:/dev/./urandom')
|
|
154
113
|
// uncomment if the tests reports are not generated
|
|
155
114
|
// see https://github.com/jhipster/generator-jhipster/pull/2771 and https://github.com/jhipster/generator-jhipster/pull/4484
|
|
@@ -82,7 +82,7 @@ task integrationTest(type: Test) {
|
|
|
82
82
|
events 'FAILED', 'SKIPPED'
|
|
83
83
|
exceptionFormat "full"
|
|
84
84
|
}
|
|
85
|
-
systemProperty('spring.profiles.active', 'testprod')
|
|
85
|
+
systemProperty('spring.profiles.active', 'test,testprod')
|
|
86
86
|
systemProperty('java.security.egd', 'file:/dev/./urandom')
|
|
87
87
|
// uncomment if the tests reports are not generated
|
|
88
88
|
// see https://github.com/jhipster/generator-jhipster/pull/2771 and https://github.com/jhipster/generator-jhipster/pull/4484
|
|
@@ -31,8 +31,5 @@
|
|
|
31
31
|
"config": {
|
|
32
32
|
"default_environment": "prod"
|
|
33
33
|
},
|
|
34
|
-
"scripts": {
|
|
35
|
-
"prettier:check": "prettier --check \"{,src/**/,.blueprint/**/}*.{<%= prettierExtensions %>}\"",
|
|
36
|
-
"prettier:format": "prettier --write \"{,src/**/,.blueprint/**/}*.{<%= prettierExtensions %>}\""
|
|
37
|
-
}
|
|
34
|
+
"scripts": {}
|
|
38
35
|
}
|
|
@@ -42,6 +42,7 @@
|
|
|
42
42
|
Build properties
|
|
43
43
|
The spring-boot version should match the one managed by https://mvnrepository.com/artifact/tech.jhipster/jhipster-dependencies/${jhipster-dependencies.version}
|
|
44
44
|
-->
|
|
45
|
+
<spring.profiles.active>dev</spring.profiles.active>
|
|
45
46
|
<maven.version>3.2.5</maven.version>
|
|
46
47
|
<resource.delimiter>@</resource.delimiter>
|
|
47
48
|
<java.version><%= JAVA_VERSION %></java.version>
|
|
@@ -527,6 +528,9 @@
|
|
|
527
528
|
</executions>
|
|
528
529
|
<configuration>
|
|
529
530
|
<mainClass>${start-class}</mainClass>
|
|
531
|
+
<%_ if (databaseTypeCouchbase) { _%>
|
|
532
|
+
<loaderImplementation>CLASSIC</loaderImplementation>
|
|
533
|
+
<%_ } _%>
|
|
530
534
|
<%_ if (embeddableLaunchScript) { _%>
|
|
531
535
|
<executable>true</executable>
|
|
532
536
|
<%_ } _%>
|
|
@@ -611,7 +615,7 @@
|
|
|
611
615
|
<properties>
|
|
612
616
|
<!-- default Spring profiles -->
|
|
613
617
|
<spring.profiles.active>dev${profile.tls}<%_ if (databaseMigrationLiquibase) { _%>${profile.no-liquibase}<%_ } _%></spring.profiles.active>
|
|
614
|
-
<profile.test>testdev</profile.test>
|
|
618
|
+
<profile.test>test,testdev</profile.test>
|
|
615
619
|
</properties>
|
|
616
620
|
<dependencies>
|
|
617
621
|
<dependency>
|
|
@@ -626,7 +630,7 @@
|
|
|
626
630
|
<properties>
|
|
627
631
|
<!-- default Spring profiles -->
|
|
628
632
|
<spring.profiles.active>prod${profile.api-docs}${profile.tls}${profile.e2e}<%_ if (databaseMigrationLiquibase) { _%>${profile.no-liquibase}<%_ } _%></spring.profiles.active>
|
|
629
|
-
<profile.test>testprod</profile.test>
|
|
633
|
+
<profile.test>test,testprod</profile.test>
|
|
630
634
|
</properties>
|
|
631
635
|
<build>
|
|
632
636
|
<plugins>
|
|
@@ -32,7 +32,7 @@ pluginManagement {
|
|
|
32
32
|
mavenCentral()
|
|
33
33
|
}
|
|
34
34
|
dependencies {
|
|
35
|
-
classpath group: 'org.liquibase', name: 'liquibase-core', version: "${
|
|
35
|
+
classpath group: 'org.liquibase', name: 'liquibase-core', version: "${liquibaseVersion}"
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
38
|
<%_ } _%>
|
|
@@ -203,7 +203,7 @@ public interface UserRepository extends <% if (databaseTypeSql) { %>JpaRepositor
|
|
|
203
203
|
<%_ if (!authenticationTypeOauth2) { _%>
|
|
204
204
|
<%_ if (databaseTypeCouchbase || databaseTypeMongodb || databaseTypeNeo4j) { _%>
|
|
205
205
|
<%_ if (cacheProviderAny) { _%>
|
|
206
|
-
@Cacheable(cacheNames = USERS_BY_EMAIL_CACHE)
|
|
206
|
+
@Cacheable(cacheNames = USERS_BY_EMAIL_CACHE, unless="#result == null")
|
|
207
207
|
<%_ } _%>
|
|
208
208
|
<%_ } _%>
|
|
209
209
|
<% if (databaseTypeCouchbase) { %>default <% } %><%= optionalOrMono %><<%= user.persistClass %>> findOneByEmailIgnoreCase(String email)<% if (!databaseTypeCouchbase) { %>;<% } else { %> {
|
|
@@ -219,14 +219,14 @@ public interface UserRepository extends <% if (databaseTypeSql) { %>JpaRepositor
|
|
|
219
219
|
<%_ } _%>
|
|
220
220
|
<%_ if (databaseTypeCouchbase) { _%>
|
|
221
221
|
<%_ if (cacheProviderAny) { _%>
|
|
222
|
-
@Cacheable(cacheNames = USERS_BY_LOGIN_CACHE)
|
|
222
|
+
@Cacheable(cacheNames = USERS_BY_LOGIN_CACHE, unless="#result == null")
|
|
223
223
|
<%_ } _%>
|
|
224
224
|
default <%= optionalOrMono %><<%= user.persistClass %>> findOneByLogin(String login) {
|
|
225
225
|
return findById(login);
|
|
226
226
|
}
|
|
227
227
|
<%_ } else if (databaseTypeMongodb || databaseTypeNeo4j) { _%>
|
|
228
228
|
<%_ if (cacheProviderAny) { _%>
|
|
229
|
-
@Cacheable(cacheNames = USERS_BY_LOGIN_CACHE)
|
|
229
|
+
@Cacheable(cacheNames = USERS_BY_LOGIN_CACHE, unless="#result == null")
|
|
230
230
|
<%_ } _%>
|
|
231
231
|
<%= optionalOrMono %><<%= user.persistClass %>> findOneByLogin(String login);
|
|
232
232
|
<%_ } else { _%>
|
|
@@ -241,14 +241,14 @@ public interface UserRepository extends <% if (databaseTypeSql) { %>JpaRepositor
|
|
|
241
241
|
<%_ if (databaseTypeSql) { _%>
|
|
242
242
|
@EntityGraph(attributePaths = "authorities")
|
|
243
243
|
<%_ if (cacheProviderAny) { _%>
|
|
244
|
-
@Cacheable(cacheNames = USERS_BY_LOGIN_CACHE)
|
|
244
|
+
@Cacheable(cacheNames = USERS_BY_LOGIN_CACHE, unless="#result == null")
|
|
245
245
|
<%_ } _%>
|
|
246
246
|
Optional<<%= user.persistClass %>> findOneWithAuthoritiesByLogin(String login);
|
|
247
247
|
|
|
248
248
|
<%_ if (!authenticationTypeOauth2) { _%>
|
|
249
249
|
@EntityGraph(attributePaths = "authorities")
|
|
250
250
|
<%_ if (cacheProviderAny) { _%>
|
|
251
|
-
@Cacheable(cacheNames = USERS_BY_EMAIL_CACHE)
|
|
251
|
+
@Cacheable(cacheNames = USERS_BY_EMAIL_CACHE, unless="#result == null")
|
|
252
252
|
<%_ } _%>
|
|
253
253
|
Optional<<%= user.persistClass %>> findOneWithAuthoritiesByEmailIgnoreCase(String email);
|
|
254
254
|
|
|
@@ -609,7 +609,7 @@ public class UserRepository {
|
|
|
609
609
|
}
|
|
610
610
|
|
|
611
611
|
<%_ if (cacheProviderAny) { _%>
|
|
612
|
-
@Cacheable(cacheNames = USERS_BY_EMAIL_CACHE)
|
|
612
|
+
@Cacheable(cacheNames = USERS_BY_EMAIL_CACHE, unless="#result == null")
|
|
613
613
|
<%_ } _%>
|
|
614
614
|
public <%= optionalOrMono %><<%= user.persistClass %>> findOneByEmailIgnoreCase(String email) {
|
|
615
615
|
BoundStatement stmt = findOneByEmailStmt.bind().setString("email", email.toLowerCase());
|
|
@@ -617,7 +617,7 @@ public class UserRepository {
|
|
|
617
617
|
}
|
|
618
618
|
|
|
619
619
|
<%_ if (cacheProviderAny) { _%>
|
|
620
|
-
@Cacheable(cacheNames = USERS_BY_LOGIN_CACHE)
|
|
620
|
+
@Cacheable(cacheNames = USERS_BY_LOGIN_CACHE, unless="#result == null")
|
|
621
621
|
<%_ } _%>
|
|
622
622
|
public <%= optionalOrMono %><<%= user.persistClass %>> findOneByLogin(String login) {
|
|
623
623
|
BoundStatement stmt = findOneByLoginStmt.bind().setString("login", login);
|
|
@@ -54,6 +54,9 @@ import org.slf4j.LoggerFactory;
|
|
|
54
54
|
<%_ } _%>
|
|
55
55
|
<%_ if (cacheProviderAny) { _%>
|
|
56
56
|
import org.springframework.cache.CacheManager;
|
|
57
|
+
<%_ if (databaseTypeCouchbase) { _%>
|
|
58
|
+
import org.springframework.cache.annotation.CacheEvict;
|
|
59
|
+
<%_ } _%>
|
|
57
60
|
<%_ } _%>
|
|
58
61
|
<%_ if (databaseTypeSql || databaseTypeMongodb || databaseTypeNeo4j || databaseTypeCouchbase) { _%>
|
|
59
62
|
<%_ if (!reactive) { _%>
|
|
@@ -573,6 +576,9 @@ public class UserService {
|
|
|
573
576
|
.map(<%= user.adminUserDto %>::new);
|
|
574
577
|
}
|
|
575
578
|
|
|
579
|
+
<%_ if (databaseTypeCouchbase && cacheProviderAny) { _%>
|
|
580
|
+
@CacheEvict(cacheNames = UserRepository.USERS_BY_LOGIN_CACHE, key = "#login")
|
|
581
|
+
<%_ } _%>
|
|
576
582
|
<%_ if (reactive) { _%>
|
|
577
583
|
<%_ if (databaseTypeSql) { _%>
|
|
578
584
|
@Transactional
|
|
@@ -814,7 +820,7 @@ public class UserService {
|
|
|
814
820
|
* Persistent Token are used for providing automatic authentication, they should be automatically deleted after
|
|
815
821
|
* 30 days.
|
|
816
822
|
* <p>
|
|
817
|
-
* This is scheduled to get fired
|
|
823
|
+
* This is scheduled to get fired every day, at midnight.
|
|
818
824
|
*/
|
|
819
825
|
@Scheduled(cron = "0 0 0 * * ?")
|
|
820
826
|
public void removeOldPersistentTokens() {
|
|
@@ -832,7 +838,7 @@ public class UserService {
|
|
|
832
838
|
/**
|
|
833
839
|
* Not activated users should be automatically deleted after 3 days.
|
|
834
840
|
* <p>
|
|
835
|
-
* This is scheduled to get fired
|
|
841
|
+
* This is scheduled to get fired every day, at 01:00 (am).
|
|
836
842
|
*/
|
|
837
843
|
@Scheduled(cron = "0 0 1 * * ?")
|
|
838
844
|
public void removeNotActivatedUsers() {
|
|
@@ -1091,9 +1097,9 @@ public class UserService {
|
|
|
1091
1097
|
<%_ if (cacheProviderAny && !databaseTypeNo) { _%>
|
|
1092
1098
|
|
|
1093
1099
|
private void clearUserCaches(<%= user.persistClass %> user) {
|
|
1094
|
-
Objects.requireNonNull(cacheManager.getCache(UserRepository.USERS_BY_LOGIN_CACHE)).
|
|
1100
|
+
Objects.requireNonNull(cacheManager.getCache(UserRepository.USERS_BY_LOGIN_CACHE)).evictIfPresent(user.getLogin());
|
|
1095
1101
|
if (user.getEmail() != null) {
|
|
1096
|
-
Objects.requireNonNull(cacheManager.getCache(UserRepository.USERS_BY_EMAIL_CACHE)).
|
|
1102
|
+
Objects.requireNonNull(cacheManager.getCache(UserRepository.USERS_BY_EMAIL_CACHE)).evictIfPresent(user.getEmail());
|
|
1097
1103
|
}
|
|
1098
1104
|
}
|
|
1099
1105
|
<%_ } _%>
|
|
@@ -29,7 +29,9 @@ import java.util.stream.StreamSupport;
|
|
|
29
29
|
<%_ } _%>
|
|
30
30
|
<%_ if (!authenticationTypeOauth2) { _%>
|
|
31
31
|
import org.springframework.data.domain.Sort;
|
|
32
|
+
<%_ if (reactive) { _%>
|
|
32
33
|
import java.util.Collections;
|
|
34
|
+
<%_ } _%>
|
|
33
35
|
<%_ } _%>
|
|
34
36
|
import <%= packageName %>.service.UserService;
|
|
35
37
|
import <%= packageName %>.service.dto.<%= user.dtoClass %>;
|
|
@@ -24,7 +24,6 @@ import <%= packageName %>.repository.UserRepository;
|
|
|
24
24
|
import <%= packageName %>.security.AuthoritiesConstants;
|
|
25
25
|
import <%= packageName %>.service.MailService;
|
|
26
26
|
import org.springframework.data.domain.Sort;
|
|
27
|
-
import java.util.Collections;
|
|
28
27
|
import <%= packageName %>.service.UserService;
|
|
29
28
|
import <%= packageName %>.service.dto.<%= user.adminUserDto %>;
|
|
30
29
|
import <%= packageName %>.web.rest.errors.BadRequestAlertException;
|
|
@@ -77,6 +76,7 @@ import java.net.URISyntaxException;
|
|
|
77
76
|
import java.util.ArrayList;
|
|
78
77
|
import java.util.List;
|
|
79
78
|
import java.util.Arrays;
|
|
79
|
+
import java.util.Collections;
|
|
80
80
|
<%_ } else { _%>
|
|
81
81
|
import java.util.*;
|
|
82
82
|
<%_ } _%>
|
|
@@ -45,16 +45,9 @@ import org.springframework.security.web.SecurityFilterChain;
|
|
|
45
45
|
<%_ if (!skipClient || authenticationUsesCsrf) { _%>
|
|
46
46
|
import org.springframework.security.web.authentication.www.BasicAuthenticationFilter;
|
|
47
47
|
<%_ } _%>
|
|
48
|
-
<%_ if (authenticationUsesCsrf) { _%>
|
|
49
|
-
import tech.jhipster.web.filter.CookieCsrfFilter;
|
|
50
|
-
<%_ } _%>
|
|
51
48
|
<%_ if (!skipClient) { _%>
|
|
52
49
|
import <%= packageName %>.web.filter.SpaWebFilter;
|
|
53
50
|
<%_ } _%>
|
|
54
|
-
<%_ if (applicationTypeGateway) { _%>
|
|
55
|
-
import org.springframework.beans.BeansException;
|
|
56
|
-
import org.springframework.beans.factory.config.BeanPostProcessor;
|
|
57
|
-
<%_ } _%>
|
|
58
51
|
<%_ if (authenticationUsesCsrf && !applicationTypeMicroservice) { _%>
|
|
59
52
|
import jakarta.servlet.http.HttpServletRequest;
|
|
60
53
|
import jakarta.servlet.http.HttpServletResponse;
|
|
@@ -117,10 +110,6 @@ import <%= packageName %>.security.oauth2.CustomClaimConverter;
|
|
|
117
110
|
<%_ if(!skipClient) { _%>
|
|
118
111
|
import org.springframework.security.web.header.writers.ReferrerPolicyHeaderWriter;
|
|
119
112
|
<%_ } _%>
|
|
120
|
-
<%_ if (applicationTypeGateway) { _%>
|
|
121
|
-
import org.springframework.security.web.server.WebFilterChainProxy;
|
|
122
|
-
import org.springframework.security.web.server.firewall.ServerWebExchangeFirewall;
|
|
123
|
-
<%_ } _%>
|
|
124
113
|
<%_ if (authenticationUsesCsrf && !applicationTypeMicroservice) { _%>
|
|
125
114
|
import org.springframework.util.StringUtils;
|
|
126
115
|
<%_ } _%>
|
|
@@ -183,17 +172,12 @@ public class SecurityConfiguration {
|
|
|
183
172
|
<%_ if (!skipClient) { _%>
|
|
184
173
|
.addFilterAfter(new SpaWebFilter(), BasicAuthenticationFilter.class)
|
|
185
174
|
<%_ } _%>
|
|
186
|
-
<%_ if (!applicationTypeMicroservice) { _%>
|
|
187
|
-
<%_ if (authenticationUsesCsrf) { _%>
|
|
188
|
-
.addFilterAfter(new CookieCsrfFilter(), BasicAuthenticationFilter.class)
|
|
189
|
-
<%_ } _%>
|
|
190
|
-
<%_ } _%>
|
|
191
175
|
<%_ if (!skipClient) { _%>
|
|
192
176
|
.headers(headers -> headers
|
|
193
177
|
.contentSecurityPolicy(csp -> csp.policyDirectives(jHipsterProperties.getSecurity().getContentSecurityPolicy()))
|
|
194
178
|
.frameOptions(FrameOptionsConfig::sameOrigin)
|
|
195
179
|
.referrerPolicy(referrer -> referrer.policy(ReferrerPolicyHeaderWriter.ReferrerPolicy.STRICT_ORIGIN_WHEN_CROSS_ORIGIN))
|
|
196
|
-
.
|
|
180
|
+
.permissionsPolicyHeader(permissions ->
|
|
197
181
|
permissions.policy("camera=(), fullscreen=(self), geolocation=(), gyroscope=(), magnetometer=(), microphone=(), midi=(), payment=(), sync-xhr=()")))
|
|
198
182
|
<%_ } _%>
|
|
199
183
|
.authorizeHttpRequests(authz ->
|
|
@@ -204,6 +188,9 @@ public class SecurityConfiguration {
|
|
|
204
188
|
.requestMatchers(mvc.pattern("/*.ico"), mvc.pattern("/*.png"), mvc.pattern("/*.svg"), mvc.pattern("/*.webapp")).permitAll()
|
|
205
189
|
<%_ if (clientBundlerVite) { _%>
|
|
206
190
|
.requestMatchers(mvc.pattern("/assets/**")).permitAll()
|
|
191
|
+
<%_ } else if (clientBundlerExperimentalEsbuild) { _%>
|
|
192
|
+
.requestMatchers(mvc.pattern("/content/**")).permitAll()
|
|
193
|
+
.requestMatchers(mvc.pattern("/resources/**")).permitAll()
|
|
207
194
|
<%_ } else { _%>
|
|
208
195
|
.requestMatchers(mvc.pattern("/app/**")).permitAll()
|
|
209
196
|
.requestMatchers(mvc.pattern("/i18n/**")).permitAll()
|
|
@@ -384,15 +371,15 @@ public class SecurityConfiguration {
|
|
|
384
371
|
<%_ if (authenticationUsesCsrf && !applicationTypeMicroservice) { _%>
|
|
385
372
|
|
|
386
373
|
/**
|
|
387
|
-
* Custom CSRF handler to provide BREACH protection.
|
|
374
|
+
* Custom CSRF handler to provide BREACH protection for Single-Page Applications (SPA).
|
|
388
375
|
*
|
|
389
376
|
* @see <a href="https://docs.spring.io/spring-security/reference/servlet/exploits/csrf.html#csrf-integration-javascript-spa">Spring Security Documentation - Integrating with CSRF Protection</a>
|
|
390
377
|
* @see <a href="https://github.com/jhipster/generator-jhipster/pull/25907">JHipster - use customized SpaCsrfTokenRequestHandler to handle CSRF token</a>
|
|
391
378
|
* @see <a href="https://stackoverflow.com/q/74447118/65681">CSRF protection not working with Spring Security 6</a>
|
|
392
379
|
*/
|
|
393
|
-
static final class SpaCsrfTokenRequestHandler
|
|
394
|
-
|
|
395
|
-
private final CsrfTokenRequestHandler
|
|
380
|
+
static final class SpaCsrfTokenRequestHandler implements CsrfTokenRequestHandler {
|
|
381
|
+
private final CsrfTokenRequestHandler plain = new CsrfTokenRequestAttributeHandler();
|
|
382
|
+
private final CsrfTokenRequestHandler xor = new XorCsrfTokenRequestAttributeHandler();
|
|
396
383
|
|
|
397
384
|
@Override
|
|
398
385
|
public void handle(HttpServletRequest request, HttpServletResponse response, Supplier<CsrfToken> csrfToken) {
|
|
@@ -400,7 +387,10 @@ public class SecurityConfiguration {
|
|
|
400
387
|
* Always use XorCsrfTokenRequestAttributeHandler to provide BREACH protection of
|
|
401
388
|
* the CsrfToken when it is rendered in the response body.
|
|
402
389
|
*/
|
|
403
|
-
this.
|
|
390
|
+
this.xor.handle(request, response, csrfToken);
|
|
391
|
+
|
|
392
|
+
// Render the token value to a cookie by causing the deferred token to be loaded.
|
|
393
|
+
csrfToken.get();
|
|
404
394
|
}
|
|
405
395
|
|
|
406
396
|
@Override
|
|
@@ -412,7 +402,7 @@ public class SecurityConfiguration {
|
|
|
412
402
|
* raw CsrfToken.
|
|
413
403
|
*/
|
|
414
404
|
if (StringUtils.hasText(request.getHeader(csrfToken.getHeaderName()))) {
|
|
415
|
-
return
|
|
405
|
+
return this.plain.resolveCsrfTokenValue(request, csrfToken);
|
|
416
406
|
}
|
|
417
407
|
/*
|
|
418
408
|
* In all other cases (e.g. if the request contains a request parameter), use
|
|
@@ -420,24 +410,8 @@ public class SecurityConfiguration {
|
|
|
420
410
|
* when a server-side rendered form includes the _csrf request parameter as a
|
|
421
411
|
* hidden input.
|
|
422
412
|
*/
|
|
423
|
-
return this.
|
|
413
|
+
return this.xor.resolveCsrfTokenValue(request, csrfToken);
|
|
424
414
|
}
|
|
425
415
|
}
|
|
426
416
|
<%_ } _%>
|
|
427
|
-
<%_ if (applicationTypeGateway) { _%>
|
|
428
|
-
|
|
429
|
-
// Fix for Spring Boot 3.3.5: https://github.com/spring-cloud/spring-cloud-gateway/issues/3568
|
|
430
|
-
@Bean
|
|
431
|
-
BeanPostProcessor beanPostProcessor() {
|
|
432
|
-
return new BeanPostProcessor() {
|
|
433
|
-
@Override
|
|
434
|
-
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
|
|
435
|
-
if (bean instanceof WebFilterChainProxy springSecurity) {
|
|
436
|
-
springSecurity.setFirewall(ServerWebExchangeFirewall.INSECURE_NOOP);
|
|
437
|
-
}
|
|
438
|
-
return bean;
|
|
439
|
-
}
|
|
440
|
-
};
|
|
441
|
-
}
|
|
442
|
-
<%_ } _%>
|
|
443
417
|
}
|
|
@@ -39,10 +39,6 @@ import org.springframework.boot.autoconfigure.security.SecurityProperties;
|
|
|
39
39
|
<%_ if (!skipClient) { _%>
|
|
40
40
|
import <%= packageName %>.web.filter.SpaWebFilter;
|
|
41
41
|
<%_ } _%>
|
|
42
|
-
<%_ if (applicationTypeGateway) { _%>
|
|
43
|
-
import org.springframework.beans.BeansException;
|
|
44
|
-
import org.springframework.beans.factory.config.BeanPostProcessor;
|
|
45
|
-
<%_ } _%>
|
|
46
42
|
import org.springframework.context.annotation.Bean;
|
|
47
43
|
import org.springframework.context.annotation.Configuration;
|
|
48
44
|
<%_ if (authenticationTypeOauth2) { _%>
|
|
@@ -118,10 +114,6 @@ import org.springframework.security.web.server.savedrequest.NoOpServerRequestCac
|
|
|
118
114
|
<%_ } _%>
|
|
119
115
|
import org.springframework.security.web.server.util.matcher.NegatedServerWebExchangeMatcher;
|
|
120
116
|
import org.springframework.security.web.server.util.matcher.OrServerWebExchangeMatcher;
|
|
121
|
-
<%_ if (applicationTypeGateway) { _%>
|
|
122
|
-
import org.springframework.security.web.server.WebFilterChainProxy;
|
|
123
|
-
import org.springframework.security.web.server.firewall.ServerWebExchangeFirewall;
|
|
124
|
-
<%_ } _%>
|
|
125
117
|
<%_ if (authenticationUsesCsrf) { _%>
|
|
126
118
|
import reactor.core.publisher.Mono;
|
|
127
119
|
<%_ } _%>
|
|
@@ -225,6 +217,9 @@ public class SecurityConfiguration {
|
|
|
225
217
|
pathMatchers(
|
|
226
218
|
<%_ if (clientBundlerVite) { _%>
|
|
227
219
|
"/assets/**",
|
|
220
|
+
<%_ } else if (clientBundlerExperimentalEsbuild) { _%>
|
|
221
|
+
"/content/**",
|
|
222
|
+
"/resources/**",
|
|
228
223
|
<%_ } else { _%>
|
|
229
224
|
"/app/**",
|
|
230
225
|
"/i18n/**",
|
|
@@ -490,20 +485,4 @@ public class SecurityConfiguration {
|
|
|
490
485
|
return Mono.empty();
|
|
491
486
|
}
|
|
492
487
|
<%_ } _%>
|
|
493
|
-
<%_ if (applicationTypeGateway) { _%>
|
|
494
|
-
|
|
495
|
-
// Fix for Spring Boot 3.3.5: https://github.com/spring-cloud/spring-cloud-gateway/issues/3568
|
|
496
|
-
@Bean
|
|
497
|
-
BeanPostProcessor beanPostProcessor() {
|
|
498
|
-
return new BeanPostProcessor() {
|
|
499
|
-
@Override
|
|
500
|
-
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
|
|
501
|
-
if (bean instanceof WebFilterChainProxy springSecurity) {
|
|
502
|
-
springSecurity.setFirewall(ServerWebExchangeFirewall.INSECURE_NOOP);
|
|
503
|
-
}
|
|
504
|
-
return bean;
|
|
505
|
-
}
|
|
506
|
-
};
|
|
507
|
-
}
|
|
508
|
-
<%_ } _%>
|
|
509
488
|
}
|
package/dist/generators/spring-boot/templates/src/main/java/_package_/service/MailService.java.ejs
CHANGED
|
@@ -88,11 +88,11 @@ public class MailService {
|
|
|
88
88
|
public void sendEmail(String to, String subject, String content, boolean isMultipart, boolean isHtml) {
|
|
89
89
|
<%_ if (reactive) { _%>
|
|
90
90
|
Mono.defer(() -> {
|
|
91
|
-
|
|
91
|
+
sendEmailSync(to, subject, content, isMultipart, isHtml);
|
|
92
92
|
return Mono.empty();
|
|
93
93
|
}).subscribe();
|
|
94
94
|
<%_ } else { _%>
|
|
95
|
-
|
|
95
|
+
sendEmailSync(to, subject, content, isMultipart, isHtml);
|
|
96
96
|
<%_ } _%>
|
|
97
97
|
}
|
|
98
98
|
|
|
@@ -127,11 +127,11 @@ public class MailService {
|
|
|
127
127
|
public void sendEmailFromTemplate(<%= user.persistClass %> user, String templateName, String titleKey) {
|
|
128
128
|
<%_ if (reactive) { _%>
|
|
129
129
|
Mono.defer(() -> {
|
|
130
|
-
|
|
130
|
+
sendEmailFromTemplateSync(user, templateName, titleKey);
|
|
131
131
|
return Mono.empty();
|
|
132
132
|
}).subscribe();
|
|
133
133
|
<%_ } else { _%>
|
|
134
|
-
|
|
134
|
+
sendEmailFromTemplateSync(user, templateName, titleKey);
|
|
135
135
|
<%_ } _%>
|
|
136
136
|
}
|
|
137
137
|
|
|
@@ -146,7 +146,7 @@ public class MailService {
|
|
|
146
146
|
context.setVariable(BASE_URL, jHipsterProperties.getMail().getBaseUrl());
|
|
147
147
|
String content = templateEngine.process(templateName, context);
|
|
148
148
|
String subject = messageSource.getMessage(titleKey, null, locale);
|
|
149
|
-
|
|
149
|
+
sendEmailSync(user.getEmail(), subject, content, false, true);
|
|
150
150
|
}
|
|
151
151
|
<%_ if (!authenticationTypeOauth2) { _%>
|
|
152
152
|
|
|
@@ -155,7 +155,7 @@ public class MailService {
|
|
|
155
155
|
<%_ } _%>
|
|
156
156
|
public void sendActivationEmail(<%= user.persistClass %> user) {
|
|
157
157
|
LOG.debug("Sending activation email to '{}'", user.getEmail());
|
|
158
|
-
|
|
158
|
+
<%- localSendEmailFromTemplateApi %>(user, "mail/activationEmail", "email.activation.title");
|
|
159
159
|
}
|
|
160
160
|
|
|
161
161
|
<%_ if (!reactive) { _%>
|
|
@@ -163,7 +163,7 @@ public class MailService {
|
|
|
163
163
|
<%_ } _%>
|
|
164
164
|
public void sendCreationEmail(<%= user.persistClass %> user) {
|
|
165
165
|
LOG.debug("Sending creation email to '{}'", user.getEmail());
|
|
166
|
-
|
|
166
|
+
<%- localSendEmailFromTemplateApi %>(user, "mail/creationEmail", "email.activation.title");
|
|
167
167
|
}
|
|
168
168
|
|
|
169
169
|
<%_ if (!reactive) { _%>
|
|
@@ -171,7 +171,7 @@ public class MailService {
|
|
|
171
171
|
<%_ } _%>
|
|
172
172
|
public void sendPasswordResetMail(<%= user.persistClass %> user) {
|
|
173
173
|
LOG.debug("Sending password reset email to '{}'", user.getEmail());
|
|
174
|
-
|
|
174
|
+
<%- localSendEmailFromTemplateApi %>(user, "mail/passwordResetEmail", "email.reset.title");
|
|
175
175
|
}
|
|
176
176
|
<%_ } _%>
|
|
177
177
|
}
|
|
@@ -22,7 +22,7 @@ import org.springframework.http.ResponseEntity;
|
|
|
22
22
|
import org.springframework.security.core.annotation.AuthenticationPrincipal;
|
|
23
23
|
import org.springframework.security.oauth2.client.registration.ClientRegistration;
|
|
24
24
|
import org.springframework.security.oauth2.client.registration.ClientRegistrationRepository;
|
|
25
|
-
import org.springframework.security.oauth2.core.oidc.
|
|
25
|
+
import org.springframework.security.oauth2.core.oidc.user.OidcUser;
|
|
26
26
|
import org.springframework.web.bind.annotation.PostMapping;
|
|
27
27
|
import org.springframework.web.bind.annotation.RestController;
|
|
28
28
|
import jakarta.servlet.http.HttpServletRequest;
|
|
@@ -44,18 +44,18 @@ public class LogoutResource {
|
|
|
44
44
|
* {@code POST /api/logout} : logout the current user.
|
|
45
45
|
*
|
|
46
46
|
* @param request the {@link HttpServletRequest}.
|
|
47
|
-
* @param
|
|
47
|
+
* @param oidcUser the OIDC user.
|
|
48
48
|
* @return the {@link ResponseEntity} with status {@code 200 (OK)} and a body with a global logout URL.
|
|
49
49
|
*/
|
|
50
50
|
@PostMapping("/api/logout")
|
|
51
|
-
public ResponseEntity<?> logout(HttpServletRequest request, @AuthenticationPrincipal
|
|
51
|
+
public ResponseEntity<?> logout(HttpServletRequest request, @AuthenticationPrincipal OidcUser oidcUser) {
|
|
52
52
|
StringBuilder logoutUrl = new StringBuilder();
|
|
53
53
|
|
|
54
54
|
logoutUrl.append(this.registration.getProviderDetails().getConfigurationMetadata().get("end_session_endpoint").toString());
|
|
55
55
|
|
|
56
56
|
String originUrl = request.getHeader(HttpHeaders.ORIGIN);
|
|
57
57
|
|
|
58
|
-
logoutUrl.append("?id_token_hint=").append(
|
|
58
|
+
logoutUrl.append("?id_token_hint=").append(oidcUser.getIdToken().getTokenValue()).append("&post_logout_redirect_uri=").append(originUrl);
|
|
59
59
|
|
|
60
60
|
request.getSession().invalidate();
|
|
61
61
|
return ResponseEntity.ok().body(Map.of("logoutUrl", logoutUrl.toString()));
|
|
@@ -22,6 +22,7 @@ import org.springframework.security.core.annotation.AuthenticationPrincipal;
|
|
|
22
22
|
import org.springframework.security.oauth2.client.registration.ClientRegistration;
|
|
23
23
|
import org.springframework.security.oauth2.client.registration.ReactiveClientRegistrationRepository;
|
|
24
24
|
import org.springframework.security.oauth2.core.oidc.OidcIdToken;
|
|
25
|
+
import org.springframework.security.oauth2.core.oidc.user.OidcUser;
|
|
25
26
|
import org.springframework.web.bind.annotation.PostMapping;
|
|
26
27
|
import org.springframework.web.bind.annotation.RestController;
|
|
27
28
|
import org.springframework.web.server.WebSession;
|
|
@@ -43,18 +44,18 @@ public class LogoutResource {
|
|
|
43
44
|
/**
|
|
44
45
|
* {@code POST /api/logout} : logout the current user.
|
|
45
46
|
*
|
|
46
|
-
* @param
|
|
47
|
+
* @param oidcUser the OIDC user.
|
|
47
48
|
* @param request a {@link ServerHttpRequest} request.
|
|
48
49
|
* @param session the current {@link WebSession}.
|
|
49
50
|
* @return status {@code 200 (OK)} and a body with a global logout URL.
|
|
50
51
|
*/
|
|
51
52
|
@PostMapping("/api/logout")
|
|
52
53
|
public Mono<Map<String, String>> logout(
|
|
53
|
-
@AuthenticationPrincipal
|
|
54
|
+
@AuthenticationPrincipal OidcUser oidcUser,
|
|
54
55
|
ServerHttpRequest request,
|
|
55
56
|
WebSession session
|
|
56
57
|
) {
|
|
57
|
-
return session.invalidate().then(this.registration.map(oidc -> prepareLogoutUri(request, oidc,
|
|
58
|
+
return session.invalidate().then(this.registration.map(oidc -> prepareLogoutUri(request, oidc, oidcUser.getIdToken())));
|
|
58
59
|
}
|
|
59
60
|
|
|
60
61
|
private Map<String, String> prepareLogoutUri(ServerHttpRequest request, ClientRegistration clientRegistration, OidcIdToken idToken) {
|
package/dist/generators/spring-boot/templates/src/main/resources/config/application-dev.yml.ejs
CHANGED
|
@@ -302,7 +302,7 @@ jhipster:
|
|
|
302
302
|
<%_ if (microfrontend) { _%>
|
|
303
303
|
# Ports <%= devServerPort + 1 %>-<%= devServerPort + 9 %> are allowed for microfrontend development
|
|
304
304
|
<%_ } _%>
|
|
305
|
-
allowed-origins: "http://localhost:8100,https://localhost:8100
|
|
305
|
+
allowed-origins: "http://localhost:8100,https://localhost:8100<%_ if (devServerPortProxy) { _%>,http://localhost:<%= devServerPortProxy %>,https://localhost:<%= devServerPortProxy %><%_ } _%><%_ if (!skipClient) { _%>,http://localhost:<%= devServerPort %>,https://localhost:<%= devServerPort %><%_ if (microfrontend) { for (let port = 1; port < 10; port++) { _%>,http://localhost:<%= devServerPort + port %>,https://localhost:<%= devServerPort + port %><%_ } _%><%_ } } _%>"
|
|
306
306
|
# Enable CORS when running in GitHub Codespaces
|
|
307
307
|
allowed-origin-patterns: 'https://*.githubpreview.dev'
|
|
308
308
|
allowed-methods: "*"
|
package/dist/generators/spring-boot/templates/src/main/resources/config/application-tls.yml.ejs
CHANGED
|
@@ -31,7 +31,15 @@ server:
|
|
|
31
31
|
key-store-password: password
|
|
32
32
|
key-store-type: PKCS12
|
|
33
33
|
key-alias: selfsigned
|
|
34
|
-
ciphers:
|
|
34
|
+
ciphers:
|
|
35
|
+
- TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
|
|
36
|
+
- TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
|
|
37
|
+
- TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
|
|
38
|
+
- TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
|
|
39
|
+
- TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
|
|
40
|
+
- TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
|
|
41
|
+
- TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
|
|
42
|
+
- TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
|
|
35
43
|
enabled-protocols: TLSv1.2
|
|
36
44
|
http2:
|
|
37
45
|
enabled: true
|