generator-jhipster 7.2.0 → 7.4.1
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/cli/environment-builder.js +1 -0
- package/cli/import-jdl.js +3 -2
- package/cli/jdl.js +1 -0
- package/cli/jhipster-command.js +2 -2
- package/cli/program.js +32 -29
- package/generators/app/index.js +35 -26
- package/generators/aws/index.js +8 -8
- package/generators/aws/lib/eb.js +1 -1
- package/generators/azure-app-service/index.js +16 -9
- package/generators/azure-app-service/templates/github/workflows/azure-app-service.yml.ejs +2 -2
- package/generators/azure-spring-cloud/index.js +16 -9
- package/generators/azure-spring-cloud/templates/github/workflows/azure-spring-cloud.yml.ejs +2 -2
- package/generators/bootstrap/index.js +57 -61
- package/generators/ci-cd/index.js +11 -8
- package/generators/ci-cd/templates/github-actions.yml.ejs +1 -1
- package/generators/ci-cd/templates/travis.yml.ejs +9 -4
- package/generators/client/__workflow/devserver-angular.json +1 -1
- package/generators/client/__workflow/devserver-react.json +1 -1
- package/generators/client/__workflow/devserver-vue.json +1 -1
- package/generators/client/files-angular.js +6 -0
- package/generators/client/files-common.js +6 -2
- package/generators/client/files-react.js +13 -2
- package/generators/client/files-vue.js +56 -6
- package/generators/client/index.js +114 -32
- package/generators/client/needle-api/needle-client-angular.js +1 -1
- package/generators/client/needle-api/needle-client-vue.js +57 -7
- package/generators/client/templates/angular/.eslintrc.json.ejs +1 -0
- package/generators/client/templates/angular/package.json +19 -19
- package/generators/client/templates/angular/package.json.ejs +2 -1
- package/generators/client/templates/angular/src/main/webapp/app/account/activate/activate.component.spec.ts.ejs +52 -54
- package/generators/client/templates/angular/src/main/webapp/app/account/activate/activate.service.spec.ts.ejs +65 -0
- package/generators/client/templates/angular/src/main/webapp/app/account/password/password-strength-bar/password-strength-bar.component.spec.ts.ejs +35 -37
- package/generators/client/templates/angular/src/main/webapp/app/account/password/password.component.spec.ts.ejs +78 -80
- package/generators/client/templates/angular/src/main/webapp/app/account/password/password.service.spec.ts.ejs +41 -0
- package/generators/client/templates/angular/src/main/webapp/app/account/password-reset/finish/password-reset-finish.component.spec.ts.ejs +73 -75
- package/generators/client/templates/angular/src/main/webapp/app/account/password-reset/finish/password-reset-finish.service.spec.ts.ejs +62 -0
- package/generators/client/templates/angular/src/main/webapp/app/account/password-reset/init/password-reset-init.component.spec.ts.ejs +44 -46
- package/generators/client/templates/angular/src/main/webapp/app/account/password-reset/init/password-reset-init.service.spec.ts.ejs +61 -0
- package/generators/client/templates/angular/src/main/webapp/app/account/register/register.component.spec.ts.ejs +116 -118
- package/generators/client/templates/angular/src/main/webapp/app/account/register/register.service.spec.ts.ejs +66 -0
- package/generators/client/templates/angular/src/main/webapp/app/account/sessions/sessions.component.spec.ts.ejs +75 -77
- package/generators/client/templates/angular/src/main/webapp/app/account/settings/settings.component.spec.ts.ejs +74 -76
- package/generators/client/templates/angular/src/main/webapp/app/admin/configuration/configuration.component.spec.ts.ejs +48 -50
- package/generators/client/templates/angular/src/main/webapp/app/admin/configuration/configuration.service.spec.ts.ejs +50 -52
- package/generators/client/templates/angular/src/main/webapp/app/admin/health/health.component.spec.ts.ejs +45 -47
- package/generators/client/templates/angular/src/main/webapp/app/admin/health/health.service.spec.ts.ejs +66 -0
- package/generators/client/templates/angular/src/main/webapp/app/admin/health/modal/health-modal.component.spec.ts.ejs +99 -101
- package/generators/client/templates/angular/src/main/webapp/app/admin/logs/logs.component.spec.ts.ejs +61 -63
- package/generators/client/templates/angular/src/main/webapp/app/admin/logs/logs.service.spec.ts.ejs +19 -21
- package/generators/client/templates/angular/src/main/webapp/app/admin/metrics/blocks/jvm-memory/jvm-memory.component.html.ejs +2 -2
- package/generators/client/templates/angular/src/main/webapp/app/admin/metrics/metrics.component.spec.ts.ejs +28 -30
- package/generators/client/templates/angular/src/main/webapp/app/admin/metrics/metrics.service.spec.ts.ejs +62 -64
- package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/delete/user-management-delete-dialog.component.spec.ts.ejs +35 -37
- package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/detail/user-management-detail.component.spec.ts.ejs +40 -42
- package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/list/user-management.component.spec.ts.ejs +87 -89
- package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/service/user-management.service.spec.ts.ejs +41 -43
- package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/update/user-management-update.component.spec.ts.ejs +81 -83
- package/generators/client/templates/angular/src/main/webapp/app/app.module.ts.ejs +3 -0
- package/generators/client/templates/angular/src/main/webapp/app/core/auth/account.service.spec.ts.ejs +178 -180
- package/generators/client/templates/angular/src/main/webapp/app/core/config/application-config.service.ts.ejs +9 -0
- package/generators/client/templates/angular/src/main/webapp/app/entities/user/user.service.spec.ts.ejs +87 -89
- package/generators/client/templates/angular/src/main/webapp/app/home/home.component.spec.ts.ejs +93 -95
- package/generators/client/templates/angular/src/main/webapp/app/layouts/main/main.component.spec.ts.ejs +166 -168
- package/generators/client/templates/angular/src/main/webapp/app/layouts/navbar/navbar.component.spec.ts.ejs +66 -68
- package/generators/client/templates/angular/src/main/webapp/app/layouts/profiles/page-ribbon.component.spec.ts.ejs +27 -29
- package/generators/client/templates/angular/src/main/webapp/app/login/login.component.spec.ts.ejs +112 -114
- package/generators/client/templates/angular/src/main/webapp/app/shared/alert/alert-error.component.spec.ts.ejs +132 -134
- package/generators/client/templates/angular/src/main/webapp/app/shared/alert/alert.component.spec.ts.ejs +29 -31
- package/generators/client/templates/angular/webpack/webpack.custom.js.ejs +2 -3
- package/generators/client/templates/common/README.md.jhi.client.ejs +34 -0
- package/generators/client/templates/common/package.json +7 -7
- package/generators/client/templates/common/webpack/webpack.microfrontend.js.jhi.ejs +56 -0
- package/generators/client/templates/react/.eslintrc.json.ejs +1 -0
- package/generators/client/templates/react/package.json +57 -56
- package/generators/client/templates/react/package.json.ejs +5 -2
- package/generators/client/templates/react/src/main/webapp/app/app.scss.ejs +0 -3
- package/generators/client/templates/react/src/main/webapp/app/modules/account/password/password.tsx.ejs +2 -2
- package/generators/client/templates/react/src/main/webapp/app/modules/administration/configuration/configuration.tsx.ejs +2 -2
- package/generators/client/templates/react/src/main/webapp/app/modules/administration/gateway/gateway.tsx.ejs +2 -2
- package/generators/client/templates/react/src/main/webapp/app/modules/administration/metrics/metrics.tsx.ejs +6 -6
- package/generators/client/templates/react/src/main/webapp/app/modules/administration/user-management/user-management.tsx.ejs +8 -8
- package/generators/client/templates/react/src/main/webapp/app/modules/home/home.tsx.ejs +1 -1
- package/generators/client/templates/react/src/main/webapp/app/shared/layout/header/header.tsx.ejs +1 -1
- package/generators/client/templates/react/src/main/webapp/app/shared/layout/menus/account.tsx.ejs +3 -3
- package/generators/client/templates/react/src/main/webapp/app/shared/layout/menus/admin.tsx.ejs +7 -7
- package/generators/client/templates/react/src/main/webapp/app/shared/layout/menus/menu-components.tsx.ejs +1 -1
- package/generators/client/templates/react/webpack/webpack.dev.js.ejs +17 -1
- package/generators/client/templates/react/webpack/webpack.prod.js.ejs +13 -1
- package/generators/client/templates/vue/.eslintrc.js.ejs +8 -5
- package/generators/client/templates/vue/package.json +40 -49
- package/generators/client/templates/vue/package.json.ejs +14 -18
- package/generators/client/templates/vue/src/main/webapp/app/account/account.service.ts.ejs +6 -5
- package/generators/client/templates/vue/src/main/webapp/app/account/settings/settings.vue.ejs +7 -1
- package/generators/client/templates/vue/src/main/webapp/app/admin/configuration/configuration.service.ts.ejs +1 -1
- package/generators/client/templates/vue/src/main/webapp/app/admin/configuration/configuration.vue.ejs +1 -1
- package/generators/client/templates/vue/src/main/webapp/app/admin/metrics/metrics.component.ts.ejs +1 -1
- package/generators/client/templates/vue/src/main/webapp/app/admin/tracker/tracker.service.ts.ejs +5 -4
- package/generators/client/templates/vue/src/main/webapp/app/admin/user-management/user-management-edit.component.ts.ejs +9 -0
- package/generators/client/templates/vue/src/main/webapp/app/admin/user-management/user-management-view.component.ts.ejs +5 -0
- package/generators/client/templates/vue/src/main/webapp/app/admin/user-management/user-management.component.ts.ejs +5 -0
- package/generators/client/templates/vue/src/main/webapp/app/constants.ts.ejs +16 -6
- package/generators/client/templates/vue/src/main/webapp/app/core/jhi-navbar/jhi-navbar.component.ts.ejs +27 -8
- package/generators/client/templates/vue/src/main/webapp/app/core/jhi-navbar/jhi-navbar.vue.ejs +6 -0
- package/generators/client/templates/vue/src/main/webapp/app/declarations.d.ts.ejs +41 -0
- package/generators/client/templates/vue/src/main/webapp/app/entities/entities-menu.component.ts.ejs +34 -0
- package/generators/client/templates/vue/src/main/webapp/app/entities/entities-menu.vue.ejs +13 -0
- package/generators/client/templates/vue/src/main/webapp/app/entities/entities.component.ts.ejs +14 -0
- package/generators/client/templates/vue/src/main/webapp/app/entities/entities.vue.ejs +5 -0
- package/generators/client/templates/vue/{webpack/utils.js.ejs → src/main/webapp/app/index.ts.ejs} +1 -12
- package/generators/client/templates/vue/src/main/webapp/app/locale/translation.service.ts.ejs +26 -9
- package/generators/client/templates/vue/src/main/webapp/app/main.ts.ejs +23 -11
- package/generators/client/templates/vue/src/main/webapp/app/router/admin.ts.ejs +4 -4
- package/generators/client/templates/vue/src/main/webapp/app/router/entities.ts.ejs +45 -3
- package/generators/client/templates/vue/src/main/webapp/app/router/index.ts.ejs +19 -3
- package/generators/client/templates/vue/src/main/webapp/app/shared/alert/alert.service.ts.ejs +61 -0
- package/generators/client/templates/vue/src/main/webapp/app/shared/config/axios-interceptor.ts.ejs +0 -2
- package/generators/client/templates/vue/src/main/webapp/app/shared/data/data-utils.service.ts.ejs +3 -1
- package/generators/client/templates/vue/src/main/webapp/app/shims-vue.d.ts.ejs +17 -3
- package/generators/client/templates/vue/src/test/javascript/jest.conf.js.ejs +25 -10
- package/generators/client/templates/vue/src/test/javascript/spec/app/account/account.service.spec.ts.ejs +2 -2
- package/generators/client/templates/vue/src/test/javascript/spec/app/account/login-form/login-form.component.spec.ts.ejs +2 -2
- package/generators/client/templates/vue/src/test/javascript/spec/app/admin/tracker/tracker.component.spec.ts.ejs +12 -12
- package/generators/client/templates/vue/src/test/javascript/spec/app/admin/tracker/tracker.service.spec.ts.ejs +2 -1
- package/generators/client/templates/vue/src/test/javascript/spec/app/admin/user-management/user-management-edit.component.spec.ts.ejs +5 -1
- package/generators/client/templates/vue/src/test/javascript/spec/app/admin/user-management/user-management-view.component.spec.ts.ejs +2 -1
- package/generators/client/templates/vue/src/test/javascript/spec/app/admin/user-management/user-management.component.spec.ts.ejs +5 -1
- package/generators/client/templates/vue/src/test/javascript/spec/app/core/jhi-navbar/jhi-navbar.component.spec.ts.ejs +10 -4
- package/generators/client/templates/vue/src/test/javascript/spec/app/entities/entities-menu.spec.ts.ejs +52 -0
- package/generators/client/templates/vue/src/test/javascript/spec/app/microfrontends/entities-menu.component.ts.ejs +4 -0
- package/generators/client/templates/vue/src/test/javascript/spec/app/microfrontends/entities-menu.vue.ejs +7 -0
- package/generators/client/templates/vue/src/test/javascript/spec/app/microfrontends/entities-router.ts.ejs +1 -0
- package/generators/client/templates/vue/src/test/javascript/spec/app/shared/alert/alert.service.spec.ts.ejs +124 -0
- package/generators/client/templates/vue/src/test/javascript/spec/app/shared/config/axios-interceptor.spec.ts.ejs +0 -1
- package/generators/client/templates/vue/tsconfig.json.ejs +6 -10
- package/generators/client/templates/vue/tsconfig.spec.json.ejs +37 -0
- package/generators/client/templates/vue/webpack/config.js.ejs +50 -0
- package/generators/client/templates/vue/webpack/vue.utils.js.ejs +33 -32
- package/generators/client/templates/vue/webpack/webpack.common.js.ejs +152 -126
- package/generators/client/templates/vue/webpack/webpack.dev.js.ejs +19 -76
- package/generators/client/templates/vue/webpack/webpack.microfrontend.js.jhi.vue.ejs +77 -0
- package/generators/client/templates/vue/webpack/webpack.prod.js.ejs +5 -41
- package/generators/cloudfoundry/index.js +9 -9
- package/generators/common/index.js +12 -10
- package/generators/common/templates/.husky/pre-commit +1 -1
- package/generators/common/templates/.prettierrc.ejs +1 -1
- package/generators/common/templates/README.md.jhi.ejs +21 -0
- package/generators/common/templates/package.json +4 -4
- package/generators/cypress/index.js +12 -9
- package/generators/cypress/templates/cypress.json.ejs +9 -2
- package/generators/cypress/templates/src/test/javascript/cypress/plugins/index.ts.ejs +4 -4
- package/generators/cypress/templates/src/test/javascript/cypress/support/commands.ts.ejs +30 -2
- package/generators/cypress/templates/src/test/javascript/cypress/support/entity.ts.ejs +4 -4
- package/generators/cypress/templates/src/test/javascript/cypress/support/index.ts.ejs +1 -1
- package/generators/cypress/templates/src/test/javascript/cypress/support/management.ts.ejs +1 -1
- package/generators/cypress/templates/src/test/javascript/cypress/support/navbar.ts.ejs +1 -1
- package/generators/database-changelog/index.js +33 -22
- package/generators/database-changelog-liquibase/index.js +12 -8
- package/generators/database-changelog-liquibase/templates/src/main/resources/config/liquibase/changelog/updated_entity_constraints.xml.ejs +1 -1
- package/generators/docker-compose/index.js +11 -12
- package/generators/docker-compose/templates/realm-config/jhipster-realm.json.ejs +13 -12
- package/generators/entities/index.js +35 -26
- package/generators/entities-client/index.js +10 -7
- package/generators/entity/index.js +49 -29
- package/generators/entity-client/files.js +7 -16
- package/generators/entity-client/index.js +74 -11
- package/generators/entity-client/templates/angular/src/main/webapp/app/entities/delete/entity-management-delete-dialog.component.spec.ts.ejs +42 -44
- package/generators/entity-client/templates/angular/src/main/webapp/app/entities/detail/entity-management-detail.component.spec.ts.ejs +58 -60
- package/generators/entity-client/templates/angular/src/main/webapp/app/entities/entity-management.module.ts.ejs +1 -1
- package/generators/entity-client/templates/angular/src/main/webapp/app/entities/list/entity-management.component.spec.ts.ejs +105 -107
- package/generators/entity-client/templates/angular/src/main/webapp/app/entities/list/entity-management.component.ts.ejs +8 -1
- package/generators/entity-client/templates/angular/src/main/webapp/app/entities/route/entity-management-routing-resolve.service.spec.ts.ejs +52 -54
- package/generators/entity-client/templates/angular/src/main/webapp/app/entities/route/entity-management-routing.module.ts.ejs +1 -1
- package/generators/entity-client/templates/angular/src/main/webapp/app/entities/service/entity.service.spec.ts.ejs +173 -175
- package/generators/entity-client/templates/angular/src/main/webapp/app/entities/update/entity-management-update.component.html.ejs +2 -4
- package/generators/entity-client/templates/angular/src/main/webapp/app/entities/update/entity-management-update.component.spec.ts.ejs +193 -195
- package/generators/entity-client/templates/angular/src/main/webapp/app/entities/update/entity-management-update.component.ts.ejs +7 -0
- package/generators/entity-client/templates/common/src/test/javascript/cypress/integration/entity/entity.spec.ts.ejs +269 -109
- package/generators/entity-client/templates/react/src/main/webapp/app/entities/entity-delete-dialog.tsx.ejs +5 -2
- package/generators/entity-client/templates/react/src/main/webapp/app/entities/entity-update.tsx.ejs +17 -14
- package/generators/entity-client/templates/react/src/main/webapp/app/entities/entity.tsx.ejs +11 -13
- package/generators/entity-client/templates/vue/src/main/webapp/app/entities/entity-details.component.ts.ejs +5 -0
- package/generators/entity-client/templates/vue/src/main/webapp/app/entities/entity-update.component.ts.ejs +23 -8
- package/generators/entity-client/templates/vue/src/main/webapp/app/entities/entity-update.vue.ejs +6 -9
- package/generators/entity-client/templates/vue/src/main/webapp/app/entities/entity.component.ts.ejs +9 -1
- package/generators/entity-client/templates/vue/src/main/webapp/app/entities/entity.model.ts.ejs +1 -1
- package/generators/entity-client/templates/vue/src/main/webapp/app/entities/entity.service.ts.ejs +2 -6
- package/generators/entity-client/templates/vue/src/test/javascript/spec/app/entities/entity-details.component.spec.ts.ejs +2 -1
- package/generators/entity-client/templates/vue/src/test/javascript/spec/app/entities/entity-update.component.spec.ts.ejs +8 -1
- package/generators/entity-client/templates/vue/src/test/javascript/spec/app/entities/entity.component.spec.ts.ejs +8 -2
- package/generators/entity-client/templates/vue/src/test/javascript/spec/app/entities/entity.service.spec.ts.ejs +1 -1
- package/generators/entity-i18n/index.js +7 -4
- package/generators/entity-server/files-couchbase.js +2 -2
- package/generators/entity-server/files.js +35 -30
- package/generators/entity-server/index.js +12 -8
- package/generators/entity-server/templates/couchbase/src/main/java/package/repository/EntityRepository.java.ejs +2 -2
- package/generators/entity-server/templates/couchbase/src/main/resources/config/couchmove/changelog/entity.fts.ejs +1 -1
- package/generators/entity-server/templates/src/main/java/package/domain/Entity.java.jhi.ejs +6 -2
- package/generators/entity-server/templates/src/main/java/package/domain/enumeration/Enum.java.ejs +1 -1
- package/generators/entity-server/templates/src/main/java/package/repository/EntityRepository.java.ejs +2 -2
- package/generators/entity-server/templates/src/main/java/package/repository/EntityRepositoryInternalImpl_reactive.java.ejs +17 -30
- package/generators/entity-server/templates/src/main/java/package/repository/EntityRepository_reactive.java.ejs +5 -5
- package/generators/entity-server/templates/src/main/java/package/repository/EntitySqlHelper_reactive.java.ejs +46 -0
- package/generators/entity-server/templates/src/main/java/package/repository/rowmapper/EntityRowMapper.java.ejs +3 -3
- package/generators/entity-server/templates/src/main/java/package/repository/search/EntitySearchRepository.java.ejs +2 -2
- package/generators/entity-server/templates/src/main/java/package/service/EntityQueryService.java.ejs +8 -8
- package/generators/entity-server/templates/src/main/java/package/service/EntityService.java.ejs +4 -4
- package/generators/entity-server/templates/src/main/java/package/service/criteria/EntityCriteria.java.ejs +4 -4
- package/generators/entity-server/templates/src/main/java/package/service/dto/EntityDTO.java.ejs +7 -3
- package/generators/entity-server/templates/src/main/java/package/service/impl/EntityServiceImpl.java.ejs +8 -8
- package/generators/entity-server/templates/src/main/java/package/service/mapper/BaseEntityMapper.java.ejs +1 -1
- package/generators/entity-server/templates/src/main/java/package/service/mapper/EntityMapper.java.ejs +7 -3
- package/generators/entity-server/templates/src/main/java/package/web/rest/EntityResource.java.ejs +51 -53
- package/generators/entity-server/templates/src/test/java/package/domain/EntityTest.java.ejs +1 -1
- package/generators/entity-server/templates/src/test/java/package/repository/search/EntitySearchRepositoryMockConfiguration.java.ejs +1 -1
- package/generators/entity-server/templates/src/test/java/package/service/dto/EntityDTOTest.java.ejs +1 -1
- package/generators/entity-server/templates/src/test/java/package/service/mapper/EntityMapperTest.java.ejs +1 -1
- package/generators/entity-server/templates/src/test/java/package/web/rest/EntityResourceIT.java.ejs +17 -14
- package/generators/gae/index.js +10 -10
- package/generators/generator-base-blueprint.js +14 -46
- package/generators/generator-base-private.js +42 -22
- package/generators/generator-base.js +57 -20
- package/generators/generator-constants.js +29 -21
- package/generators/generator-transforms.js +39 -27
- package/generators/heroku/index.js +27 -48
- package/generators/init/constants.cjs +1 -1
- package/generators/init/templates/.husky/pre-commit +1 -1
- package/generators/java/constants.cjs +1 -1
- package/generators/kubernetes/files.js +3 -0
- package/generators/kubernetes/index.js +10 -10
- package/generators/kubernetes/templates/db/couchbase.yml.ejs +1 -1
- package/generators/kubernetes/templates/deployment.yml.ejs +8 -3
- package/generators/kubernetes/templates/istio/destination-rule.yml.ejs +1 -1
- package/generators/kubernetes/templates/istio/gateway/grafana-gateway.yml.ejs +5 -2
- package/generators/kubernetes/templates/istio/gateway/jhipster-grafana-gateway.yml.ejs +5 -2
- package/generators/kubernetes/templates/istio/gateway/kiali-gateway.yml.ejs +10 -8
- package/generators/kubernetes/templates/istio/gateway/zipkin-gateway.yml.ejs +5 -2
- package/generators/kubernetes/templates/istio/gateway.yml.ejs +7 -5
- package/generators/kubernetes/templates/secret/couchbase-secret.yml.ejs +9 -0
- package/generators/kubernetes-base.js +1 -0
- package/generators/kubernetes-helm/files.js +3 -8
- package/generators/kubernetes-helm/index.js +10 -10
- package/generators/kubernetes-helm/templates/README-KUBERNETES-HELM.md.ejs +0 -1
- package/generators/kubernetes-helm/templates/app/Chart.yml.ejs +27 -0
- package/generators/kubernetes-helm/templates/app/helpers.tpl.ejs +0 -11
- package/generators/kubernetes-helm/templates/app/requirements.yml.ejs +7 -2
- package/generators/kubernetes-helm/templates/app/values.yml.ejs +68 -5
- package/generators/kubernetes-helm/templates/csvc/Chart.yml.ejs +17 -0
- package/generators/kubernetes-helm/templates/csvc/requirements.yml.ejs +2 -2
- package/generators/kubernetes-knative/index.js +10 -10
- package/generators/kubernetes-knative/templates/istio/gateway.yml.ejs +6 -4
- package/generators/kubernetes-knative/templates/service.yml.ejs +1 -1
- package/generators/languages/index.js +13 -13
- package/generators/languages/templates/src/main/webapp/i18n/hr/reset.json.ejs +1 -2
- package/generators/languages/templates/src/main/webapp/i18n/vi/login.json +1 -1
- package/generators/maven/templates/.mvn/wrapper/maven-wrapper.properties +1 -1
- package/generators/openapi-client/index.js +13 -10
- package/generators/openshift/index.js +10 -11
- package/generators/openshift/templates/deployment.yml.ejs +1 -1
- package/generators/page/index.js +12 -10
- package/generators/server/__snapshots__/generator.spec.mjs.snap +12 -0
- package/generators/server/files-sql.js +52 -0
- package/generators/server/files.js +15 -0
- package/generators/server/index.js +100 -33
- package/generators/server/needle-api/needle-server-cache.js +4 -6
- package/generators/server/templates/.mvn/wrapper/maven-wrapper.properties +1 -1
- package/generators/server/templates/build.gradle.ejs +17 -1
- package/generators/server/templates/gradle.properties.ejs +11 -11
- package/generators/server/templates/npmw +1 -1
- package/generators/server/templates/npmw.cmd +1 -1
- package/generators/server/templates/pom.xml.ejs +128 -9
- package/generators/server/templates/settings.gradle.ejs +9 -0
- package/generators/server/templates/sql/reactive/src/main/java/package/repository/UserSqlHelper.java.ejs +48 -0
- package/generators/server/templates/src/main/docker/app.yml.ejs +2 -1
- package/generators/server/templates/src/main/docker/config/realm-config/jhipster-realm.json.ejs +13 -12
- package/generators/server/templates/src/main/java/package/aop/logging/LoggingAspect.java.ejs +1 -1
- package/generators/server/templates/src/main/java/package/config/DatabaseConfiguration_cassandra.java.ejs +0 -6
- package/generators/server/templates/src/main/java/package/config/DatabaseConfiguration_sql.java.ejs +2 -2
- package/generators/server/templates/src/main/java/package/config/JacksonConfiguration.java.ejs +1 -1
- package/generators/server/templates/src/main/java/package/config/LocaleConfiguration.java.ejs +0 -2
- package/generators/server/templates/src/main/java/package/config/SecurityConfiguration.java.ejs +2 -5
- package/generators/server/templates/src/main/java/package/config/SecurityConfiguration_reactive.java.ejs +9 -1
- package/generators/server/templates/src/main/java/package/config/WebConfigurer.java.ejs +0 -1
- package/generators/server/templates/src/main/java/package/management/SecurityMetersService.java.ejs +68 -0
- package/generators/server/templates/src/main/java/package/repository/UserRepository.java.ejs +0 -23
- package/generators/server/templates/src/main/java/package/security/PersistentTokenRememberMeServices.java.ejs +0 -2
- package/generators/server/templates/src/main/java/package/security/jwt/TokenProvider.java.ejs +29 -4
- package/generators/server/templates/src/main/java/package/security/oauth2/CustomClaimConverter.java.ejs +21 -9
- package/generators/server/templates/src/main/java/package/service/UserService.java.ejs +13 -5
- package/generators/server/templates/src/main/resources/config/application-dev.yml.ejs +1 -1
- package/generators/server/templates/src/main/resources/config/application-prod.yml.ejs +1 -1
- package/generators/server/templates/src/main/resources/config/application.yml.ejs +7 -7
- package/generators/server/templates/src/main/resources/static/microservices_index.html.ejs +1 -1
- package/generators/server/templates/src/test/java/package/management/SecurityMetersServiceTests.java.ejs +113 -0
- package/generators/server/templates/src/test/java/package/security/jwt/JWTFilterTest.java.ejs +6 -1
- package/generators/server/templates/src/test/java/package/security/jwt/TokenProviderSecurityMetersTests.java.ejs +198 -0
- package/generators/server/templates/src/test/java/package/security/jwt/TokenProviderTest.java.ejs +13 -3
- package/generators/server/templates/src/test/java/package/security/oauth2/AuthorizationHeaderUtilTest.java.ejs +16 -2
- package/generators/server/templates/src/test/java/package/security/oauth2/CustomClaimConverterIT.java.ejs +63 -0
- package/generators/spring-controller/index.js +9 -7
- package/generators/spring-service/index.js +10 -7
- package/generators/upgrade/index.js +4 -5
- package/generators/utils.js +2 -2
- package/generators/workspaces/index.js +16 -7
- package/jdl/jhipster/default-application-options.js +9 -7
- package/package.json +23 -23
- package/utils/entity.js +21 -4
- package/utils/field.js +12 -2
- package/utils/multi-step-transform/index.js +8 -8
- package/generators/client/templates/react/.npmrc.ejs +0 -1
- package/generators/client/templates/vue/webpack/dev.env.js.ejs +0 -17
- package/generators/client/templates/vue/webpack/env.js.ejs +0 -67
- package/generators/client/templates/vue/webpack/loader.conf.js.ejs +0 -20
- package/generators/client/templates/vue/webpack/prod.env.js.ejs +0 -15
|
@@ -28,6 +28,7 @@
|
|
|
28
28
|
<version>0.0.1-SNAPSHOT</version>
|
|
29
29
|
<packaging>jar</packaging>
|
|
30
30
|
<name><%= humanizedBaseName %></name>
|
|
31
|
+
<description><%= projectDescription %></description>
|
|
31
32
|
|
|
32
33
|
<repositories>
|
|
33
34
|
<%_ if (SPRING_BOOT_VERSION.indexOf('M') > -1 || SPRING_BOOT_VERSION.indexOf('RC') > -1) { _%>
|
|
@@ -104,7 +105,7 @@
|
|
|
104
105
|
https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-dependencies/${spring-boot.version} -->
|
|
105
106
|
<liquibase.version><%= LIQUIBASE_VERSION %></liquibase.version>
|
|
106
107
|
<%_ if (!reactive) { _%>
|
|
107
|
-
<liquibase-hibernate5.version
|
|
108
|
+
<liquibase-hibernate5.version><%= LIQUIBASE_VERSION %></liquibase-hibernate5.version>
|
|
108
109
|
<%_ } _%>
|
|
109
110
|
<%_ if (devDatabaseTypeH2Disk) { _%>
|
|
110
111
|
<h2.version>1.4.200</h2.version>
|
|
@@ -125,13 +126,13 @@
|
|
|
125
126
|
https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-dependencies/${spring-boot.version} -->
|
|
126
127
|
<cassandra-driver.version>4.11.3</cassandra-driver.version>
|
|
127
128
|
<%_ } _%>
|
|
128
|
-
<archunit-junit5.version>0.
|
|
129
|
+
<archunit-junit5.version>0.22.0</archunit-junit5.version>
|
|
129
130
|
<mapstruct.version>1.4.2.Final</mapstruct.version>
|
|
130
131
|
<%_ if (enableSwaggerCodegen) { _%>
|
|
131
132
|
<jackson-databind-nullable.version><%= JACKSON_DATABIND_NULLABLE_VERSION %></jackson-databind-nullable.version>
|
|
132
133
|
<%_ } _%>
|
|
133
134
|
<%_ if (cacheProviderCaffeine) { _%>
|
|
134
|
-
<caffeine.version>3.0.
|
|
135
|
+
<caffeine.version>3.0.4</caffeine.version>
|
|
135
136
|
<typesafe.version>1.4.1</typesafe.version>
|
|
136
137
|
<%_ } _%>
|
|
137
138
|
<%_ if (databaseTypeNeo4j) { _%>
|
|
@@ -150,10 +151,10 @@
|
|
|
150
151
|
<maven-idea-plugin.version>2.2.1</maven-idea-plugin.version>
|
|
151
152
|
<maven-resources-plugin.version>3.2.0</maven-resources-plugin.version>
|
|
152
153
|
<maven-surefire-plugin.version>3.0.0-M5</maven-surefire-plugin.version>
|
|
153
|
-
<maven-war-plugin.version>3.3.
|
|
154
|
+
<maven-war-plugin.version>3.3.2</maven-war-plugin.version>
|
|
154
155
|
<maven-checkstyle-plugin.version>3.1.2</maven-checkstyle-plugin.version>
|
|
155
|
-
<checkstyle.version>9.
|
|
156
|
-
<nohttp-checkstyle.version>0.0.
|
|
156
|
+
<checkstyle.version>9.1</checkstyle.version>
|
|
157
|
+
<nohttp-checkstyle.version>0.0.10</nohttp-checkstyle.version>
|
|
157
158
|
<%_ if (!skipClient) { _%>
|
|
158
159
|
<frontend-maven-plugin.version>1.12.0</frontend-maven-plugin.version>
|
|
159
160
|
<checksum-maven-plugin.version>1.11</checksum-maven-plugin.version>
|
|
@@ -170,7 +171,7 @@
|
|
|
170
171
|
<openapi-generator-maven-plugin.version>5.2.1</openapi-generator-maven-plugin.version>
|
|
171
172
|
<%_ } _%>
|
|
172
173
|
<properties-maven-plugin.version>1.0.0</properties-maven-plugin.version>
|
|
173
|
-
<sonar-maven-plugin.version>3.9.
|
|
174
|
+
<sonar-maven-plugin.version>3.9.1.2184</sonar-maven-plugin.version>
|
|
174
175
|
<!-- jhipster-needle-maven-property -->
|
|
175
176
|
</properties>
|
|
176
177
|
|
|
@@ -1378,8 +1379,8 @@
|
|
|
1378
1379
|
<version>[${maven.version},)</version>
|
|
1379
1380
|
</requireMavenVersion>
|
|
1380
1381
|
<requireJavaVersion>
|
|
1381
|
-
<message>You are running an incompatible version of Java. JHipster supports JDK
|
|
1382
|
-
<version
|
|
1382
|
+
<message>You are running an incompatible version of Java. JHipster supports JDK <%= JAVA_COMPATIBLE_VERSIONS[0] %> to <%= JAVA_COMPATIBLE_VERSIONS[JAVA_COMPATIBLE_VERSIONS.length -1] %>.</message>
|
|
1383
|
+
<version><%= JAVA_COMPATIBLE_VERSIONS.map(version => parseInt(version)).map(version => `[${version},${version +1})`).join(',') %></version>
|
|
1383
1384
|
</requireJavaVersion>
|
|
1384
1385
|
</rules>
|
|
1385
1386
|
</configuration>
|
|
@@ -1429,6 +1430,7 @@
|
|
|
1429
1430
|
</execution>
|
|
1430
1431
|
</executions>
|
|
1431
1432
|
</plugin>
|
|
1433
|
+
<%_ if (!reactive) { _%>
|
|
1432
1434
|
<plugin>
|
|
1433
1435
|
<groupId>org.apache.maven.plugins</groupId>
|
|
1434
1436
|
<artifactId>maven-surefire-plugin</artifactId>
|
|
@@ -1472,6 +1474,7 @@
|
|
|
1472
1474
|
</execution>
|
|
1473
1475
|
</executions>
|
|
1474
1476
|
</plugin>
|
|
1477
|
+
<%_ } _%>
|
|
1475
1478
|
<%_ if (enableSwaggerCodegen) { _%>
|
|
1476
1479
|
<plugin>
|
|
1477
1480
|
<!--
|
|
@@ -1998,6 +2001,122 @@
|
|
|
1998
2001
|
</pluginManagement>
|
|
1999
2002
|
</build>
|
|
2000
2003
|
</profile>
|
|
2004
|
+
<%_ } _%>
|
|
2005
|
+
<%_ if (reactive) { _%>
|
|
2006
|
+
<profile>
|
|
2007
|
+
<id>surefire-java13-</id>
|
|
2008
|
+
<activation>
|
|
2009
|
+
<jdk>(,13]</jdk>
|
|
2010
|
+
</activation>
|
|
2011
|
+
<build>
|
|
2012
|
+
<pluginManagement>
|
|
2013
|
+
<plugins>
|
|
2014
|
+
<plugin>
|
|
2015
|
+
<groupId>org.apache.maven.plugins</groupId>
|
|
2016
|
+
<artifactId>maven-surefire-plugin</artifactId>
|
|
2017
|
+
<version>${maven-surefire-plugin.version}</version>
|
|
2018
|
+
<configuration>
|
|
2019
|
+
<!-- Force alphabetical order to have a reproducible build -->
|
|
2020
|
+
<runOrder>alphabetical</runOrder>
|
|
2021
|
+
<excludes>
|
|
2022
|
+
<exclude>**/*IT*</exclude>
|
|
2023
|
+
<exclude>**/*IntTest*</exclude>
|
|
2024
|
+
</excludes>
|
|
2025
|
+
</configuration>
|
|
2026
|
+
</plugin>
|
|
2027
|
+
<plugin>
|
|
2028
|
+
<groupId>org.apache.maven.plugins</groupId>
|
|
2029
|
+
<artifactId>maven-failsafe-plugin</artifactId>
|
|
2030
|
+
<version>${maven-failsafe-plugin.version}</version>
|
|
2031
|
+
<configuration>
|
|
2032
|
+
<!-- Due to spring-boot repackage, without adding this property test classes are not found
|
|
2033
|
+
See https://github.com/spring-projects/spring-boot/issues/6254 -->
|
|
2034
|
+
<classesDirectory>${project.build.outputDirectory}</classesDirectory>
|
|
2035
|
+
<!-- Force alphabetical order to have a reproducible build -->
|
|
2036
|
+
<runOrder>alphabetical</runOrder>
|
|
2037
|
+
<includes>
|
|
2038
|
+
<include>**/*IT*</include>
|
|
2039
|
+
<include>**/*IntTest*</include>
|
|
2040
|
+
</includes>
|
|
2041
|
+
</configuration>
|
|
2042
|
+
<executions>
|
|
2043
|
+
<execution>
|
|
2044
|
+
<id>integration-test</id>
|
|
2045
|
+
<goals>
|
|
2046
|
+
<goal>integration-test</goal>
|
|
2047
|
+
</goals>
|
|
2048
|
+
</execution>
|
|
2049
|
+
<execution>
|
|
2050
|
+
<id>verify</id>
|
|
2051
|
+
<goals>
|
|
2052
|
+
<goal>verify</goal>
|
|
2053
|
+
</goals>
|
|
2054
|
+
</execution>
|
|
2055
|
+
</executions>
|
|
2056
|
+
</plugin>
|
|
2057
|
+
</plugins>
|
|
2058
|
+
</pluginManagement>
|
|
2059
|
+
</build>
|
|
2060
|
+
</profile>
|
|
2061
|
+
<profile>
|
|
2062
|
+
<id>surefire-java13+</id>
|
|
2063
|
+
<activation>
|
|
2064
|
+
<jdk>(13,]</jdk>
|
|
2065
|
+
</activation>
|
|
2066
|
+
<build>
|
|
2067
|
+
<pluginManagement>
|
|
2068
|
+
<plugins>
|
|
2069
|
+
<plugin>
|
|
2070
|
+
<groupId>org.apache.maven.plugins</groupId>
|
|
2071
|
+
<artifactId>maven-surefire-plugin</artifactId>
|
|
2072
|
+
<version>${maven-surefire-plugin.version}</version>
|
|
2073
|
+
<configuration>
|
|
2074
|
+
<!-- Force alphabetical order to have a reproducible build -->
|
|
2075
|
+
<runOrder>alphabetical</runOrder>
|
|
2076
|
+
<excludes>
|
|
2077
|
+
<exclude>**/*IT*</exclude>
|
|
2078
|
+
<exclude>**/*IntTest*</exclude>
|
|
2079
|
+
</excludes>
|
|
2080
|
+
<!-- Fix tests at java 13+ https://github.com/reactor/BlockHound/issues/33 -->
|
|
2081
|
+
<argLine>-XX:+AllowRedefinitionToAddDeleteMethods</argLine>
|
|
2082
|
+
</configuration>
|
|
2083
|
+
</plugin>
|
|
2084
|
+
<plugin>
|
|
2085
|
+
<groupId>org.apache.maven.plugins</groupId>
|
|
2086
|
+
<artifactId>maven-failsafe-plugin</artifactId>
|
|
2087
|
+
<version>${maven-failsafe-plugin.version}</version>
|
|
2088
|
+
<configuration>
|
|
2089
|
+
<!-- Due to spring-boot repackage, without adding this property test classes are not found
|
|
2090
|
+
See https://github.com/spring-projects/spring-boot/issues/6254 -->
|
|
2091
|
+
<classesDirectory>${project.build.outputDirectory}</classesDirectory>
|
|
2092
|
+
<!-- Force alphabetical order to have a reproducible build -->
|
|
2093
|
+
<runOrder>alphabetical</runOrder>
|
|
2094
|
+
<includes>
|
|
2095
|
+
<include>**/*IT*</include>
|
|
2096
|
+
<include>**/*IntTest*</include>
|
|
2097
|
+
</includes>
|
|
2098
|
+
<!-- Fix tests at java 13+ https://github.com/reactor/BlockHound/issues/33 -->
|
|
2099
|
+
<argLine>-XX:+AllowRedefinitionToAddDeleteMethods</argLine>
|
|
2100
|
+
</configuration>
|
|
2101
|
+
<executions>
|
|
2102
|
+
<execution>
|
|
2103
|
+
<id>integration-test</id>
|
|
2104
|
+
<goals>
|
|
2105
|
+
<goal>integration-test</goal>
|
|
2106
|
+
</goals>
|
|
2107
|
+
</execution>
|
|
2108
|
+
<execution>
|
|
2109
|
+
<id>verify</id>
|
|
2110
|
+
<goals>
|
|
2111
|
+
<goal>verify</goal>
|
|
2112
|
+
</goals>
|
|
2113
|
+
</execution>
|
|
2114
|
+
</executions>
|
|
2115
|
+
</plugin>
|
|
2116
|
+
</plugins>
|
|
2117
|
+
</pluginManagement>
|
|
2118
|
+
</build>
|
|
2119
|
+
</profile>
|
|
2001
2120
|
<%_ } _%>
|
|
2002
2121
|
<!-- jhipster-needle-maven-add-profile -->
|
|
2003
2122
|
</profiles>
|
|
@@ -61,5 +61,14 @@ gradleEnterprise {
|
|
|
61
61
|
publishAlways()
|
|
62
62
|
}
|
|
63
63
|
}
|
|
64
|
+
|
|
65
|
+
buildCache {
|
|
66
|
+
local { enabled = true }
|
|
67
|
+
remote(HttpBuildCache) {
|
|
68
|
+
push = true
|
|
69
|
+
enabled = false // Disabled as this might not always desired
|
|
70
|
+
url = '<%= gradleEnterpriseHost %>/cache/' // note the trailing slash!
|
|
71
|
+
}
|
|
72
|
+
}
|
|
64
73
|
<%_ } _%>
|
|
65
74
|
rootProject.name = "<%= dasherizedBaseName %>"
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
<%#
|
|
2
|
+
Copyright 2013-2021 the original author or authors from the JHipster project.
|
|
3
|
+
|
|
4
|
+
This file is part of the JHipster project, see https://www.jhipster.tech/
|
|
5
|
+
for more information.
|
|
6
|
+
|
|
7
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
8
|
+
you may not use this file except in compliance with the License.
|
|
9
|
+
You may obtain a copy of the License at
|
|
10
|
+
|
|
11
|
+
https://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
+
|
|
13
|
+
Unless required by applicable law or agreed to in writing, software
|
|
14
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16
|
+
See the License for the specific language governing permissions and
|
|
17
|
+
limitations under the License.
|
|
18
|
+
-%>
|
|
19
|
+
package <%= packageName %>.repository;
|
|
20
|
+
|
|
21
|
+
import java.util.ArrayList;
|
|
22
|
+
import java.util.List;
|
|
23
|
+
import org.springframework.data.relational.core.sql.Column;
|
|
24
|
+
import org.springframework.data.relational.core.sql.Expression;
|
|
25
|
+
import org.springframework.data.relational.core.sql.Table;
|
|
26
|
+
|
|
27
|
+
public class UserSqlHelper {
|
|
28
|
+
public static List<Expression> getColumns(Table table, String columnPrefix) {
|
|
29
|
+
List<Expression> columns = new ArrayList<>();
|
|
30
|
+
columns.add(Column.aliased("id", table, columnPrefix + "_id"));
|
|
31
|
+
columns.add(Column.aliased("login", table, columnPrefix + "_login"));
|
|
32
|
+
<%_ if (!authenticationTypeOauth2) { _%>
|
|
33
|
+
columns.add(Column.aliased("password_hash", table, columnPrefix + "_password"));
|
|
34
|
+
<%_ } _%>
|
|
35
|
+
columns.add(Column.aliased("first_name", table, columnPrefix + "_first_name"));
|
|
36
|
+
columns.add(Column.aliased("last_name", table, columnPrefix + "_last_name"));
|
|
37
|
+
columns.add(Column.aliased("email", table, columnPrefix + "_email"));
|
|
38
|
+
columns.add(Column.aliased("activated", table, columnPrefix + "_activated"));
|
|
39
|
+
columns.add(Column.aliased("lang_key", table, columnPrefix + "_lang_key"));
|
|
40
|
+
columns.add(Column.aliased("image_url", table, columnPrefix + "_image_url"));
|
|
41
|
+
<%_ if (!authenticationTypeOauth2) { _%>
|
|
42
|
+
columns.add(Column.aliased("activation_key", table, columnPrefix + "_activation_key"));
|
|
43
|
+
columns.add(Column.aliased("reset_key", table, columnPrefix + "_reset_key"));
|
|
44
|
+
columns.add(Column.aliased("reset_date", table, columnPrefix + "_reset_date"));
|
|
45
|
+
<%_ } _%>
|
|
46
|
+
return columns;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
@@ -52,7 +52,7 @@ _%>
|
|
|
52
52
|
<%_ } _%>
|
|
53
53
|
<%_ if (databaseTypeCouchbase) { _%>
|
|
54
54
|
- SPRING_COUCHBASE_CONNECTION_STRING=<%= baseName.toLowerCase() %>-couchbase
|
|
55
|
-
-
|
|
55
|
+
- JHIPSTER_DATABASE_COUCHBASE_BUCKET_NAME=<%= baseName %>
|
|
56
56
|
<%_ } _%>
|
|
57
57
|
<%_ if (cacheProviderMemcached) { _%>
|
|
58
58
|
- JHIPSTER_CACHE_MEMCACHED_SERVERS=<%= baseName.toLowerCase() %>-memcached:11211
|
|
@@ -294,6 +294,7 @@ _%>
|
|
|
294
294
|
# When run with the "prod" Spring profile, it will read the configuration from a Git repository
|
|
295
295
|
# See https://www.jhipster.tech/jhipster-registry/#spring-cloud-config
|
|
296
296
|
environment:
|
|
297
|
+
- JHIPSTER_SLEEP=20
|
|
297
298
|
- _JAVA_OPTIONS=-Xmx512m -Xms256m
|
|
298
299
|
- SPRING_PROFILES_ACTIVE=dev,api-docs<% if (authenticationTypeOauth2) { %>,oauth2<% } %>
|
|
299
300
|
- SPRING_SECURITY_USER_PASSWORD=admin
|
package/generators/server/templates/src/main/docker/config/realm-config/jhipster-realm.json.ejs
CHANGED
|
@@ -1671,14 +1671,14 @@
|
|
|
1671
1671
|
"subComponents": {},
|
|
1672
1672
|
"config": {
|
|
1673
1673
|
"allowed-protocol-mapper-types": [
|
|
1674
|
-
"oidc-
|
|
1674
|
+
"oidc-usermodel-property-mapper",
|
|
1675
|
+
"oidc-sha256-pairwise-sub-mapper",
|
|
1676
|
+
"saml-user-attribute-mapper",
|
|
1675
1677
|
"saml-user-property-mapper",
|
|
1676
|
-
"oidc-usermodel-attribute-mapper",
|
|
1677
|
-
"saml-role-list-mapper",
|
|
1678
1678
|
"oidc-address-mapper",
|
|
1679
|
-
"
|
|
1680
|
-
"
|
|
1681
|
-
"oidc-
|
|
1679
|
+
"oidc-full-name-mapper",
|
|
1680
|
+
"saml-role-list-mapper",
|
|
1681
|
+
"oidc-usermodel-attribute-mapper"
|
|
1682
1682
|
]
|
|
1683
1683
|
}
|
|
1684
1684
|
},
|
|
@@ -1749,14 +1749,14 @@
|
|
|
1749
1749
|
"subComponents": {},
|
|
1750
1750
|
"config": {
|
|
1751
1751
|
"allowed-protocol-mapper-types": [
|
|
1752
|
-
"oidc-
|
|
1752
|
+
"oidc-address-mapper",
|
|
1753
1753
|
"oidc-usermodel-attribute-mapper",
|
|
1754
|
-
"
|
|
1754
|
+
"saml-user-property-mapper",
|
|
1755
1755
|
"saml-user-attribute-mapper",
|
|
1756
|
-
"oidc-address-mapper",
|
|
1757
|
-
"oidc-usermodel-property-mapper",
|
|
1758
1756
|
"saml-role-list-mapper",
|
|
1759
|
-
"
|
|
1757
|
+
"oidc-full-name-mapper",
|
|
1758
|
+
"oidc-usermodel-property-mapper",
|
|
1759
|
+
"oidc-sha256-pairwise-sub-mapper"
|
|
1760
1760
|
]
|
|
1761
1761
|
}
|
|
1762
1762
|
},
|
|
@@ -2487,10 +2487,11 @@
|
|
|
2487
2487
|
"oauth2DevicePollingInterval": "5",
|
|
2488
2488
|
"clientSessionIdleTimeout": "0",
|
|
2489
2489
|
"clientSessionMaxLifespan": "0",
|
|
2490
|
+
"parRequestUriLifespan": "60",
|
|
2490
2491
|
"clientOfflineSessionIdleTimeout": "0",
|
|
2491
2492
|
"cibaInterval": "5"
|
|
2492
2493
|
},
|
|
2493
|
-
"keycloakVersion": "
|
|
2494
|
+
"keycloakVersion": "15.0.2",
|
|
2494
2495
|
"userManagedAccessAllowed": false,
|
|
2495
2496
|
"clientProfiles": {
|
|
2496
2497
|
"profiles": []
|
package/generators/server/templates/src/main/java/package/aop/logging/LoggingAspect.java.ejs
CHANGED
|
@@ -88,7 +88,7 @@ public class LoggingAspect {
|
|
|
88
88
|
if (env.acceptsProfiles(Profiles.of(JHipsterConstants.SPRING_PROFILE_DEVELOPMENT))) {
|
|
89
89
|
logger(joinPoint)
|
|
90
90
|
.error(
|
|
91
|
-
"Exception in {}() with cause =
|
|
91
|
+
"Exception in {}() with cause = '{}' and exception = '{}'",
|
|
92
92
|
joinPoint.getSignature().getName(),
|
|
93
93
|
e.getCause() != null ? e.getCause() : "NULL",
|
|
94
94
|
e.getMessage(),
|
|
@@ -21,9 +21,6 @@ package <%= packageName %>.config;
|
|
|
21
21
|
import com.datastax.oss.driver.api.core.data.TupleValue;
|
|
22
22
|
import com.datastax.oss.driver.api.core.type.DataTypes;
|
|
23
23
|
import com.datastax.oss.driver.api.core.type.TupleType;
|
|
24
|
-
<%_ if (applicationTypeGateway && !databaseTypeCassandra) { _%>
|
|
25
|
-
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
|
26
|
-
<%_ } _%>
|
|
27
24
|
import org.springframework.context.annotation.Bean;
|
|
28
25
|
import org.springframework.context.annotation.Configuration;
|
|
29
26
|
import org.springframework.core.convert.converter.Converter;
|
|
@@ -39,9 +36,6 @@ import java.util.ArrayList;
|
|
|
39
36
|
import java.util.List;
|
|
40
37
|
|
|
41
38
|
@Configuration
|
|
42
|
-
<%_ if (applicationTypeGateway && !databaseTypeCassandra) { _%>
|
|
43
|
-
@ConditionalOnProperty("jhipster.gateway.rate-limiting.enabled")
|
|
44
|
-
<%_ } _%>
|
|
45
39
|
public class DatabaseConfiguration {
|
|
46
40
|
|
|
47
41
|
@Bean
|
package/generators/server/templates/src/main/java/package/config/DatabaseConfiguration_sql.java.ejs
CHANGED
|
@@ -85,9 +85,9 @@ import java.util.UUID;
|
|
|
85
85
|
|
|
86
86
|
@Configuration
|
|
87
87
|
<%_ if (reactive) { _%>
|
|
88
|
-
@EnableR2dbcRepositories(
|
|
88
|
+
@EnableR2dbcRepositories({<%- domains.map(domain => `"${domain}.repository"`).join(', ') %>})
|
|
89
89
|
<%_ } else { _%>
|
|
90
|
-
@EnableJpaRepositories(
|
|
90
|
+
@EnableJpaRepositories({<%- domains.map(domain => `"${domain}.repository"`).join(', ') %>})
|
|
91
91
|
@EnableJpaAuditing(auditorAwareRef = "springSecurityAuditorAware")
|
|
92
92
|
<%_ } _%>
|
|
93
93
|
@EnableTransactionManagement
|
package/generators/server/templates/src/main/java/package/config/JacksonConfiguration.java.ejs
CHANGED
|
@@ -26,7 +26,7 @@ import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
|
|
|
26
26
|
|
|
27
27
|
import org.springframework.context.annotation.Bean;
|
|
28
28
|
import org.springframework.context.annotation.Configuration;
|
|
29
|
-
import org.zalando.problem.ProblemModule;
|
|
29
|
+
import org.zalando.problem.jackson.ProblemModule;
|
|
30
30
|
import org.zalando.problem.violations.ConstraintViolationProblemModule;
|
|
31
31
|
|
|
32
32
|
@Configuration
|
package/generators/server/templates/src/main/java/package/config/LocaleConfiguration.java.ejs
CHANGED
|
@@ -47,7 +47,6 @@ public class LocaleConfiguration implements WebMvcConfigurer {
|
|
|
47
47
|
<%_ } else { _%>
|
|
48
48
|
import org.apache.commons.logging.Log;
|
|
49
49
|
import org.apache.commons.logging.LogFactory;
|
|
50
|
-
import org.springframework.boot.autoconfigure.web.reactive.WebFluxAutoConfiguration;
|
|
51
50
|
import org.springframework.context.annotation.Bean;
|
|
52
51
|
import org.springframework.context.annotation.Configuration;
|
|
53
52
|
import org.springframework.context.annotation.Import;
|
|
@@ -70,7 +69,6 @@ import java.util.Locale;
|
|
|
70
69
|
import java.util.TimeZone;
|
|
71
70
|
|
|
72
71
|
@Configuration
|
|
73
|
-
@Import(WebFluxAutoConfiguration.class)
|
|
74
72
|
public class LocaleConfiguration {
|
|
75
73
|
|
|
76
74
|
@Bean(name = "localeContextResolver")
|
package/generators/server/templates/src/main/java/package/config/SecurityConfiguration.java.ejs
CHANGED
|
@@ -233,7 +233,7 @@ public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
|
|
|
233
233
|
.and()
|
|
234
234
|
.referrerPolicy(ReferrerPolicyHeaderWriter.ReferrerPolicy.STRICT_ORIGIN_WHEN_CROSS_ORIGIN)
|
|
235
235
|
.and()
|
|
236
|
-
.
|
|
236
|
+
.permissionsPolicy().policy("camera=(), fullscreen=(self), geolocation=(), gyroscope=(), magnetometer=(), microphone=(), midi=(), payment=(), sync-xhr=()")
|
|
237
237
|
.and()
|
|
238
238
|
.frameOptions()
|
|
239
239
|
.deny()
|
|
@@ -258,9 +258,6 @@ public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
|
|
|
258
258
|
.antMatchers("/api/**").authenticated()
|
|
259
259
|
<%_ if (communicationSpringWebsocket) { _%>
|
|
260
260
|
.antMatchers("/websocket/**").authenticated()
|
|
261
|
-
<%_ } _%>
|
|
262
|
-
<%_ if (applicationTypeGateway) { _%>
|
|
263
|
-
.antMatchers("/services/*/v3/api-docs").hasAuthority(AuthoritiesConstants.ADMIN)
|
|
264
261
|
<%_ } _%>
|
|
265
262
|
.antMatchers("/management/health").permitAll()
|
|
266
263
|
.antMatchers("/management/health/**").permitAll()
|
|
@@ -275,7 +272,7 @@ public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
|
|
|
275
272
|
.and()
|
|
276
273
|
.apply(securityConfigurerAdapter());
|
|
277
274
|
<%_ } else if (authenticationTypeOauth2) { _%>
|
|
278
|
-
<%_ if (applicationTypeMonolith
|
|
275
|
+
<%_ if (applicationTypeMonolith) { _%>
|
|
279
276
|
.and()
|
|
280
277
|
.oauth2Login()
|
|
281
278
|
<%_ } _%>
|
|
@@ -253,7 +253,7 @@ public class SecurityConfiguration {
|
|
|
253
253
|
.and()
|
|
254
254
|
.referrerPolicy(ReferrerPolicyServerHttpHeadersWriter.ReferrerPolicy.STRICT_ORIGIN_WHEN_CROSS_ORIGIN)
|
|
255
255
|
.and()
|
|
256
|
-
.
|
|
256
|
+
.permissionsPolicy().policy("camera=(), fullscreen=(self), geolocation=(), gyroscope=(), magnetometer=(), microphone=(), midi=(), payment=(), sync-xhr=()")
|
|
257
257
|
.and()
|
|
258
258
|
.frameOptions().disable()
|
|
259
259
|
<%_ if (applicationTypeMicroservice) { _%>
|
|
@@ -277,6 +277,14 @@ public class SecurityConfiguration {
|
|
|
277
277
|
.pathMatchers("/api/auth-info").permitAll()
|
|
278
278
|
.pathMatchers("/api/admin/**").hasAuthority(AuthoritiesConstants.ADMIN)
|
|
279
279
|
.pathMatchers("/api/**").authenticated()
|
|
280
|
+
<%_ if (applicationTypeGateway) { _%>
|
|
281
|
+
<%_ if (microfrontend && (authenticationTypeJwt || clientFrameworkVue)) { _%>
|
|
282
|
+
// microfrontend resources are loaded by webpack without authentication, they need to be public
|
|
283
|
+
.pathMatchers("/services/*/*.js").permitAll()
|
|
284
|
+
.pathMatchers("/services/*/*.js.map").permitAll()
|
|
285
|
+
<%_ } _%>
|
|
286
|
+
.pathMatchers("/services/*/v3/api-docs").hasAuthority(AuthoritiesConstants.ADMIN)
|
|
287
|
+
<%_ } _%>
|
|
280
288
|
<%_ if (applicationTypeMonolith || applicationTypeGateway) { _%>
|
|
281
289
|
.pathMatchers("/services/**").authenticated()
|
|
282
290
|
<%_ } _%>
|
package/generators/server/templates/src/main/java/package/management/SecurityMetersService.java.ejs
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
<%#
|
|
2
|
+
Copyright 2013-2021 the original author or authors from the JHipster project.
|
|
3
|
+
|
|
4
|
+
This file is part of the JHipster project, see https://www.jhipster.tech/
|
|
5
|
+
for more information.
|
|
6
|
+
|
|
7
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
8
|
+
you may not use this file except in compliance with the License.
|
|
9
|
+
You may obtain a copy of the License at
|
|
10
|
+
|
|
11
|
+
https://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
+
|
|
13
|
+
Unless required by applicable law or agreed to in writing, software
|
|
14
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16
|
+
See the License for the specific language governing permissions and
|
|
17
|
+
limitations under the License.
|
|
18
|
+
-%>
|
|
19
|
+
package <%= packageName %>.management;
|
|
20
|
+
|
|
21
|
+
import org.springframework.stereotype.Service;
|
|
22
|
+
|
|
23
|
+
import io.micrometer.core.instrument.Counter;
|
|
24
|
+
import io.micrometer.core.instrument.MeterRegistry;
|
|
25
|
+
|
|
26
|
+
@Service
|
|
27
|
+
public class SecurityMetersService {
|
|
28
|
+
|
|
29
|
+
public static final String INVALID_TOKENS_METER_NAME = "security.authentication.invalid-tokens";
|
|
30
|
+
public static final String INVALID_TOKENS_METER_DESCRIPTION = "Indicates validation error count of the tokens presented by the clients.";
|
|
31
|
+
public static final String INVALID_TOKENS_METER_BASE_UNIT = "errors";
|
|
32
|
+
public static final String INVALID_TOKENS_METER_CAUSE_DIMENSION = "cause";
|
|
33
|
+
|
|
34
|
+
private final Counter tokenInvalidSignatureCounter;
|
|
35
|
+
private final Counter tokenExpiredCounter;
|
|
36
|
+
private final Counter tokenUnsupportedCounter;
|
|
37
|
+
private final Counter tokenMalformedCounter;
|
|
38
|
+
|
|
39
|
+
public SecurityMetersService(MeterRegistry registry) {
|
|
40
|
+
this.tokenInvalidSignatureCounter = invalidTokensCounterForCauseBuilder("invalid-signature").register(registry);
|
|
41
|
+
this.tokenExpiredCounter = invalidTokensCounterForCauseBuilder("expired").register(registry);
|
|
42
|
+
this.tokenUnsupportedCounter = invalidTokensCounterForCauseBuilder("unsupported").register(registry);
|
|
43
|
+
this.tokenMalformedCounter = invalidTokensCounterForCauseBuilder("malformed").register(registry);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
private Counter.Builder invalidTokensCounterForCauseBuilder(String cause) {
|
|
47
|
+
return Counter.builder(INVALID_TOKENS_METER_NAME)
|
|
48
|
+
.baseUnit(INVALID_TOKENS_METER_BASE_UNIT)
|
|
49
|
+
.description(INVALID_TOKENS_METER_DESCRIPTION)
|
|
50
|
+
.tag(INVALID_TOKENS_METER_CAUSE_DIMENSION, cause);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
public void trackTokenInvalidSignature() {
|
|
54
|
+
this.tokenInvalidSignatureCounter.increment();
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
public void trackTokenExpired() {
|
|
58
|
+
this.tokenExpiredCounter.increment();
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
public void trackTokenUnsupported() {
|
|
62
|
+
this.tokenUnsupportedCounter.increment();
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
public void trackTokenMalformed() {
|
|
66
|
+
this.tokenMalformedCounter.increment();
|
|
67
|
+
}
|
|
68
|
+
}
|
package/generators/server/templates/src/main/java/package/repository/UserRepository.java.ejs
CHANGED
|
@@ -464,29 +464,6 @@ class UserRepositoryInternalImpl implements UserRepositoryInternal {
|
|
|
464
464
|
}
|
|
465
465
|
}
|
|
466
466
|
|
|
467
|
-
class UserSqlHelper {
|
|
468
|
-
static List<Expression> getColumns(Table table, String columnPrefix) {
|
|
469
|
-
List<Expression> columns = new ArrayList<>();
|
|
470
|
-
columns.add(Column.aliased("id", table, columnPrefix + "_id"));
|
|
471
|
-
columns.add(Column.aliased("login", table, columnPrefix + "_login"));
|
|
472
|
-
<%_ if (!authenticationTypeOauth2) { _%>
|
|
473
|
-
columns.add(Column.aliased("password_hash", table, columnPrefix + "_password"));
|
|
474
|
-
<%_ } _%>
|
|
475
|
-
columns.add(Column.aliased("first_name", table, columnPrefix + "_first_name"));
|
|
476
|
-
columns.add(Column.aliased("last_name", table, columnPrefix + "_last_name"));
|
|
477
|
-
columns.add(Column.aliased("email", table, columnPrefix + "_email"));
|
|
478
|
-
columns.add(Column.aliased("activated", table, columnPrefix + "_activated"));
|
|
479
|
-
columns.add(Column.aliased("lang_key", table, columnPrefix + "_lang_key"));
|
|
480
|
-
columns.add(Column.aliased("image_url", table, columnPrefix + "_image_url"));
|
|
481
|
-
<%_ if (!authenticationTypeOauth2) { _%>
|
|
482
|
-
columns.add(Column.aliased("activation_key", table, columnPrefix + "_activation_key"));
|
|
483
|
-
columns.add(Column.aliased("reset_key", table, columnPrefix + "_reset_key"));
|
|
484
|
-
columns.add(Column.aliased("reset_date", table, columnPrefix + "_reset_date"));
|
|
485
|
-
<%_ } _%>
|
|
486
|
-
return columns;
|
|
487
|
-
}
|
|
488
|
-
}
|
|
489
|
-
|
|
490
467
|
<%_ } else if (databaseTypeCassandra) { _%>
|
|
491
468
|
@Repository
|
|
492
469
|
public class UserRepository {
|
|
@@ -71,8 +71,6 @@ import java.util.*;
|
|
|
71
71
|
* <p>
|
|
72
72
|
* This is inspired by:
|
|
73
73
|
* <ul>
|
|
74
|
-
* <li><a href="http://jaspan.com/improved_persistent_login_cookie_best_practice">Improved Persistent Login Cookie
|
|
75
|
-
* Best Practice</a></li>
|
|
76
74
|
* <li><a href="https://github.com/blog/1661-modeling-your-app-s-user-session">GitHub's "Modeling your App's User Session"</a></li>
|
|
77
75
|
* </ul>
|
|
78
76
|
* <p>
|
package/generators/server/templates/src/main/java/package/security/jwt/TokenProvider.java.ejs
CHANGED
|
@@ -34,13 +34,17 @@ import org.springframework.stereotype.Component;
|
|
|
34
34
|
import org.springframework.util.ObjectUtils;
|
|
35
35
|
|
|
36
36
|
import tech.jhipster.config.JHipsterProperties;
|
|
37
|
+
|
|
37
38
|
import io.jsonwebtoken.*;
|
|
38
39
|
import io.jsonwebtoken.io.Decoders;
|
|
40
|
+
import io.jsonwebtoken.security.SignatureException;
|
|
39
41
|
<%_ if (reactive) { _%>
|
|
40
42
|
import io.jsonwebtoken.jackson.io.JacksonSerializer;
|
|
41
43
|
<%_ } _%>
|
|
42
44
|
import io.jsonwebtoken.security.Keys;
|
|
43
45
|
|
|
46
|
+
import <%= packageName %>.management.SecurityMetersService;
|
|
47
|
+
|
|
44
48
|
@Component
|
|
45
49
|
public class TokenProvider {
|
|
46
50
|
|
|
@@ -56,7 +60,9 @@ public class TokenProvider {
|
|
|
56
60
|
|
|
57
61
|
private final long tokenValidityInMillisecondsForRememberMe;
|
|
58
62
|
|
|
59
|
-
|
|
63
|
+
private final SecurityMetersService securityMetersService;
|
|
64
|
+
|
|
65
|
+
public TokenProvider(JHipsterProperties jHipsterProperties, SecurityMetersService securityMetersService) {
|
|
60
66
|
byte[] keyBytes;
|
|
61
67
|
String secret = jHipsterProperties.getSecurity().getAuthentication().getJwt().getBase64Secret();
|
|
62
68
|
if (!ObjectUtils.isEmpty(secret)) {
|
|
@@ -75,6 +81,8 @@ public class TokenProvider {
|
|
|
75
81
|
this.tokenValidityInMillisecondsForRememberMe =
|
|
76
82
|
1000 * jHipsterProperties.getSecurity().getAuthentication().getJwt()
|
|
77
83
|
.getTokenValidityInSecondsForRememberMe();
|
|
84
|
+
|
|
85
|
+
this.securityMetersService = securityMetersService;
|
|
78
86
|
}
|
|
79
87
|
|
|
80
88
|
public String createToken(Authentication authentication, boolean rememberMe) {
|
|
@@ -118,11 +126,28 @@ public class TokenProvider {
|
|
|
118
126
|
public boolean validateToken(String authToken) {
|
|
119
127
|
try {
|
|
120
128
|
jwtParser.parseClaimsJws(authToken);
|
|
129
|
+
|
|
121
130
|
return true;
|
|
122
|
-
} catch (
|
|
123
|
-
|
|
124
|
-
|
|
131
|
+
} catch (ExpiredJwtException e) {
|
|
132
|
+
this.securityMetersService.trackTokenExpired();
|
|
133
|
+
|
|
134
|
+
log.trace("Invalid JWT token.", e);
|
|
135
|
+
} catch (UnsupportedJwtException e) {
|
|
136
|
+
this.securityMetersService.trackTokenUnsupported();
|
|
137
|
+
|
|
138
|
+
log.trace("Invalid JWT token.", e);
|
|
139
|
+
} catch (MalformedJwtException e) {
|
|
140
|
+
this.securityMetersService.trackTokenMalformed();
|
|
141
|
+
|
|
142
|
+
log.trace("Invalid JWT token.", e);
|
|
143
|
+
} catch (SignatureException e) {
|
|
144
|
+
this.securityMetersService.trackTokenInvalidSignature();
|
|
145
|
+
|
|
146
|
+
log.trace("Invalid JWT token.", e);
|
|
147
|
+
} catch (IllegalArgumentException e) { // TODO: should we let it bubble (no catch), to avoid defensive programming and follow the fail-fast principle?
|
|
148
|
+
log.error("Token validation error {}", e.getMessage());
|
|
125
149
|
}
|
|
150
|
+
|
|
126
151
|
return false;
|
|
127
152
|
}
|
|
128
153
|
}
|