generator-jhipster 8.7.2 → 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 +4 -4
- 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/health.model.ts.ejs +1 -3
- 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/metrics/metrics.model.ts.ejs +1 -6
- 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 +34 -28
- 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/logout.cy.ts.ejs +2 -2
- 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 +28 -27
- 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 +3 -12
- package/dist/generators/spring-boot/generator.js +22 -28
- 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 +6 -4
- 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 +29 -30
- 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/linters/rules.d.ts +1 -3
- 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 +14 -5
- package/dist/lib/testing/github-group.d.ts +1 -1
- package/dist/lib/testing/github-group.js +5 -3
- package/dist/lib/testing/github-matrix.js +2 -2
- 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
|