generator-jhipster 7.1.0 → 7.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/cli/commands.js +21 -0
- package/cli/environment-builder.js +10 -2
- package/cli/import-jdl.js +7 -10
- package/cli/jdl.js +1 -0
- package/cli/jhipster-command.js +14 -28
- package/cli/program.js +37 -29
- package/generators/add/index.cjs +78 -0
- package/generators/app/esm.mjs +21 -0
- package/generators/app/generator.spec.mjs +47 -0
- package/generators/app/index.js +38 -34
- package/generators/app/prompts.js +1 -1
- package/generators/aws/esm.mjs +21 -0
- package/generators/aws/generator.spec.mjs +47 -0
- package/generators/aws/index.js +8 -8
- package/generators/aws/lib/eb.js +1 -1
- package/generators/azure-app-service/esm.mjs +21 -0
- package/generators/azure-app-service/generator.spec.mjs +47 -0
- package/generators/azure-app-service/index.js +30 -19
- package/generators/azure-app-service/templates/github/workflows/azure-app-service.yml.ejs +3 -3
- package/generators/azure-spring-cloud/esm.mjs +21 -0
- package/generators/azure-spring-cloud/generator.spec.mjs +47 -0
- package/generators/azure-spring-cloud/index.js +68 -46
- package/generators/azure-spring-cloud/templates/application-azure.yml.ejs +4 -4
- package/generators/azure-spring-cloud/templates/github/workflows/azure-spring-cloud.yml.ejs +3 -3
- package/generators/base/esm.mjs +21 -0
- package/generators/base/generator.spec.mjs +44 -0
- package/generators/bootstrap/esm.mjs +21 -0
- package/generators/bootstrap/generator.spec.mjs +44 -0
- package/generators/bootstrap/index.js +55 -58
- package/generators/ci-cd/esm.mjs +21 -0
- package/generators/ci-cd/generator.spec.mjs +47 -0
- package/generators/ci-cd/index.js +30 -47
- package/generators/ci-cd/templates/github-actions.yml.ejs +5 -2
- package/generators/ci-cd/templates/travis.yml.ejs +9 -4
- package/generators/cleanup.js +5 -0
- package/generators/client/__workflow/devserver-angular.json +13 -0
- package/generators/client/__workflow/devserver-react.json +13 -0
- package/generators/client/__workflow/devserver-vue.json +13 -0
- package/generators/client/esm.mjs +21 -0
- package/generators/client/files-angular.js +8 -9
- package/generators/client/files-common.js +7 -3
- package/generators/client/files-react.js +11 -1
- package/generators/client/files-vue.js +56 -6
- package/generators/client/generator.spec.mjs +47 -0
- package/generators/client/index.js +127 -51
- package/generators/client/needle-api/needle-client-vue.js +5 -5
- package/generators/client/templates/angular/.eslintrc.json.ejs +1 -0
- package/generators/client/templates/angular/README.md.jhi.client.angular.ejs +48 -0
- package/generators/client/templates/angular/angular.json.ejs +0 -1
- package/generators/client/templates/angular/package.json +28 -25
- package/generators/client/templates/angular/package.json.ejs +18 -18
- 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.html.ejs +1 -1
- 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.component.ts.ejs +1 -2
- 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/health/modal/health-modal.component.ts.ejs +3 -5
- package/generators/client/templates/angular/src/main/webapp/app/admin/logs/logs.component.html.ejs +1 -1
- 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/logs/logs.service.ts.ejs +1 -1
- 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/blocks/metrics-system/metrics-system.component.ts.ejs +1 -1
- 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.html.ejs +1 -1
- 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/list/user-management.component.ts.ejs +3 -3
- 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.constants.ts.ejs +0 -4
- package/generators/client/templates/angular/src/main/webapp/app/app.module.ts.ejs +3 -1
- package/generators/client/templates/angular/src/main/webapp/app/config/error.constants.ts.ejs +2 -2
- package/generators/client/templates/angular/src/main/webapp/app/config/translation.config.ts.ejs +1 -2
- package/generators/client/templates/angular/src/main/webapp/app/core/auth/account.service.spec.ts.ejs +179 -172
- package/generators/client/templates/angular/src/main/webapp/app/core/auth/account.service.ts.ejs +9 -9
- 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/core/util/data-util.service.spec.ts.ejs +2 -1
- package/generators/client/templates/angular/src/main/webapp/app/core/util/data-util.service.ts.ejs +14 -22
- 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/main/main.component.ts.ejs +2 -2
- 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/navbar/navbar.component.ts.ejs +1 -1
- 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/login/login.service.ts.ejs +1 -11
- package/generators/client/templates/angular/src/main/webapp/app/login/logout.model.ts.ejs +1 -1
- 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/src/main/webapp/app/shared/sort/sort-by.directive.spec.ts.ejs +24 -37
- package/generators/client/templates/angular/src/main/webapp/app/shared/sort/sort-by.directive.ts.ejs +5 -3
- package/generators/client/templates/angular/src/main/webapp/app/shared/sort/sort.directive.spec.ts.ejs +7 -5
- package/generators/client/templates/angular/src/main/webapp/app/shared/sort/sort.directive.ts.ejs +7 -10
- package/generators/client/templates/angular/src/main/webapp/declarations.d.ts.ejs +8 -1
- package/generators/client/templates/angular/webpack/environment.js.ejs +2 -2
- package/generators/client/templates/angular/webpack/logo-jhipster.png +0 -0
- package/generators/client/templates/angular/webpack/proxy.conf.js.ejs +2 -3
- package/generators/client/templates/angular/webpack/webpack.custom.js.ejs +23 -7
- package/generators/client/templates/angular/webpack/webpack.microfrontend.js.ejs +3 -3
- package/generators/client/templates/common/README.md.jhi.client.ejs +224 -0
- package/generators/client/templates/common/package.json +9 -10
- 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/jest.conf.js.ejs +7 -1
- package/generators/client/templates/react/package.json +61 -64
- package/generators/client/templates/react/package.json.ejs +22 -31
- package/generators/client/templates/react/src/main/webapp/app/app.scss.ejs +0 -3
- package/generators/client/templates/react/src/main/webapp/app/app.tsx.ejs +1 -2
- package/generators/client/templates/react/src/main/webapp/app/config/axios-interceptor.spec.ts.ejs +0 -3
- package/generators/client/templates/react/src/main/webapp/app/config/axios-interceptor.ts.ejs +0 -2
- package/generators/client/templates/react/src/main/webapp/app/config/constants.ts.ejs +0 -9
- package/generators/client/templates/react/src/main/webapp/app/config/error-middleware.ts.ejs +2 -2
- package/generators/client/templates/react/src/main/webapp/app/config/logger-middleware.ts.ejs +1 -1
- package/generators/client/templates/react/src/main/webapp/app/config/notification-middleware.ts.ejs +1 -3
- package/generators/client/templates/react/src/main/webapp/app/config/store.ts.ejs +1 -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/account/settings/settings.reducer.spec.ts.ejs +0 -4
- package/generators/client/templates/react/src/main/webapp/app/modules/account/settings/settings.reducer.ts.ejs +1 -1
- package/generators/client/templates/react/src/main/webapp/app/modules/administration/administration.reducer.spec.ts.ejs +1 -2
- package/generators/client/templates/react/src/main/webapp/app/modules/administration/configuration/configuration.tsx.ejs +4 -4
- 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/health/health-modal.tsx.ejs +1 -2
- package/generators/client/templates/react/src/main/webapp/app/modules/administration/health/health.tsx.ejs +3 -1
- 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 +5 -1
- package/generators/client/templates/react/src/main/webapp/app/modules/login/logout.tsx.ejs +1 -6
- package/generators/client/templates/react/src/main/webapp/app/shared/auth/private-route.spec.tsx.ejs +0 -3
- package/generators/client/templates/react/src/main/webapp/app/shared/error/error-boundary-route.spec.tsx.ejs +0 -3
- package/generators/client/templates/react/src/main/webapp/app/shared/error/error-boundary.spec.tsx.ejs +0 -3
- package/generators/client/templates/react/src/main/webapp/app/shared/error/error-boundary.tsx.ejs +1 -2
- package/generators/client/templates/react/src/main/webapp/app/shared/layout/footer/footer.tsx.ejs +1 -1
- package/generators/client/templates/react/src/main/webapp/app/shared/layout/header/header-components.tsx.ejs +3 -5
- package/generators/client/templates/react/src/main/webapp/app/shared/layout/header/header.spec.tsx.ejs +0 -3
- 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.spec.tsx.ejs +0 -3
- 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/src/main/webapp/app/shared/reducers/authentication.spec.ts.ejs +1 -5
- package/generators/client/templates/react/src/main/webapp/app/shared/reducers/authentication.ts.ejs +0 -2
- package/generators/client/templates/react/src/main/webapp/app/shared/reducers/index.ts.ejs +12 -12
- package/generators/client/templates/react/src/main/webapp/app/shared/reducers/locale.ts.ejs +1 -1
- package/generators/client/templates/react/src/main/webapp/app/shared/reducers/reducer.utils.ts.ejs +0 -1
- package/generators/client/templates/react/src/main/webapp/app/shared/util/date-utils.ts.ejs +1 -1
- package/generators/client/templates/react/src/main/webapp/app/typings.d.ts.ejs +6 -0
- package/generators/client/templates/react/webpack/environment.js.ejs +35 -0
- package/generators/client/templates/react/webpack/webpack.common.js.ejs +31 -37
- package/generators/client/templates/react/webpack/webpack.dev.js.ejs +21 -7
- package/generators/client/templates/react/webpack/webpack.prod.js.ejs +14 -7
- package/generators/client/templates/vue/.eslintrc.js.ejs +8 -5
- package/generators/client/templates/vue/package.json +47 -55
- package/generators/client/templates/vue/package.json.ejs +33 -40
- package/generators/client/templates/vue/src/main/webapp/app/account/account.service.ts.ejs +4 -5
- package/generators/client/templates/vue/src/main/webapp/app/account/activate/activate.component.ts.ejs +2 -2
- package/generators/client/templates/vue/src/main/webapp/app/account/change-password/change-password.component.ts.ejs +1 -1
- package/generators/client/templates/vue/src/main/webapp/app/account/reset-password/finish/reset-password-finish.component.ts.ejs +1 -1
- package/generators/client/templates/vue/src/main/webapp/app/account/reset-password/init/reset-password-init.component.ts.ejs +1 -1
- package/generators/client/templates/vue/src/main/webapp/app/account/settings/settings.component.ts.ejs +1 -1
- 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.component.ts.ejs +1 -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/health/health-modal.component.ts.ejs +2 -4
- package/generators/client/templates/vue/src/main/webapp/app/admin/health/health.component.ts.ejs +1 -2
- package/generators/client/templates/vue/src/main/webapp/app/admin/health/health.service.ts.ejs +5 -9
- package/generators/client/templates/vue/src/main/webapp/app/admin/logs/logs.component.ts.ejs +2 -2
- package/generators/client/templates/vue/src/main/webapp/app/admin/logs/logs.service.ts.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/metrics/metrics.service.ts.ejs +1 -6
- 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 +6 -1
- package/generators/client/templates/vue/src/main/webapp/app/admin/user-management/user-management.service.ts.ejs +3 -2
- package/generators/client/templates/vue/src/main/webapp/app/constants.ts.ejs +18 -9
- package/generators/client/templates/vue/src/main/webapp/app/core/home/home.component.ts.ejs +1 -1
- package/generators/client/templates/vue/src/main/webapp/app/core/jhi-navbar/jhi-navbar.component.ts.ejs +16 -16
- 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 +12 -0
- package/generators/client/templates/vue/src/main/webapp/app/entities/entities.vue.ejs +5 -0
- package/generators/{common/templates/.huskyrc.ejs → client/templates/vue/src/main/webapp/app/index.ts.ejs} +1 -5
- package/generators/client/templates/vue/src/main/webapp/app/locale/translation.service.ts.ejs +26 -10
- package/generators/client/templates/vue/src/main/webapp/app/main.ts.ejs +12 -5
- 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 +44 -1
- package/generators/client/templates/vue/src/main/webapp/app/router/index.ts.ejs +11 -0
- 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 +5 -3
- package/generators/client/templates/vue/src/main/webapp/app/shared/config/config.ts.ejs +3 -1
- package/generators/client/templates/vue/src/main/webapp/app/shared/data/data-utils.service.ts.ejs +13 -18
- package/generators/client/templates/vue/src/main/webapp/app/shims-vue.d.ts.ejs +18 -0
- package/generators/client/templates/vue/src/test/javascript/jest.conf.js.ejs +28 -8
- 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 +1 -1
- 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 +3 -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 +3 -1
- 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 +33 -1
- package/generators/client/templates/vue/src/test/javascript/spec/app/shared/data/data-utils.service.spec.ts.ejs +6 -6
- package/generators/client/templates/vue/tsconfig.json.ejs +5 -9
- package/generators/{server/templates/src/main/java/package/repository/search/SearchCouchbaseRepository.java.ejs → client/templates/vue/tsconfig.spec.json.ejs} +17 -21
- 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 +164 -119
- package/generators/client/templates/vue/webpack/webpack.dev.js.ejs +19 -80
- 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 -46
- package/generators/cloudfoundry/esm.mjs +21 -0
- package/generators/cloudfoundry/generator.spec.mjs +47 -0
- package/generators/cloudfoundry/index.js +38 -24
- package/generators/common/esm.mjs +21 -0
- package/generators/common/files.js +9 -2
- package/generators/common/generator.spec.mjs +47 -0
- package/generators/common/index.js +66 -11
- package/generators/common/templates/.husky/pre-commit +4 -0
- package/generators/common/templates/.prettierrc.ejs +1 -1
- package/generators/common/templates/{README.md.ejs → README.md.jhi.ejs} +85 -171
- package/generators/common/templates/package.json +5 -5
- package/generators/cypress/esm.mjs +21 -0
- package/generators/cypress/generator.spec.mjs +47 -0
- package/generators/cypress/index.js +17 -14
- package/generators/cypress/templates/cypress.json.ejs +8 -1
- package/generators/cypress/templates/src/test/javascript/cypress/integration/account/login-page.spec.ts.ejs +4 -4
- package/generators/cypress/templates/src/test/javascript/cypress/integration/account/password-page.spec.ts.ejs +2 -2
- package/generators/cypress/templates/src/test/javascript/cypress/integration/account/register-page.spec.ts.ejs +1 -1
- package/generators/cypress/templates/src/test/javascript/cypress/integration/account/reset-password-page.spec.ts.ejs +1 -1
- package/generators/cypress/templates/src/test/javascript/cypress/integration/account/settings-page.spec.ts.ejs +4 -4
- package/generators/cypress/templates/src/test/javascript/cypress/integration/administration/administration.spec.ts.ejs +1 -3
- package/generators/cypress/templates/src/test/javascript/cypress/integration/lighthouse.audits.ts.ejs +3 -3
- package/generators/cypress/templates/src/test/javascript/cypress/plugins/index.ts.ejs +6 -44
- 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/cypress/templates/src/test/javascript/cypress/support/oauth2.ts.ejs +104 -79
- package/generators/database-changelog/esm.mjs +21 -0
- package/generators/database-changelog/generator.spec.mjs +47 -0
- package/generators/database-changelog/index.js +35 -24
- package/generators/database-changelog-liquibase/esm.mjs +21 -0
- package/generators/database-changelog-liquibase/generator.spec.mjs +47 -0
- package/generators/database-changelog-liquibase/index.js +17 -11
- package/generators/database-changelog-liquibase/templates/src/main/resources/config/liquibase/changelog/added_entity.xml.ejs +2 -1
- package/generators/database-changelog-liquibase/templates/src/main/resources/config/liquibase/changelog/updated_entity.xml.ejs +3 -3
- package/generators/database-changelog-liquibase/templates/src/main/resources/config/liquibase/changelog/updated_entity_constraints.xml.ejs +4 -4
- package/generators/docker-base.js +3 -3
- package/generators/docker-compose/esm.mjs +21 -0
- package/generators/docker-compose/generator.spec.mjs +44 -0
- package/generators/docker-compose/index.js +23 -11
- package/generators/docker-compose/templates/README-DOCKER-COMPOSE.md.ejs +1 -1
- package/generators/docker-compose/templates/realm-config/jhipster-realm.json.ejs +113 -39
- package/generators/docker-prompts.js +3 -3
- package/generators/entities/esm.mjs +21 -0
- package/generators/entities/generator.spec.mjs +47 -0
- package/generators/entities/index.js +37 -28
- package/generators/entities-client/esm.mjs +21 -0
- package/generators/entities-client/generator.spec.mjs +47 -0
- package/generators/entities-client/index.js +12 -9
- package/generators/entity/esm.mjs +21 -0
- package/generators/entity/generator.spec.mjs +47 -0
- package/generators/entity/index.js +54 -36
- package/generators/entity-client/esm.mjs +21 -0
- package/generators/entity-client/files.js +6 -11
- package/generators/entity-client/generator.spec.mjs +47 -0
- package/generators/entity-client/index.js +77 -10
- 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 +57 -54
- package/generators/entity-client/templates/angular/src/main/webapp/app/entities/entity-management.module.ts.ejs +2 -2
- package/generators/entity-client/templates/angular/src/main/webapp/app/entities/list/entity-management.component.html.ejs +2 -2
- 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 +17 -4
- package/generators/entity-client/templates/angular/src/main/webapp/app/entities/list/infinite-scroll-template.ejs +3 -4
- package/generators/entity-client/templates/angular/src/main/webapp/app/entities/list/pagination-template.ejs +6 -0
- 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 +262 -110
- 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 +26 -23
- package/generators/entity-client/templates/react/src/main/webapp/app/entities/entity.tsx.ejs +7 -7
- 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 +22 -3
- 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 +2 -0
- package/generators/entity-client/templates/vue/src/test/javascript/spec/app/entities/entity.component.spec.ts.ejs +3 -1
- package/generators/entity-client/templates/vue/src/test/javascript/spec/app/entities/entity.service.spec.ts.ejs +1 -1
- package/generators/entity-i18n/esm.mjs +21 -0
- package/generators/entity-i18n/files.js +61 -26
- package/generators/entity-i18n/generator.spec.mjs +47 -0
- package/generators/entity-i18n/index.js +12 -9
- package/generators/entity-i18n/templates/i18n/entity_hr.json.ejs +0 -0
- package/generators/entity-i18n/templates/i18n/entity_pa.json.ejs +69 -0
- package/generators/entity-server/esm.mjs +21 -0
- package/generators/entity-server/files-couchbase.js +73 -0
- package/generators/entity-server/files.js +102 -31
- package/generators/entity-server/generator.spec.mjs +47 -0
- package/generators/entity-server/index.js +29 -13
- package/generators/entity-server/templates/couchbase/src/main/java/package/domain/Entity.java.jhi.spring_data_couchbase.ejs +212 -0
- package/generators/entity-server/templates/couchbase/src/main/java/package/repository/EntityRepository.java.ejs +138 -0
- package/generators/entity-server/templates/{src → couchbase/src}/main/resources/config/couchmove/changelog/entity.fts.ejs +6 -3
- package/generators/entity-server/templates/partials/save_template.ejs +2 -2
- package/generators/entity-server/templates/src/main/java/package/common/search_stream_template.ejs +3 -3
- package/generators/entity-server/templates/src/main/java/package/common/search_template.ejs +2 -2
- package/generators/entity-server/templates/src/main/java/package/domain/Entity.java.jhi.ejs +375 -0
- package/generators/entity-server/templates/src/main/java/package/domain/Entity.java.jhi.elastic_search.ejs +25 -0
- package/generators/entity-server/templates/src/main/java/package/domain/Entity.java.jhi.hibernate_cache.ejs +41 -0
- package/generators/entity-server/templates/src/main/java/package/domain/Entity.java.jhi.javax_persistence.ejs +130 -0
- package/generators/entity-server/templates/src/main/java/package/domain/Entity.java.jhi.javax_validation.ejs +51 -0
- package/generators/entity-server/templates/src/main/java/package/domain/Entity.java.jhi.spring_data_cassandra.ejs +48 -0
- package/generators/entity-server/templates/src/main/java/package/domain/Entity.java.jhi.spring_data_mongodb.ejs +82 -0
- package/generators/entity-server/templates/src/main/java/package/domain/Entity.java.jhi.spring_data_neo4j.ejs +97 -0
- package/generators/entity-server/templates/src/main/java/package/domain/Entity.java.jhi.spring_data_reactive.ejs +114 -0
- package/generators/entity-server/templates/src/main/java/package/domain/enumeration/Enum.java.ejs +11 -4
- package/generators/entity-server/templates/src/main/java/package/repository/EntityRepository.java.ejs +10 -15
- 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 +6 -9
- 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 +61 -10
- package/generators/entity-server/templates/src/main/java/package/service/EntityQueryService.java.ejs +12 -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 +18 -13
- package/generators/entity-server/templates/src/main/java/package/service/dto/EntityDTO.java.ejs +8 -4
- package/generators/entity-server/templates/src/main/java/package/service/impl/EntityServiceImpl.java.ejs +9 -9
- 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 +52 -54
- 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 +36 -22
- package/generators/export-jdl/esm.mjs +21 -0
- package/generators/export-jdl/generator.spec.mjs +44 -0
- package/generators/export-jdl/index.js +2 -2
- package/generators/gae/esm.mjs +21 -0
- package/generators/gae/generator.spec.mjs +47 -0
- package/generators/gae/index.js +60 -41
- package/generators/gae/templates/dispatch.yaml.ejs +2 -2
- package/generators/generator-base-blueprint.js +35 -37
- package/generators/generator-base-docker.js +4 -24
- package/generators/generator-base-private.js +59 -116
- package/generators/generator-base.js +544 -91
- package/generators/generator-constants.js +43 -29
- package/generators/generator-defaults.js +1 -0
- package/generators/generator-list.js +27 -2
- package/generators/generator-transforms.js +31 -24
- package/generators/gradle/__snapshots__/generator.spec.cjs.snap +59 -0
- package/generators/gradle/constants.cjs +29 -0
- package/generators/gradle/files.cjs +37 -0
- package/generators/gradle/generator.spec.cjs +71 -0
- package/generators/gradle/index.cjs +136 -0
- package/generators/gradle/templates/.eslintignore.jhi.gradle.ejs +19 -0
- package/generators/gradle/templates/.gitignore.jhi.gradle.ejs +28 -0
- package/generators/gradle/templates/.prettierignore.jhi.gradle.ejs +22 -0
- package/generators/gradle/templates/build.gradle.jhi.ejs +48 -0
- package/generators/gradle/templates/gradle.properties.jhi.ejs +57 -0
- package/generators/gradle/templates/settings.gradle.jhi.ejs +20 -0
- package/generators/heroku/esm.mjs +21 -0
- package/generators/heroku/generator.spec.mjs +47 -0
- package/generators/heroku/index.js +92 -80
- package/generators/heroku/templates/Procfile.ejs +1 -1
- package/generators/heroku/templates/application-heroku.yml.ejs +9 -9
- package/generators/heroku/templates/bootstrap-heroku.yml.ejs +2 -2
- package/generators/heroku/templates/pom-profile.xml.ejs +1 -1
- package/generators/info/esm.mjs +21 -0
- package/generators/info/generator.spec.mjs +44 -0
- package/generators/info/index.js +4 -2
- package/generators/init/__snapshots__/generator.spec.cjs.snap +65 -0
- package/generators/init/config.cjs +36 -0
- package/generators/init/constants.cjs +35 -0
- package/generators/init/files.cjs +51 -0
- package/generators/init/generator.spec.cjs +112 -0
- package/generators/init/index.cjs +283 -0
- package/generators/init/mixin.cjs +76 -0
- package/generators/init/options.cjs +27 -0
- package/generators/init/templates/.editorconfig.jhi.ejs +40 -0
- package/generators/init/templates/.eslintignore.jhi.ejs +21 -0
- package/generators/init/templates/.gitattributes.jhi.ejs +170 -0
- package/generators/init/templates/.gitignore.jhi.ejs +128 -0
- package/generators/init/templates/.husky/pre-commit +4 -0
- package/generators/{client/templates/vue/webpack/utils.js.ejs → init/templates/.lintstagedrc.js.ejs} +1 -10
- package/generators/init/templates/.prettierignore.jhi.ejs +23 -0
- package/generators/init/templates/.prettierrc.yml.jhi.ejs +29 -0
- package/generators/init/templates/README.md.ejs +19 -0
- package/generators/init/templates/package.json +6 -0
- package/generators/init/templates/package.json.ejs +41 -0
- package/generators/java/__snapshots__/generator.spec.cjs.snap +118 -0
- package/generators/java/config.cjs +43 -0
- package/generators/java/constants.cjs +69 -0
- package/generators/java/files.cjs +26 -0
- package/generators/java/generator.spec.cjs +87 -0
- package/generators/java/index.cjs +226 -0
- package/generators/java/mixin.cjs +120 -0
- package/generators/java/options.cjs +32 -0
- package/generators/java/templates/.editorconfig.jhi.java.ejs +23 -0
- package/generators/java/templates/.gitignore.jhi.java.ejs +34 -0
- package/generators/java/templates/.prettierrc.yml.jhi.java.ejs +25 -0
- package/generators/kubernetes/esm.mjs +21 -0
- package/generators/kubernetes/files.js +20 -8
- package/generators/kubernetes/generator.spec.mjs +44 -0
- package/generators/kubernetes/index.js +126 -64
- package/generators/kubernetes/kubernetes-constants.js +50 -0
- package/generators/kubernetes/prompts.js +25 -16
- package/generators/kubernetes/templates/README-KUBERNETES.md.ejs +12 -13
- package/generators/kubernetes/templates/db/couchbase.yml.ejs +3 -3
- package/generators/kubernetes/templates/db/elasticsearch.yml.ejs +5 -5
- package/generators/kubernetes/templates/db/mariadb.yml.ejs +5 -5
- package/generators/kubernetes/templates/db/mongodb.yml.ejs +2 -2
- package/generators/kubernetes/templates/db/mssql.yml.ejs +5 -5
- package/generators/kubernetes/templates/db/mysql.yml.ejs +5 -5
- package/generators/kubernetes/templates/db/neo4j.yml.ejs +5 -5
- package/generators/kubernetes/templates/db/postgresql.yml.ejs +5 -5
- package/generators/kubernetes/templates/deployment.yml.ejs +61 -56
- package/generators/kubernetes/templates/ingress.yml.ejs +2 -2
- 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 +11 -9
- package/generators/kubernetes/templates/kubectl-apply.sh.ejs +24 -23
- package/generators/kubernetes/templates/kustomize/kustomization.yml.ejs +27 -27
- package/generators/kubernetes/templates/messagebroker/kafka.yml.ejs +4 -4
- package/generators/kubernetes/templates/monitoring/jhipster-grafana-dashboard.yml.ejs +2 -2
- package/generators/kubernetes/templates/monitoring/jhipster-grafana.yml.ejs +6 -6
- package/generators/kubernetes/templates/monitoring/jhipster-prometheus-crd.yml.ejs +2 -2
- package/generators/kubernetes/templates/registry/application-configmap.yml.ejs +6 -6
- package/generators/kubernetes/templates/registry/consul.yml.ejs +2 -2
- package/generators/kubernetes/templates/registry/jhipster-registry.yml.ejs +4 -4
- package/generators/kubernetes/templates/secret/couchbase-secret.yml.ejs +9 -0
- package/generators/kubernetes/templates/service.yml.ejs +8 -8
- package/generators/kubernetes-base.js +44 -18
- package/generators/kubernetes-helm/esm.mjs +21 -0
- package/generators/kubernetes-helm/files.js +20 -21
- package/generators/kubernetes-helm/generator.spec.mjs +44 -0
- package/generators/kubernetes-helm/index.js +106 -46
- package/generators/kubernetes-helm/templates/README-KUBERNETES-HELM.md.ejs +2 -3
- package/generators/kubernetes-helm/templates/app/Chart.yml.ejs +27 -0
- package/generators/kubernetes-helm/templates/app/helpers.tpl.ejs +4 -15
- package/generators/kubernetes-helm/templates/app/requirements.yml.ejs +11 -6
- package/generators/kubernetes-helm/templates/app/values.yml.ejs +73 -10
- package/generators/kubernetes-helm/templates/csvc/Chart.yml.ejs +17 -0
- package/generators/kubernetes-helm/templates/csvc/helpers.tpl.ejs +1 -1
- package/generators/kubernetes-helm/templates/csvc/requirements.yml.ejs +3 -3
- package/generators/kubernetes-helm/templates/csvc/values.yml.ejs +6 -6
- package/generators/kubernetes-helm/templates/helm-apply.sh.ejs +2 -2
- package/generators/kubernetes-helm/templates/helm-upgrade.sh.ejs +1 -1
- package/generators/kubernetes-knative/esm.mjs +21 -0
- package/generators/kubernetes-knative/files.js +30 -19
- package/generators/kubernetes-knative/generator.spec.mjs +44 -0
- package/generators/kubernetes-knative/index.js +134 -72
- package/generators/kubernetes-knative/prompts.js +7 -3
- package/generators/kubernetes-knative/templates/README-KUBERNETES-KNATIVE.md.ejs +5 -5
- package/generators/kubernetes-knative/templates/helm-apply.sh.ejs +1 -1
- package/generators/kubernetes-knative/templates/istio/gateway.yml.ejs +10 -8
- package/generators/kubernetes-knative/templates/kubectl-apply.sh.ejs +24 -19
- package/generators/kubernetes-knative/templates/service.yml.ejs +32 -32
- package/generators/languages/esm.mjs +21 -0
- package/generators/languages/files.js +73 -0
- package/generators/languages/generator.spec.mjs +47 -0
- package/generators/languages/index.js +45 -22
- package/generators/languages/prompts.js +1 -1
- package/generators/languages/templates/src/main/resources/i18n/messages_hr.properties.ejs +0 -0
- package/generators/languages/templates/src/main/resources/i18n/messages_pa.properties.ejs +41 -0
- package/generators/languages/templates/src/main/webapp/i18n/al/global.json.ejs +2 -2
- package/generators/languages/templates/src/main/webapp/i18n/al/health.json.ejs +17 -15
- package/generators/languages/templates/src/main/webapp/i18n/ar-ly/global.json.ejs +2 -2
- package/generators/languages/templates/src/main/webapp/i18n/ar-ly/health.json.ejs +17 -15
- package/generators/languages/templates/src/main/webapp/i18n/bg/global.json.ejs +2 -2
- package/generators/languages/templates/src/main/webapp/i18n/bg/health.json.ejs +19 -16
- package/generators/languages/templates/src/main/webapp/i18n/bn/global.json.ejs +2 -2
- package/generators/languages/templates/src/main/webapp/i18n/bn/health.json.ejs +17 -15
- package/generators/languages/templates/src/main/webapp/i18n/by/global.json.ejs +2 -2
- package/generators/languages/templates/src/main/webapp/i18n/by/health.json.ejs +17 -15
- package/generators/languages/templates/src/main/webapp/i18n/ca/global.json.ejs +2 -2
- package/generators/languages/templates/src/main/webapp/i18n/ca/health.json.ejs +17 -15
- package/generators/languages/templates/src/main/webapp/i18n/cs/global.json.ejs +2 -2
- package/generators/languages/templates/src/main/webapp/i18n/cs/health.json.ejs +17 -15
- package/generators/languages/templates/src/main/webapp/i18n/da/global.json.ejs +2 -2
- package/generators/languages/templates/src/main/webapp/i18n/da/health.json.ejs +17 -15
- package/generators/languages/templates/src/main/webapp/i18n/de/global.json.ejs +2 -2
- package/generators/languages/templates/src/main/webapp/i18n/de/health.json.ejs +17 -15
- package/generators/languages/templates/src/main/webapp/i18n/el/global.json.ejs +2 -2
- package/generators/languages/templates/src/main/webapp/i18n/el/health.json.ejs +17 -15
- package/generators/languages/templates/src/main/webapp/i18n/en/global.json.ejs +2 -2
- package/generators/languages/templates/src/main/webapp/i18n/en/health.json.ejs +17 -15
- package/generators/languages/templates/src/main/webapp/i18n/es/global.json.ejs +2 -2
- package/generators/languages/templates/src/main/webapp/i18n/es/health.json.ejs +17 -15
- package/generators/languages/templates/src/main/webapp/i18n/et/global.json.ejs +2 -2
- package/generators/languages/templates/src/main/webapp/i18n/et/health.json.ejs +17 -15
- package/generators/languages/templates/src/main/webapp/i18n/fa/global.json.ejs +2 -2
- package/generators/languages/templates/src/main/webapp/i18n/fa/health.json.ejs +17 -15
- package/generators/languages/templates/src/main/webapp/i18n/fi/global.json.ejs +2 -2
- package/generators/languages/templates/src/main/webapp/i18n/fi/health.json.ejs +17 -15
- package/generators/languages/templates/src/main/webapp/i18n/fr/global.json.ejs +2 -2
- package/generators/languages/templates/src/main/webapp/i18n/fr/health.json.ejs +17 -15
- package/generators/languages/templates/src/main/webapp/i18n/gl/global.json.ejs +2 -2
- package/generators/languages/templates/src/main/webapp/i18n/gl/health.json.ejs +17 -15
- package/generators/languages/templates/src/main/webapp/i18n/hi/global.json.ejs +2 -2
- package/generators/languages/templates/src/main/webapp/i18n/hi/health.json.ejs +17 -15
- package/generators/languages/templates/src/main/webapp/i18n/hr/activate.json.ejs +0 -0
- package/generators/languages/templates/src/main/webapp/i18n/hr/configuration.json +0 -0
- package/generators/languages/templates/src/main/webapp/i18n/hr/error.json +0 -0
- package/generators/languages/templates/src/main/webapp/i18n/hr/gateway.json +0 -0
- package/generators/languages/templates/src/main/webapp/i18n/hr/global.json.ejs +2 -2
- package/generators/languages/templates/src/main/webapp/i18n/hr/health.json.ejs +15 -13
- package/generators/languages/templates/src/main/webapp/i18n/hr/home.json +0 -0
- package/generators/languages/templates/src/main/webapp/i18n/hr/login.json +0 -0
- package/generators/languages/templates/src/main/webapp/i18n/hr/logs.json +0 -0
- package/generators/languages/templates/src/main/webapp/i18n/hr/metrics.json +0 -0
- package/generators/languages/templates/src/main/webapp/i18n/hr/password.json +0 -0
- package/generators/languages/templates/src/main/webapp/i18n/hr/register.json +0 -0
- package/generators/languages/templates/src/main/webapp/i18n/hr/reset.json.ejs +1 -2
- package/generators/languages/templates/src/main/webapp/i18n/hr/sessions.json +0 -0
- package/generators/languages/templates/src/main/webapp/i18n/hr/settings.json +0 -0
- package/generators/languages/templates/src/main/webapp/i18n/hr/tracker.json +0 -0
- package/generators/languages/templates/src/main/webapp/i18n/hr/user-management.json +0 -0
- package/generators/languages/templates/src/main/webapp/i18n/hu/global.json.ejs +2 -2
- package/generators/languages/templates/src/main/webapp/i18n/hu/health.json.ejs +17 -15
- package/generators/languages/templates/src/main/webapp/i18n/hy/global.json.ejs +2 -2
- package/generators/languages/templates/src/main/webapp/i18n/hy/health.json.ejs +17 -15
- package/generators/languages/templates/src/main/webapp/i18n/in/global.json.ejs +2 -2
- package/generators/languages/templates/src/main/webapp/i18n/in/health.json.ejs +17 -15
- package/generators/languages/templates/src/main/webapp/i18n/it/global.json.ejs +2 -2
- package/generators/languages/templates/src/main/webapp/i18n/it/health.json.ejs +17 -15
- package/generators/languages/templates/src/main/webapp/i18n/ja/global.json.ejs +2 -2
- package/generators/languages/templates/src/main/webapp/i18n/ja/health.json.ejs +17 -15
- package/generators/languages/templates/src/main/webapp/i18n/ko/global.json.ejs +2 -2
- package/generators/languages/templates/src/main/webapp/i18n/ko/health.json.ejs +17 -15
- package/generators/languages/templates/src/main/webapp/i18n/mr/global.json.ejs +2 -2
- package/generators/languages/templates/src/main/webapp/i18n/mr/health.json.ejs +17 -15
- package/generators/languages/templates/src/main/webapp/i18n/my/global.json.ejs +2 -2
- package/generators/languages/templates/src/main/webapp/i18n/my/health.json.ejs +17 -15
- package/generators/languages/templates/src/main/webapp/i18n/nl/global.json.ejs +2 -2
- package/generators/languages/templates/src/main/webapp/i18n/nl/health.json.ejs +17 -15
- package/generators/languages/templates/src/main/webapp/i18n/pa/activate.json.ejs +27 -0
- package/generators/languages/templates/src/main/webapp/i18n/pa/configuration.json +10 -0
- package/generators/languages/templates/src/main/webapp/i18n/pa/error.json +14 -0
- package/generators/languages/templates/src/main/webapp/i18n/pa/gateway.json +15 -0
- package/generators/languages/templates/src/main/webapp/i18n/pa/global.json.ejs +162 -0
- package/generators/languages/templates/src/main/webapp/i18n/pa/health.json.ejs +71 -0
- package/generators/languages/templates/src/main/webapp/i18n/pa/home.json +19 -0
- package/generators/languages/templates/src/main/webapp/i18n/pa/login.json +19 -0
- package/generators/languages/templates/src/main/webapp/i18n/pa/logs.json +11 -0
- package/generators/languages/templates/src/main/webapp/i18n/pa/metrics.json +102 -0
- package/generators/languages/templates/src/main/webapp/i18n/pa/password.json +12 -0
- package/generators/languages/templates/src/main/webapp/i18n/pa/register.json +24 -0
- package/generators/languages/templates/src/main/webapp/i18n/pa/reset.json.ejs +44 -0
- package/generators/languages/templates/src/main/webapp/i18n/pa/sessions.json +15 -0
- package/generators/languages/templates/src/main/webapp/i18n/pa/settings.json +32 -0
- package/generators/languages/templates/src/main/webapp/i18n/pa/tracker.json +12 -0
- package/generators/languages/templates/src/main/webapp/i18n/pa/user-management.json +31 -0
- package/generators/languages/templates/src/main/webapp/i18n/pl/global.json.ejs +2 -2
- package/generators/languages/templates/src/main/webapp/i18n/pl/health.json.ejs +17 -15
- package/generators/languages/templates/src/main/webapp/i18n/pt-br/global.json.ejs +2 -2
- package/generators/languages/templates/src/main/webapp/i18n/pt-br/health.json.ejs +17 -15
- package/generators/languages/templates/src/main/webapp/i18n/pt-pt/global.json.ejs +2 -2
- package/generators/languages/templates/src/main/webapp/i18n/pt-pt/health.json.ejs +17 -15
- package/generators/languages/templates/src/main/webapp/i18n/ro/global.json.ejs +2 -2
- package/generators/languages/templates/src/main/webapp/i18n/ro/health.json.ejs +17 -15
- package/generators/languages/templates/src/main/webapp/i18n/ru/global.json.ejs +2 -2
- package/generators/languages/templates/src/main/webapp/i18n/ru/health.json.ejs +17 -15
- package/generators/languages/templates/src/main/webapp/i18n/si/global.json.ejs +2 -2
- package/generators/languages/templates/src/main/webapp/i18n/si/health.json.ejs +17 -15
- package/generators/languages/templates/src/main/webapp/i18n/sk/global.json.ejs +2 -2
- package/generators/languages/templates/src/main/webapp/i18n/sk/health.json.ejs +17 -15
- package/generators/languages/templates/src/main/webapp/i18n/sr/global.json.ejs +2 -2
- package/generators/languages/templates/src/main/webapp/i18n/sr/health.json.ejs +16 -14
- package/generators/languages/templates/src/main/webapp/i18n/sv/global.json.ejs +2 -2
- package/generators/languages/templates/src/main/webapp/i18n/sv/health.json.ejs +17 -15
- package/generators/languages/templates/src/main/webapp/i18n/ta/global.json.ejs +2 -2
- package/generators/languages/templates/src/main/webapp/i18n/ta/health.json.ejs +17 -15
- package/generators/languages/templates/src/main/webapp/i18n/te/global.json.ejs +2 -2
- package/generators/languages/templates/src/main/webapp/i18n/te/health.json.ejs +17 -15
- package/generators/languages/templates/src/main/webapp/i18n/th/global.json.ejs +2 -2
- package/generators/languages/templates/src/main/webapp/i18n/th/health.json.ejs +17 -15
- package/generators/languages/templates/src/main/webapp/i18n/tr/global.json.ejs +2 -2
- package/generators/languages/templates/src/main/webapp/i18n/tr/health.json.ejs +17 -15
- package/generators/languages/templates/src/main/webapp/i18n/ua/global.json.ejs +2 -2
- package/generators/languages/templates/src/main/webapp/i18n/ua/health.json.ejs +17 -15
- package/generators/languages/templates/src/main/webapp/i18n/uz-Cyrl-uz/global.json.ejs +2 -2
- package/generators/languages/templates/src/main/webapp/i18n/uz-Cyrl-uz/health.json.ejs +16 -14
- package/generators/languages/templates/src/main/webapp/i18n/uz-Latn-uz/global.json.ejs +2 -2
- package/generators/languages/templates/src/main/webapp/i18n/uz-Latn-uz/health.json.ejs +17 -15
- package/generators/languages/templates/src/main/webapp/i18n/vi/global.json.ejs +2 -2
- package/generators/languages/templates/src/main/webapp/i18n/vi/health.json.ejs +17 -15
- package/generators/languages/templates/src/main/webapp/i18n/zh-cn/global.json.ejs +2 -2
- package/generators/languages/templates/src/main/webapp/i18n/zh-cn/health.json.ejs +17 -15
- package/generators/languages/templates/src/main/webapp/i18n/zh-tw/global.json.ejs +2 -2
- package/generators/languages/templates/src/main/webapp/i18n/zh-tw/health.json.ejs +17 -15
- package/generators/languages/templates/src/test/resources/i18n/messages_hr.properties.ejs +0 -0
- package/generators/languages/templates/src/test/resources/i18n/messages_pa.properties.ejs +4 -0
- package/generators/maven/__snapshots__/generator.spec.cjs.snap +53 -0
- package/generators/maven/constants.cjs +27 -0
- package/generators/maven/files.cjs +36 -0
- package/generators/maven/generator.spec.cjs +78 -0
- package/generators/maven/index.cjs +131 -0
- package/generators/maven/templates/.eslintignore.jhi.maven.ejs +19 -0
- package/generators/maven/templates/.gitignore.jhi.maven.ejs +9 -0
- package/generators/maven/templates/.mvn/wrapper/MavenWrapperDownloader.java +117 -0
- package/generators/maven/templates/.mvn/wrapper/maven-wrapper.jar +0 -0
- package/generators/maven/templates/.mvn/wrapper/maven-wrapper.properties +2 -0
- package/generators/maven/templates/.prettierignore.jhi.maven.ejs +3 -0
- package/generators/maven/templates/mvnw +310 -0
- package/generators/maven/templates/mvnw.cmd +182 -0
- package/generators/maven/templates/pom.xml.jhi.ejs +98 -0
- package/generators/openapi-client/esm.mjs +21 -0
- package/generators/openapi-client/files.js +21 -15
- package/generators/openapi-client/generator.spec.mjs +47 -0
- package/generators/openapi-client/index.js +80 -28
- package/generators/openapi-client/prompts.js +6 -2
- package/generators/openshift/esm.mjs +21 -0
- package/generators/openshift/files.js +12 -5
- package/generators/openshift/generator.spec.mjs +44 -0
- package/generators/openshift/index.js +136 -64
- package/generators/openshift/prompts.js +12 -4
- package/generators/openshift/templates/apply.sh.ejs +6 -6
- package/generators/openshift/templates/db/cassandra.yml.ejs +8 -9
- package/generators/openshift/templates/db/couchbase.yml.ejs +8 -9
- package/generators/openshift/templates/db/elasticsearch.yml.ejs +8 -9
- package/generators/openshift/templates/db/mariadb.yml.ejs +8 -9
- package/generators/openshift/templates/db/mongodb.yml.ejs +8 -9
- package/generators/openshift/templates/db/mysql.yml.ejs +8 -9
- package/generators/openshift/templates/db/postgresql.yml.ejs +8 -9
- package/generators/openshift/templates/deployment.yml.ejs +46 -46
- package/generators/openshift/templates/messagebroker/kafka.yml.ejs +13 -14
- package/generators/openshift/templates/monitoring/jhipster-metrics.yml.ejs +17 -17
- package/generators/openshift/templates/registry/application-configmap.yml.ejs +6 -6
- package/generators/options.js +63 -0
- package/generators/page/esm.mjs +21 -0
- package/generators/page/generator.spec.mjs +47 -0
- package/generators/page/index.js +17 -13
- package/generators/project-name/config.cjs +40 -0
- package/generators/project-name/constants.cjs +37 -0
- package/generators/project-name/generator.spec.cjs +43 -0
- package/generators/project-name/index.cjs +194 -0
- package/generators/project-name/mixin.cjs +82 -0
- package/generators/project-name/options.cjs +33 -0
- package/generators/server/__snapshots__/generator.spec.mjs.snap +1848 -0
- package/generators/server/esm.mjs +21 -0
- package/generators/server/files-couchbase.js +155 -0
- package/generators/server/files-sql.js +52 -0
- package/generators/server/files.js +302 -286
- package/generators/server/generator.spec.mjs +52 -0
- package/generators/server/index.js +193 -97
- package/generators/server/needle-api/needle-server-cache.js +7 -8
- package/generators/server/prompts.js +104 -62
- package/generators/server/templates/.mvn/wrapper/MavenWrapperDownloader.java +1 -1
- package/generators/server/templates/.mvn/wrapper/maven-wrapper.properties +1 -1
- package/generators/server/templates/build.gradle.ejs +43 -9
- package/generators/server/templates/checkstyle.xml.ejs +2 -2
- package/generators/server/templates/{src → couchbase/src}/main/docker/couchbase/Couchbase.Dockerfile.ejs +0 -0
- package/generators/server/templates/{src → couchbase/src}/main/docker/couchbase/scripts/configure-node.sh.ejs +4 -4
- package/generators/server/templates/{src → couchbase/src}/main/docker/couchbase-cluster.yml.ejs +0 -0
- package/generators/server/templates/{src → couchbase/src}/main/docker/couchbase.yml.ejs +0 -0
- package/generators/server/templates/couchbase/src/main/java/package/config/couchbase/CustomCouchbaseRepositoryFactory.java.ejs +83 -0
- package/generators/server/templates/couchbase/src/main/java/package/config/couchbase/CustomCouchbaseRepositoryFactoryBean.java.ejs +40 -0
- package/generators/server/templates/couchbase/src/main/java/package/config/couchbase/CustomCouchbaseRepositoryQuery.java.ejs +44 -0
- package/generators/server/templates/couchbase/src/main/java/package/config/couchbase/CustomN1qlQueryCreator.java.ejs +162 -0
- package/generators/server/templates/couchbase/src/main/java/package/config/couchbase/CustomN1qlRepositoryQueryExecutor.java.ejs +104 -0
- package/generators/server/templates/couchbase/src/main/java/package/config/couchbase/package-info.java.ejs +25 -0
- package/generators/server/templates/couchbase/src/main/java/package/repository/JHipsterCouchbaseRepository.java.ejs +114 -0
- package/generators/server/templates/couchbase/src/main/java/package/repository/PersistentTokenRepository_couchbase.java.ejs +49 -0
- package/generators/server/templates/{src → couchbase/src}/main/resources/config/couchmove/changelog/V0.1__initial_setup/ROLE_ADMIN.json.ejs +0 -0
- package/generators/server/templates/{src → couchbase/src}/main/resources/config/couchmove/changelog/V0.1__initial_setup/ROLE_USER.json.ejs +0 -0
- package/generators/server/templates/couchbase/src/main/resources/config/couchmove/changelog/V0.1__initial_setup/user__admin.json.ejs +18 -0
- package/generators/server/templates/couchbase/src/main/resources/config/couchmove/changelog/V0.1__initial_setup/user__user.json.ejs +17 -0
- package/generators/server/templates/{src → couchbase/src}/main/resources/config/couchmove/changelog/V0__create_indexes.n1ql.ejs +3 -6
- package/generators/server/templates/couchbase/src/test/java/package/CouchbaseTestContainerExtension.java.ejs +55 -0
- package/generators/server/templates/{src/test/java/package/repository/CustomN1qlCouchbaseRepositoryTest.java.ejs → couchbase/src/test/java/package/repository/JHipsterCouchbaseRepositoryTest.java.ejs} +3 -4
- package/generators/server/templates/gradle/docker.gradle.ejs +3 -3
- package/generators/server/templates/gradle/profile_dev.gradle.ejs +36 -12
- package/generators/server/templates/gradle/profile_prod.gradle.ejs +7 -7
- package/generators/server/templates/gradle/war.gradle.ejs +4 -4
- package/generators/server/templates/gradle.properties.ejs +21 -17
- package/generators/server/templates/mvnw +1 -1
- package/generators/server/templates/mvnw.cmd +1 -1
- package/generators/server/templates/npmw +1 -1
- package/generators/server/templates/npmw.cmd +1 -1
- package/generators/server/templates/package.json.ejs +4 -8
- package/generators/server/templates/pom.xml.ejs +352 -160
- package/generators/server/templates/settings.gradle.ejs +38 -9
- 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 +80 -75
- package/generators/server/templates/src/main/docker/config/README.md.ejs +2 -2
- package/generators/server/templates/src/main/docker/config/realm-config/jhipster-realm.json.ejs +117 -41
- package/generators/server/templates/src/main/docker/elasticsearch.yml.ejs +12 -1
- package/generators/server/templates/src/main/docker/jhipster-control-center.yml.ejs +8 -8
- package/generators/server/templates/src/main/docker/jhipster-registry.yml.ejs +3 -3
- package/generators/server/templates/src/main/docker/prometheus/prometheus.yml.ejs +1 -1
- package/generators/server/templates/src/main/java/package/Application.java.ejs +6 -5
- package/generators/server/templates/src/main/java/package/aop/logging/LoggingAspect.java.ejs +1 -1
- package/generators/server/templates/src/main/java/package/client/OAuth2InterceptedFeignConfiguration.java.ejs +1 -1
- package/generators/server/templates/src/main/java/package/config/CacheConfiguration.java.ejs +94 -96
- package/generators/server/templates/src/main/java/package/config/Constants.java.ejs +8 -8
- package/generators/server/templates/src/main/java/package/config/DatabaseConfiguration_cassandra.java.ejs +2 -8
- package/generators/server/templates/src/main/java/package/config/DatabaseConfiguration_couchbase.java.ejs +116 -33
- package/generators/server/templates/src/main/java/package/config/DatabaseConfiguration_mongodb.java.ejs +4 -6
- package/generators/server/templates/src/main/java/package/config/DatabaseConfiguration_neo4j.java.ejs +4 -6
- package/generators/server/templates/src/main/java/package/config/DatabaseConfiguration_sql.java.ejs +13 -13
- package/generators/server/templates/src/main/java/package/config/ElasticsearchConfiguration.java.ejs +5 -4
- package/generators/server/templates/src/main/java/package/config/FeignConfiguration.java.ejs +6 -1
- package/generators/server/templates/src/main/java/package/config/JacksonConfiguration.java.ejs +3 -3
- package/generators/server/templates/src/main/java/package/config/LiquibaseConfiguration.java.ejs +5 -5
- package/generators/server/templates/src/main/java/package/config/LocaleConfiguration.java.ejs +1 -4
- package/generators/server/templates/src/main/java/package/config/LoggingConfiguration.java.ejs +13 -13
- package/generators/server/templates/src/main/java/package/config/OAuth2Configuration.java.ejs +38 -0
- package/generators/server/templates/src/main/java/package/config/SecurityConfiguration.java.ejs +99 -102
- package/generators/server/templates/src/main/java/package/config/SecurityConfiguration_reactive.java.ejs +114 -66
- package/generators/server/templates/src/main/java/package/config/WebConfigurer.java.ejs +31 -32
- package/generators/server/templates/src/main/java/package/config/WebsocketSecurityConfiguration.java.ejs +4 -2
- package/generators/server/templates/src/main/java/package/config/apidocs/GatewaySwaggerResourcesProvider.java.ejs +5 -5
- package/generators/server/templates/src/main/java/package/config/dbmigrations/InitialSetupMigration.java.ejs +2 -6
- package/generators/server/templates/src/main/java/package/domain/AbstractAuditingEntity.java.ejs +48 -36
- package/generators/server/templates/src/main/java/package/domain/Authority.java.ejs +20 -20
- package/generators/server/templates/src/main/java/package/domain/PersistentToken.java.ejs +55 -55
- package/generators/server/templates/src/main/java/package/domain/User.java.ejs +185 -160
- package/generators/server/templates/src/main/java/package/management/SecurityMetersService.java.ejs +68 -0
- package/generators/server/templates/src/main/java/package/repository/AuthorityRepository.java.ejs +40 -15
- package/generators/server/templates/src/main/java/package/repository/PersistentTokenRepository.java.ejs +14 -36
- package/generators/server/templates/src/main/java/package/repository/UserRepository.java.ejs +209 -163
- package/generators/server/templates/src/main/java/package/repository/rowmapper/UserRowMapper.java.ejs +4 -4
- package/generators/server/templates/src/main/java/package/repository/search/UserSearchRepository.java.ejs +33 -7
- package/generators/server/templates/src/main/java/package/repository/search/package-info.java.ejs +2 -2
- package/generators/server/templates/src/main/java/package/security/DomainUserDetailsService.java.ejs +11 -11
- package/generators/server/templates/src/main/java/package/security/PersistentTokenRememberMeServices.java.ejs +43 -45
- package/generators/server/templates/src/main/java/package/security/SecurityUtils.java.ejs +62 -29
- package/generators/server/templates/src/main/java/package/security/jwt/JWTFilter.java.ejs +10 -10
- package/generators/server/templates/src/main/java/package/security/jwt/TokenProvider.java.ejs +31 -6
- package/generators/server/templates/src/main/java/package/security/oauth2/CustomClaimConverter.java.ejs +29 -4
- package/generators/server/templates/src/main/java/package/service/MailService.java.ejs +2 -2
- package/generators/server/templates/src/main/java/package/service/UserService.java.ejs +326 -304
- package/generators/server/templates/src/main/java/package/service/dto/AdminUserDTO.java.ejs +24 -24
- package/generators/server/templates/src/main/java/package/service/dto/UserDTO.java.ejs +7 -7
- package/generators/server/templates/src/main/java/package/service/mapper/UserMapper.java.ejs +11 -11
- package/generators/server/templates/src/main/java/package/web/filter/OAuth2ReactiveRefreshTokensWebFilter.java.ejs +71 -0
- package/generators/server/templates/src/main/java/package/web/filter/OAuth2RefreshTokensWebFilter.java.ejs +103 -0
- package/generators/server/templates/src/main/java/package/web/filter/SpaWebFilter.java.ejs +3 -3
- package/generators/server/templates/src/main/java/package/web/rest/AccountResource.java.ejs +77 -76
- package/generators/server/templates/src/main/java/package/web/rest/ClientForwardController.java.ejs +3 -3
- package/generators/server/templates/src/main/java/package/web/rest/KafkaResource.java.ejs +12 -12
- package/generators/server/templates/src/main/java/package/web/rest/LogoutResource.java.ejs +58 -22
- package/generators/server/templates/src/main/java/package/web/rest/PublicUserResource.java.ejs +62 -39
- package/generators/server/templates/src/main/java/package/web/rest/UserJWTController.java.ejs +3 -3
- package/generators/server/templates/src/main/java/package/web/rest/UserResource.java.ejs +51 -51
- package/generators/server/templates/src/main/java/package/web/rest/errors/ErrorConstants.java.ejs +4 -4
- package/generators/server/templates/src/main/java/package/web/rest/errors/ExceptionTranslator.java.ejs +19 -19
- package/generators/server/templates/src/main/java/package/web/rest/vm/ManagedUserVM.java.ejs +4 -4
- package/generators/server/templates/src/main/resources/config/application-dev.yml.ejs +105 -102
- package/generators/server/templates/src/main/resources/config/application-prod.yml.ejs +78 -78
- package/generators/server/templates/src/main/resources/config/application-tls.yml.ejs +1 -1
- package/generators/server/templates/src/main/resources/config/application.yml.ejs +42 -55
- package/generators/server/templates/src/main/resources/config/bootstrap-prod.yml.ejs +7 -7
- package/generators/server/templates/src/main/resources/config/bootstrap.yml.ejs +6 -6
- package/generators/server/templates/src/main/resources/config/cql/changelog/create-tables.cql.ejs +1 -1
- package/generators/server/templates/src/main/resources/config/liquibase/changelog/initial_schema.xml.ejs +26 -34
- package/generators/server/templates/src/main/resources/config/liquibase/data/user.csv.ejs +2 -2
- package/generators/server/templates/src/main/resources/config/liquibase/data/user_authority.csv.ejs +1 -1
- package/generators/server/templates/src/main/resources/config/liquibase/master.xml.ejs +14 -14
- package/generators/server/templates/src/main/resources/config/{couchmove/changelog/V0.1__initial_setup → neo4j/migrations}/user__admin.json.ejs +2 -2
- package/generators/server/templates/src/main/resources/config/{couchmove/changelog/V0.1__initial_setup → neo4j/migrations}/user__user.json.ejs +2 -2
- package/generators/server/templates/src/main/resources/h2.server.properties.ejs +2 -2
- package/generators/server/templates/src/main/resources/logback-spring.xml.ejs +55 -55
- package/generators/server/templates/src/main/resources/static/microservices_index.html.ejs +1 -1
- package/generators/server/templates/src/main/resources/swagger/api.yml.ejs +6 -6
- package/generators/server/templates/src/test/java/package/IntegrationTest.java.ejs +13 -7
- package/generators/server/templates/src/test/java/package/ReactiveSqlTestContainerExtension.java.ejs +9 -9
- package/generators/server/templates/src/test/java/package/config/JHipsterBlockHoundIntegration.java.ejs +3 -0
- package/generators/server/templates/src/test/java/package/config/TestSecurityConfiguration.java.ejs +27 -28
- package/generators/server/templates/src/test/java/package/config/WebConfigurerTest.java.ejs +5 -7
- package/generators/server/templates/src/test/java/package/cucumber/CucumberIT.java.ejs +6 -4
- package/generators/server/templates/src/test/java/package/management/SecurityMetersServiceTests.java.ejs +113 -0
- package/generators/server/templates/src/test/java/package/repository/timezone/DateTimeWrapper.java.ejs +3 -3
- package/generators/server/templates/src/test/java/package/security/DomainUserDetailsServiceIT.java.ejs +24 -24
- package/generators/server/templates/src/test/java/package/security/SecurityUtilsUnitTest.java.ejs +97 -10
- package/generators/server/templates/src/test/java/package/security/jwt/JWTFilterTest.java.ejs +23 -18
- 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 +108 -4
- package/generators/server/templates/src/test/java/package/service/MailServiceIT.java.ejs +4 -4
- package/generators/server/templates/src/test/java/package/service/UserServiceIT.java.ejs +133 -133
- package/generators/server/templates/src/test/java/package/service/mapper/UserMapperTest.java.ejs +17 -17
- package/generators/server/templates/src/test/java/package/test/util/OAuth2TestUtil.java.ejs +104 -0
- package/generators/server/templates/src/test/java/package/web/rest/AccountResourceIT.java.ejs +397 -338
- package/generators/server/templates/src/test/java/package/web/rest/AccountResourceIT_oauth2.java.ejs +67 -70
- package/generators/server/templates/src/test/java/package/web/rest/AccountResourceIT_skipUserManagement.java.ejs +20 -20
- package/generators/server/templates/src/test/java/package/web/rest/ClientForwardControllerTest.java.ejs +2 -2
- package/generators/server/templates/src/test/java/package/web/rest/KafkaResourceIT.java.ejs +14 -14
- package/generators/server/templates/src/test/java/package/web/rest/LogoutResourceIT.java.ejs +41 -34
- package/generators/server/templates/src/test/java/package/web/rest/PublicUserResourceIT.java.ejs +59 -59
- package/generators/server/templates/src/test/java/package/web/rest/TestUtil.java.ejs +25 -55
- package/generators/server/templates/src/test/java/package/web/rest/UserJWTControllerIT.java.ejs +35 -35
- package/generators/server/templates/src/test/java/package/web/rest/UserResourceIT.java.ejs +263 -261
- package/generators/server/templates/src/test/java/package/web/rest/errors/ExceptionTranslatorIT.java.ejs +13 -13
- package/generators/server/templates/src/test/java/package/web/rest/errors/ExceptionTranslatorTestController.java.ejs +3 -3
- package/generators/server/templates/src/test/resources/config/application-testcontainers.yml.ejs +17 -17
- package/generators/server/templates/src/test/resources/config/application.yml.ejs +34 -36
- package/generators/server/templates/src/test/resources/config/bootstrap.yml.ejs +4 -4
- package/generators/server/templates/src/test/resources/logback.xml.ejs +54 -52
- package/generators/spring-boot/__snapshots__/generator.spec.cjs.snap +80 -0
- package/generators/spring-boot/config.cjs +30 -0
- package/generators/spring-boot/constants.cjs +28 -0
- package/generators/spring-boot/files.cjs +46 -0
- package/generators/spring-boot/generator.spec.cjs +64 -0
- package/generators/spring-boot/index.cjs +162 -0
- package/generators/spring-boot/mixin.cjs +82 -0
- package/generators/spring-boot/options.cjs +19 -0
- package/generators/spring-boot/templates/build.gradle.jhi.spring-boot.ejs +29 -0
- package/generators/spring-boot/templates/pom.xml.jhi.spring-boot.ejs +45 -0
- package/generators/spring-boot/templates/src/main/java/package/Application.java.jhi.ejs +31 -0
- package/generators/spring-boot/templates/src/main/resources/application.properties.jhi.ejs +19 -0
- package/generators/spring-boot/templates/src/test/java/package/ApplicationTests.java.jhi.ejs +31 -0
- package/generators/spring-controller/esm.mjs +21 -0
- package/generators/spring-controller/generator.spec.mjs +47 -0
- package/generators/spring-controller/index.js +39 -19
- package/generators/spring-controller/templates/src/main/java/package/web/rest/Resource.java.ejs +5 -5
- package/generators/spring-controller/templates/src/test/java/package/web/rest/ResourceIT.java.ejs +2 -2
- package/generators/spring-service/esm.mjs +21 -0
- package/generators/spring-service/generator.spec.mjs +47 -0
- package/generators/spring-service/index.js +33 -13
- package/generators/spring-service/templates/src/main/java/package/service/Service.java.ejs +16 -8
- package/generators/spring-service/templates/src/main/java/package/service/impl/ServiceImpl.java.ejs +9 -5
- package/generators/statistics.js +3 -1
- package/generators/upgrade/esm.mjs +21 -0
- package/generators/upgrade/generator.spec.mjs +44 -0
- package/generators/upgrade/index.js +5 -6
- package/generators/upgrade-config/esm.mjs +21 -0
- package/generators/upgrade-config/generator.spec.mjs +44 -0
- package/generators/upgrade-config/index.js +2 -2
- package/generators/utils.js +78 -11
- package/generators/workspaces/esm.mjs +21 -0
- package/generators/workspaces/generator.spec.mjs +47 -0
- package/generators/workspaces/index.js +20 -12
- package/jdl/converters/jdl-to-json/jdl-to-json-field-converter.js +8 -0
- package/jdl/converters/json-to-jdl-entity-converter.js +1 -0
- package/jdl/jhipster/application-options.js +18 -3
- package/jdl/jhipster/default-application-options.js +13 -7
- package/jdl/jhipster/deployment-options.js +25 -12
- package/jdl/jhipster/kubernetes-platform-types.js +40 -0
- package/jdl/jhipster/message-broker-types.js +1 -0
- package/jdl/jhipster/openapi-options.js +21 -0
- package/jdl/jhipster/openshift-platform-types.js +27 -0
- package/jdl/models/jdl-enum-value.js +2 -1
- package/jdl/models/jdl-enum.js +11 -1
- package/jdl/parsing/jdl-ast-builder-visitor.js +10 -2
- package/jdl/parsing/jdl-parser.js +3 -0
- package/jdl/parsing/lexer/application-tokens.js +4 -0
- package/jdl/parsing/validator.js +7 -1
- package/jdl/validators/application-validator.js +1 -0
- package/lib/constants/generators.mjs +20 -0
- package/lib/constants/priorities.cjs +131 -0
- package/lib/constants/priorities.mjs +19 -0
- package/lib/support/index.cjs +21 -0
- package/lib/support/mixin.cjs +199 -0
- package/lib/support/shared-data.cjs +74 -0
- package/package.json +55 -36
- package/utils/entity.js +21 -4
- package/utils/field.js +27 -3
- package/utils/liquibase.js +31 -20
- package/utils/multi-step-transform/index.js +52 -0
- package/utils/multi-step-transform/template-data.js +60 -0
- package/utils/multi-step-transform/template-file-fs.js +43 -0
- package/utils/multi-step-transform/template-file.js +84 -0
- package/NOTICE +0 -4
- package/generators/client/templates/angular/.npmrc.ejs +0 -1
- package/generators/client/templates/vue/webpack/dev.env.js.ejs +0 -18
- 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 -16
- package/generators/entity-server/templates/src/main/java/package/domain/Entity.java.ejs +0 -769
- package/generators/server/templates/src/main/java/package/config/OAuth2SsoConfiguration.java.ejs +0 -94
- package/generators/server/templates/src/main/java/package/config/OAuth2TokenServicesConfiguration.java.ejs +0 -68
- package/generators/server/templates/src/main/java/package/repository/CustomN1qlCouchbaseRepository.java.ejs +0 -135
- package/generators/server/templates/src/main/java/package/repository/CustomReactiveN1qlCouchbaseRepository.java.ejs +0 -157
- package/generators/server/templates/src/main/java/package/repository/N1qlCouchbaseRepository.java.ejs +0 -46
- package/generators/server/templates/src/main/java/package/repository/ReactiveN1qlCouchbaseRepository.java.ejs +0 -47
- package/generators/server/templates/src/test/java/package/config/DatabaseConfigurationIT.java.ejs +0 -112
|
@@ -19,60 +19,63 @@
|
|
|
19
19
|
package <%= packageName %>.service;
|
|
20
20
|
|
|
21
21
|
import <%= packageName %>.config.Constants;
|
|
22
|
-
<%_ if (
|
|
22
|
+
<%_ if (databaseTypeSql || databaseTypeMongodb || databaseTypeNeo4j || databaseTypeCouchbase) { _%>
|
|
23
23
|
import <%= packageName %>.domain.Authority;
|
|
24
24
|
<%_ } _%>
|
|
25
|
-
<%_ if (
|
|
25
|
+
<%_ if (!databaseTypeNo) { _%>
|
|
26
26
|
import <%= packageName %>.domain.<%= asEntity('User') %>;
|
|
27
|
-
|
|
27
|
+
<%_ if (databaseTypeSql || databaseTypeMongodb || databaseTypeNeo4j || databaseTypeCouchbase) { _%>
|
|
28
28
|
import <%= packageName %>.repository.AuthorityRepository;
|
|
29
|
-
|
|
29
|
+
<%_ if (authenticationTypeSession && !reactive) { _%>
|
|
30
30
|
import <%= packageName %>.repository.PersistentTokenRepository;
|
|
31
|
-
<%_ } _%>
|
|
32
31
|
<%_ } _%>
|
|
32
|
+
<%_ } _%>
|
|
33
33
|
import <%= packageName %>.repository.UserRepository;
|
|
34
|
-
|
|
34
|
+
<%_ if (searchEngineElasticsearch) { _%>
|
|
35
35
|
import <%= packageName %>.repository.search.UserSearchRepository;
|
|
36
|
-
|
|
37
|
-
|
|
36
|
+
<%_ } _%>
|
|
37
|
+
<%_ if (!authenticationTypeOauth2) { _%>
|
|
38
38
|
import <%= packageName %>.security.AuthoritiesConstants;
|
|
39
|
-
|
|
39
|
+
<%_ } _%>
|
|
40
40
|
import <%= packageName %>.security.SecurityUtils;
|
|
41
41
|
<%_ } _%>
|
|
42
42
|
import <%= packageName %>.service.dto.<%= asDto('AdminUser') %>;
|
|
43
43
|
import <%= packageName %>.service.dto.<%= asDto('User') %>;
|
|
44
|
-
<%_ if (
|
|
44
|
+
<%_ if (!authenticationTypeOauth2) { _%>
|
|
45
45
|
|
|
46
46
|
import tech.jhipster.security.RandomUtil;
|
|
47
47
|
<%_ } _%>
|
|
48
48
|
|
|
49
|
-
<%_ if (
|
|
49
|
+
<%_ if (!databaseTypeNo) { _%>
|
|
50
50
|
import org.slf4j.Logger;
|
|
51
51
|
import org.slf4j.LoggerFactory;
|
|
52
52
|
<%_ } _%>
|
|
53
|
-
<%_ if (cacheManagerIsAvailable
|
|
53
|
+
<%_ if (cacheManagerIsAvailable) { _%>
|
|
54
54
|
import org.springframework.cache.CacheManager;
|
|
55
55
|
<%_ } _%>
|
|
56
|
-
<%_ if (
|
|
57
|
-
|
|
56
|
+
<%_ if (databaseTypeSql || databaseTypeMongodb || databaseTypeNeo4j || databaseTypeCouchbase) { _%>
|
|
57
|
+
<%_ if (!reactive) { _%>
|
|
58
58
|
import org.springframework.data.domain.Page;
|
|
59
|
+
<%_ if (databaseTypeCouchbase) { _%>
|
|
60
|
+
import org.springframework.data.domain.PageImpl;
|
|
59
61
|
<%_ } _%>
|
|
62
|
+
<%_ } _%>
|
|
60
63
|
import org.springframework.data.domain.Pageable;
|
|
61
|
-
|
|
64
|
+
<%_ if (!authenticationTypeOauth2) { _%>
|
|
62
65
|
import org.springframework.scheduling.annotation.Scheduled;
|
|
63
|
-
|
|
66
|
+
<%_ } _%>
|
|
64
67
|
<%_ } _%>
|
|
65
|
-
<%_ if (
|
|
68
|
+
<%_ if (authenticationTypeOauth2) { _%>
|
|
66
69
|
import org.springframework.security.authentication.AbstractAuthenticationToken;
|
|
67
70
|
import org.springframework.security.core.GrantedAuthority;
|
|
68
71
|
import org.springframework.security.oauth2.client.authentication.OAuth2AuthenticationToken;
|
|
69
72
|
import org.springframework.security.oauth2.server.resource.authentication.JwtAuthenticationToken;
|
|
70
73
|
<%_ } _%>
|
|
71
|
-
<%_ if (
|
|
74
|
+
<%_ if (!authenticationTypeOauth2) { _%>
|
|
72
75
|
import org.springframework.security.crypto.password.PasswordEncoder;
|
|
73
76
|
<%_ } _%>
|
|
74
77
|
import org.springframework.stereotype.Service;
|
|
75
|
-
<%_ if (
|
|
78
|
+
<%_ if (databaseTypeSql) { _%>
|
|
76
79
|
import org.springframework.transaction.annotation.Transactional;
|
|
77
80
|
<%_ } _%>
|
|
78
81
|
<%_ if (reactive) { _%>
|
|
@@ -81,21 +84,21 @@ import reactor.core.publisher.Mono;
|
|
|
81
84
|
import reactor.core.scheduler.Schedulers;
|
|
82
85
|
<%_ } _%>
|
|
83
86
|
|
|
84
|
-
<%_ if ((
|
|
87
|
+
<%_ if ((databaseTypeSql || databaseTypeMongodb || databaseTypeNeo4j || databaseTypeCouchbase) && authenticationTypeSession && !reactive) { _%>
|
|
85
88
|
import java.time.LocalDate;
|
|
86
89
|
<%_ } _%>
|
|
87
|
-
<%_ if (
|
|
90
|
+
<%_ if (!databaseTypeNo) { _%>
|
|
88
91
|
import java.time.Instant;
|
|
89
92
|
<%_ } _%>
|
|
90
|
-
<%_ if (
|
|
93
|
+
<%_ if (databaseTypeSql && reactive && !authenticationTypeOauth2) { _%>
|
|
91
94
|
import java.time.LocalDateTime;
|
|
92
95
|
import java.time.ZoneOffset;
|
|
93
96
|
<%_ } _%>
|
|
94
|
-
<%_ if (
|
|
97
|
+
<%_ if (!authenticationTypeOauth2) { _%>
|
|
95
98
|
import java.time.temporal.ChronoUnit;
|
|
96
99
|
<%_ } _%>
|
|
97
100
|
import java.util.*;
|
|
98
|
-
<%_ if (!reactive ||
|
|
101
|
+
<%_ if (!reactive || authenticationTypeOauth2) { _%>
|
|
99
102
|
import java.util.stream.Collectors;
|
|
100
103
|
<%_ } _%>
|
|
101
104
|
|
|
@@ -103,57 +106,57 @@ import java.util.stream.Collectors;
|
|
|
103
106
|
* Service class for managing users.
|
|
104
107
|
*/
|
|
105
108
|
@Service
|
|
106
|
-
<%_ if (
|
|
109
|
+
<%_ if (databaseTypeSql && !reactive) { _%>
|
|
107
110
|
@Transactional
|
|
108
111
|
<%_ } _%>
|
|
109
112
|
public class UserService {
|
|
110
|
-
<%_ if (
|
|
113
|
+
<%_ if (!databaseTypeNo) { _%>
|
|
111
114
|
|
|
112
115
|
private final Logger log = LoggerFactory.getLogger(UserService.class);
|
|
113
116
|
|
|
114
117
|
private final UserRepository userRepository;
|
|
115
|
-
|
|
118
|
+
<%_ if (!authenticationTypeOauth2) { _%>
|
|
116
119
|
|
|
117
120
|
private final PasswordEncoder passwordEncoder;
|
|
118
|
-
|
|
119
|
-
|
|
121
|
+
<%_ } _%>
|
|
122
|
+
<%_ if (searchEngineElasticsearch) { _%>
|
|
120
123
|
|
|
121
124
|
private final UserSearchRepository userSearchRepository;
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
+
<%_ } _%>
|
|
126
|
+
<%_ if (databaseTypeSql || databaseTypeMongodb || databaseTypeNeo4j || databaseTypeCouchbase) { _%>
|
|
127
|
+
<%_ if (authenticationTypeSession && !reactive) { _%>
|
|
125
128
|
|
|
126
129
|
private final PersistentTokenRepository persistentTokenRepository;
|
|
127
|
-
|
|
130
|
+
<%_ } _%>
|
|
128
131
|
|
|
129
132
|
private final AuthorityRepository authorityRepository;
|
|
130
|
-
|
|
131
|
-
|
|
133
|
+
<%_ } _%>
|
|
134
|
+
<%_ if (cacheManagerIsAvailable) { _%>
|
|
132
135
|
|
|
133
136
|
private final CacheManager cacheManager;
|
|
134
|
-
|
|
137
|
+
<%_ } _%>
|
|
135
138
|
|
|
136
|
-
public UserService(UserRepository userRepository<% if (
|
|
139
|
+
public UserService(UserRepository userRepository<% if (!authenticationTypeOauth2) { %>, PasswordEncoder passwordEncoder<% } %><% if (searchEngineElasticsearch) { %>, UserSearchRepository userSearchRepository<% } %><% if (databaseTypeSql || databaseTypeMongodb || databaseTypeNeo4j || databaseTypeCouchbase) { %><% if (authenticationTypeSession && !reactive) { %>, PersistentTokenRepository persistentTokenRepository<% } %>, AuthorityRepository authorityRepository<% } %><% if (cacheManagerIsAvailable) { %>, CacheManager cacheManager<% } %>) {
|
|
137
140
|
this.userRepository = userRepository;
|
|
138
|
-
|
|
141
|
+
<%_ if (!authenticationTypeOauth2) { _%>
|
|
139
142
|
this.passwordEncoder = passwordEncoder;
|
|
140
|
-
|
|
141
|
-
|
|
143
|
+
<%_ } _%>
|
|
144
|
+
<%_ if (searchEngineElasticsearch) { _%>
|
|
142
145
|
this.userSearchRepository = userSearchRepository;
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
+
<%_ } _%>
|
|
147
|
+
<%_ if (databaseTypeSql || databaseTypeMongodb || databaseTypeNeo4j || databaseTypeCouchbase) { _%>
|
|
148
|
+
<%_ if (authenticationTypeSession && !reactive) { _%>
|
|
146
149
|
this.persistentTokenRepository = persistentTokenRepository;
|
|
147
|
-
|
|
150
|
+
<%_ } _%>
|
|
148
151
|
this.authorityRepository = authorityRepository;
|
|
149
|
-
|
|
150
|
-
|
|
152
|
+
<%_ } _%>
|
|
153
|
+
<%_ if (cacheManagerIsAvailable) { _%>
|
|
151
154
|
this.cacheManager = cacheManager;
|
|
152
|
-
|
|
155
|
+
<%_ } _%>
|
|
153
156
|
}
|
|
154
|
-
<%_ if (
|
|
157
|
+
<%_ if (!authenticationTypeOauth2) { _%>
|
|
155
158
|
|
|
156
|
-
<%_ if (
|
|
159
|
+
<%_ if (databaseTypeSql && reactive) { _%>
|
|
157
160
|
@Transactional
|
|
158
161
|
<%_ } _%>
|
|
159
162
|
public <% if (reactive) { %>Mono<% } else { %>Optional<% } %><<%= asEntity('User') %>> activateRegistration(String key) {
|
|
@@ -163,53 +166,53 @@ public class UserService {
|
|
|
163
166
|
// activate given user for the registration key.
|
|
164
167
|
user.setActivated(true);
|
|
165
168
|
user.setActivationKey(null);
|
|
166
|
-
|
|
167
|
-
|
|
169
|
+
<%_ if (!reactive) { _%>
|
|
170
|
+
<%_ if (databaseTypeMongodb || databaseTypeNeo4j || databaseTypeCouchbase || databaseTypeCassandra) { _%>
|
|
168
171
|
userRepository.save(user);
|
|
169
|
-
|
|
170
|
-
|
|
172
|
+
<%_ } _%>
|
|
173
|
+
<%_ if (searchEngineElasticsearch) { _%>
|
|
171
174
|
userSearchRepository.save(user);
|
|
172
|
-
|
|
173
|
-
|
|
175
|
+
<%_ } _%>
|
|
176
|
+
<%_ if (cacheManagerIsAvailable) { _%>
|
|
174
177
|
this.clearUserCaches(user);
|
|
175
|
-
|
|
178
|
+
<%_ } _%>
|
|
176
179
|
log.debug("Activated user: {}", user);
|
|
177
180
|
return user;
|
|
178
181
|
});
|
|
179
|
-
|
|
182
|
+
<%_ } else { _%>
|
|
180
183
|
return saveUser(user);
|
|
181
184
|
})
|
|
182
|
-
|
|
185
|
+
<%_ if (searchEngineElasticsearch) { _%>
|
|
183
186
|
.flatMap(user -> userSearchRepository.save(user).thenReturn(user))
|
|
184
|
-
|
|
185
|
-
|
|
187
|
+
<%_ } _%>
|
|
188
|
+
<%_ if (cacheManagerIsAvailable) { _%>
|
|
186
189
|
.doOnNext(this::clearUserCaches)
|
|
187
|
-
|
|
190
|
+
<%_ } _%>
|
|
188
191
|
.doOnNext(user -> log.debug("Activated user: {}", user));
|
|
189
|
-
|
|
192
|
+
<%_ } _%>
|
|
190
193
|
}
|
|
191
194
|
|
|
192
|
-
<%_ if (
|
|
195
|
+
<%_ if (databaseTypeSql && reactive) { _%>
|
|
193
196
|
@Transactional
|
|
194
197
|
<%_ } _%>
|
|
195
198
|
public <% if (reactive) { %>Mono<% } else { %>Optional<% } %><<%= asEntity('User') %>> completePasswordReset(String newPassword, String key) {
|
|
196
199
|
log.debug("Reset user password for reset key {}", key);
|
|
197
200
|
return userRepository.findOneByResetKey(key)
|
|
198
|
-
.filter(user -> user.getResetDate().isAfter(Instant.now().
|
|
199
|
-
|
|
201
|
+
.filter(user -> user.getResetDate().isAfter(Instant.now().minus(1, ChronoUnit.DAYS)))
|
|
202
|
+
<%_ if (!reactive) { _%>
|
|
200
203
|
.map(user -> {
|
|
201
204
|
user.setPassword(passwordEncoder.encode(newPassword));
|
|
202
205
|
user.setResetKey(null);
|
|
203
206
|
user.setResetDate(null);
|
|
204
|
-
|
|
207
|
+
<%_ if (databaseTypeMongodb || databaseTypeNeo4j || databaseTypeCouchbase || databaseTypeCassandra) { _%>
|
|
205
208
|
userRepository.save(user);
|
|
206
|
-
|
|
207
|
-
|
|
209
|
+
<%_ } _%>
|
|
210
|
+
<%_ if (cacheManagerIsAvailable) { _%>
|
|
208
211
|
this.clearUserCaches(user);
|
|
209
|
-
|
|
212
|
+
<%_ } _%>
|
|
210
213
|
return user;
|
|
211
214
|
});
|
|
212
|
-
|
|
215
|
+
<%_ } else { _%>
|
|
213
216
|
.publishOn(Schedulers.boundedElastic())
|
|
214
217
|
.map(user -> {
|
|
215
218
|
user.setPassword(passwordEncoder.encode(newPassword));
|
|
@@ -217,42 +220,42 @@ public class UserService {
|
|
|
217
220
|
user.setResetDate(null);
|
|
218
221
|
return user;
|
|
219
222
|
})
|
|
220
|
-
.flatMap(this::saveUser)<% if (cacheManagerIsAvailable
|
|
223
|
+
.flatMap(this::saveUser)<% if (cacheManagerIsAvailable) { %>
|
|
221
224
|
.doOnNext(this::clearUserCaches)<% } %>;
|
|
222
|
-
|
|
225
|
+
<%_ } _%>
|
|
223
226
|
}
|
|
224
227
|
|
|
225
|
-
<%_ if (
|
|
228
|
+
<%_ if (databaseTypeSql && reactive) { _%>
|
|
226
229
|
@Transactional
|
|
227
230
|
<%_ } _%>
|
|
228
231
|
public <% if (reactive) { %>Mono<% } else { %>Optional<% } %><<%= asEntity('User') %>> requestPasswordReset(String mail) {
|
|
229
232
|
return userRepository.findOneByEmailIgnoreCase(mail)
|
|
230
233
|
.filter(<%= asEntity('User') %>::isActivated)
|
|
231
|
-
|
|
234
|
+
<%_ if (!reactive) { _%>
|
|
232
235
|
.map(user -> {
|
|
233
236
|
user.setResetKey(RandomUtil.generateResetKey());
|
|
234
237
|
user.setResetDate(Instant.now());
|
|
235
|
-
|
|
238
|
+
<%_ if (databaseTypeMongodb || databaseTypeNeo4j || databaseTypeCouchbase || databaseTypeCassandra) { _%>
|
|
236
239
|
userRepository.save(user);
|
|
237
|
-
|
|
238
|
-
|
|
240
|
+
<%_ } _%>
|
|
241
|
+
<%_ if (cacheManagerIsAvailable) { _%>
|
|
239
242
|
this.clearUserCaches(user);
|
|
240
|
-
|
|
243
|
+
<%_ } _%>
|
|
241
244
|
return user;
|
|
242
245
|
});
|
|
243
|
-
|
|
246
|
+
<%_ } else { _%>
|
|
244
247
|
.publishOn(Schedulers.boundedElastic())
|
|
245
248
|
.map(user -> {
|
|
246
249
|
user.setResetKey(RandomUtil.generateResetKey());
|
|
247
250
|
user.setResetDate(Instant.now());
|
|
248
251
|
return user;
|
|
249
252
|
})
|
|
250
|
-
.flatMap(this::saveUser)<% if (cacheManagerIsAvailable
|
|
253
|
+
.flatMap(this::saveUser)<% if (cacheManagerIsAvailable) { %>
|
|
251
254
|
.doOnNext(this::clearUserCaches)<% } %>;
|
|
252
|
-
|
|
255
|
+
<%_ } _%>
|
|
253
256
|
}
|
|
254
257
|
|
|
255
|
-
<%_ if (
|
|
258
|
+
<%_ if (databaseTypeSql && reactive) { _%>
|
|
256
259
|
@Transactional
|
|
257
260
|
<%_ } _%>
|
|
258
261
|
public <% if (reactive) { %>Mono<<%= asEntity('User') %>><% } else { %><%= asEntity('User') %><% } %> registerUser(<%= asDto('AdminUser') %> userDTO, String password) {
|
|
@@ -270,9 +273,9 @@ public class UserService {
|
|
|
270
273
|
}
|
|
271
274
|
});
|
|
272
275
|
<%= asEntity('User') %> newUser = new <%= asEntity('User') %>();
|
|
273
|
-
|
|
276
|
+
<%_ if (databaseTypeCassandra) { _%>
|
|
274
277
|
newUser.setId(UUID.randomUUID().toString());
|
|
275
|
-
|
|
278
|
+
<%_ } _%>
|
|
276
279
|
String encryptedPassword = passwordEncoder.encode(password);
|
|
277
280
|
newUser.setLogin(userDTO.getLogin().toLowerCase());
|
|
278
281
|
// new user gets initially a generated password
|
|
@@ -282,38 +285,38 @@ public class UserService {
|
|
|
282
285
|
if (userDTO.getEmail() != null) {
|
|
283
286
|
newUser.setEmail(userDTO.getEmail().toLowerCase());
|
|
284
287
|
}
|
|
285
|
-
|
|
288
|
+
<%_ if (databaseTypeSql || databaseTypeMongodb || databaseTypeCouchbase || databaseTypeNeo4j) { _%>
|
|
286
289
|
newUser.setImageUrl(userDTO.getImageUrl());
|
|
287
|
-
|
|
290
|
+
<%_ } _%>
|
|
288
291
|
newUser.setLangKey(userDTO.getLangKey());
|
|
289
292
|
// new user is not active
|
|
290
293
|
newUser.setActivated(false);
|
|
291
294
|
// new user gets registration key
|
|
292
295
|
newUser.setActivationKey(RandomUtil.generateActivationKey());
|
|
293
|
-
|
|
296
|
+
<%_ if (databaseTypeSql || databaseTypeMongodb || databaseTypeNeo4j) { _%>
|
|
294
297
|
Set<Authority> authorities = new HashSet<>();
|
|
295
298
|
authorityRepository.findById(AuthoritiesConstants.USER).ifPresent(authorities::add);
|
|
296
|
-
|
|
299
|
+
<%_ } else { _%>
|
|
297
300
|
Set<String> authorities = new HashSet<>();
|
|
298
301
|
authorities.add(AuthoritiesConstants.USER);
|
|
299
|
-
|
|
302
|
+
<%_ } _%>
|
|
300
303
|
newUser.setAuthorities(authorities);
|
|
301
304
|
userRepository.save(newUser);
|
|
302
|
-
|
|
305
|
+
<%_ if (searchEngineElasticsearch) { _%>
|
|
303
306
|
userSearchRepository.save(newUser);
|
|
304
|
-
|
|
305
|
-
|
|
307
|
+
<%_ } _%>
|
|
308
|
+
<%_ if (cacheManagerIsAvailable) { _%>
|
|
306
309
|
this.clearUserCaches(newUser);
|
|
307
|
-
|
|
310
|
+
<%_ } _%>
|
|
308
311
|
log.debug("Created Information for User: {}", newUser);
|
|
309
312
|
return newUser;
|
|
310
|
-
<%_ } else {
|
|
313
|
+
<%_ } else { /* reactive */ _%>
|
|
311
314
|
return userRepository.findOneByLogin(userDTO.getLogin().toLowerCase())
|
|
312
315
|
.flatMap(existingUser -> {
|
|
313
316
|
if (!existingUser.isActivated()) {
|
|
314
|
-
|
|
317
|
+
<%_ if (cacheManagerIsAvailable) { _%>
|
|
315
318
|
this.clearUserCaches(existingUser);
|
|
316
|
-
|
|
319
|
+
<%_ } _%>
|
|
317
320
|
return userRepository.delete(existingUser);
|
|
318
321
|
} else {
|
|
319
322
|
return Mono.error(new UsernameAlreadyUsedException());
|
|
@@ -322,9 +325,9 @@ public class UserService {
|
|
|
322
325
|
.then(userRepository.findOneByEmailIgnoreCase(userDTO.getEmail()))
|
|
323
326
|
.flatMap(existingUser -> {
|
|
324
327
|
if (!existingUser.isActivated()) {
|
|
325
|
-
|
|
328
|
+
<%_ if (cacheManagerIsAvailable) { _%>
|
|
326
329
|
this.clearUserCaches(existingUser);
|
|
327
|
-
|
|
330
|
+
<%_ } _%>
|
|
328
331
|
return userRepository.delete(existingUser);
|
|
329
332
|
} else {
|
|
330
333
|
return Mono.error(new EmailAlreadyUsedException());
|
|
@@ -333,9 +336,9 @@ public class UserService {
|
|
|
333
336
|
.publishOn(Schedulers.boundedElastic())
|
|
334
337
|
.then(Mono.fromCallable(() -> {
|
|
335
338
|
<%= asEntity('User') %> newUser = new <%= asEntity('User') %>();
|
|
336
|
-
|
|
339
|
+
<%_ if (databaseTypeCassandra) { _%>
|
|
337
340
|
newUser.setId(UUID.randomUUID().toString());
|
|
338
|
-
|
|
341
|
+
<%_ } _%>
|
|
339
342
|
String encryptedPassword = passwordEncoder.encode(password);
|
|
340
343
|
newUser.setLogin(userDTO.getLogin().toLowerCase());
|
|
341
344
|
// new user gets initially a generated password
|
|
@@ -345,9 +348,9 @@ public class UserService {
|
|
|
345
348
|
if (userDTO.getEmail() != null) {
|
|
346
349
|
newUser.setEmail(userDTO.getEmail().toLowerCase());
|
|
347
350
|
}
|
|
348
|
-
|
|
351
|
+
<%_ if (databaseTypeSql || databaseTypeMongodb || databaseTypeNeo4j || databaseTypeCouchbase) { _%>
|
|
349
352
|
newUser.setImageUrl(userDTO.getImageUrl());
|
|
350
|
-
|
|
353
|
+
<%_ } _%>
|
|
351
354
|
newUser.setLangKey(userDTO.getLangKey());
|
|
352
355
|
// new user is not active
|
|
353
356
|
newUser.setActivated(false);
|
|
@@ -356,24 +359,24 @@ public class UserService {
|
|
|
356
359
|
return newUser;
|
|
357
360
|
}))
|
|
358
361
|
.flatMap(newUser -> {
|
|
359
|
-
Set<<% if (
|
|
360
|
-
|
|
362
|
+
Set<<% if (databaseTypeSql || databaseTypeMongodb || databaseTypeNeo4j) { %>Authority<% } else { %>String<% } %>> authorities = new HashSet<>();
|
|
363
|
+
<%_ if (databaseTypeSql || databaseTypeMongodb || databaseTypeNeo4j) { _%>
|
|
361
364
|
return authorityRepository.findById(AuthoritiesConstants.USER)
|
|
362
365
|
.map(authorities::add)
|
|
363
366
|
.thenReturn(newUser)
|
|
364
367
|
.doOnNext(user -> user.setAuthorities(authorities))
|
|
365
368
|
.flatMap(this::saveUser)
|
|
366
|
-
|
|
369
|
+
<%_ } else { _%>
|
|
367
370
|
authorities.add(AuthoritiesConstants.USER);
|
|
368
371
|
newUser.setAuthorities(authorities);
|
|
369
372
|
return saveUser(newUser)
|
|
370
|
-
|
|
371
|
-
|
|
373
|
+
<%_ } _%>
|
|
374
|
+
<%_ if (searchEngineElasticsearch) { _%>
|
|
372
375
|
.flatMap(user -> userSearchRepository.save(user).thenReturn(user))
|
|
373
|
-
|
|
374
|
-
|
|
376
|
+
<%_ } _%>
|
|
377
|
+
<%_ if (cacheManagerIsAvailable) { _%>
|
|
375
378
|
.doOnNext(this::clearUserCaches)
|
|
376
|
-
|
|
379
|
+
<%_ } _%>
|
|
377
380
|
.doOnNext(user -> log.debug("Created Information for User: {}", user));
|
|
378
381
|
});
|
|
379
382
|
<%_ } _%>
|
|
@@ -385,21 +388,21 @@ public class UserService {
|
|
|
385
388
|
return false;
|
|
386
389
|
}
|
|
387
390
|
userRepository.delete(existingUser);
|
|
388
|
-
|
|
391
|
+
<%_ if (databaseTypeSql) { _%>
|
|
389
392
|
userRepository.flush();
|
|
390
|
-
|
|
391
|
-
|
|
393
|
+
<%_ } _%>
|
|
394
|
+
<%_ if (cacheManagerIsAvailable) { _%>
|
|
392
395
|
this.clearUserCaches(existingUser);
|
|
393
|
-
|
|
396
|
+
<%_ } _%>
|
|
394
397
|
return true;
|
|
395
398
|
}
|
|
396
399
|
|
|
397
400
|
<%_ } _%>
|
|
398
|
-
<%_ if (
|
|
401
|
+
<%_ if (databaseTypeSql && reactive) { _%>
|
|
399
402
|
@Transactional
|
|
400
403
|
<%_ } _%>
|
|
401
404
|
public <% if (reactive) { %>Mono<<%= asEntity('User') %>><% } else { %><%= asEntity('User') %><% } %> createUser(<%= asDto('AdminUser') %> userDTO) {
|
|
402
|
-
<%= asEntity('User') %> user = new <%= asEntity('User') %>();<% if (
|
|
405
|
+
<%= asEntity('User') %> user = new <%= asEntity('User') %>();<% if (databaseTypeCassandra) { %>
|
|
403
406
|
user.setId(UUID.randomUUID().toString());<% } %>
|
|
404
407
|
user.setLogin(userDTO.getLogin().toLowerCase());
|
|
405
408
|
user.setFirstName(userDTO.getFirstName());
|
|
@@ -407,9 +410,9 @@ public class UserService {
|
|
|
407
410
|
if (userDTO.getEmail() != null) {
|
|
408
411
|
user.setEmail(userDTO.getEmail().toLowerCase());
|
|
409
412
|
}
|
|
410
|
-
|
|
413
|
+
<%_ if (databaseTypeSql || databaseTypeCouchbase || databaseTypeMongodb || databaseTypeNeo4j) { _%>
|
|
411
414
|
user.setImageUrl(userDTO.getImageUrl());
|
|
412
|
-
|
|
415
|
+
<%_ } _%>
|
|
413
416
|
if (userDTO.getLangKey() == null) {
|
|
414
417
|
user.setLangKey(Constants.DEFAULT_LANGUAGE); // default language
|
|
415
418
|
} else {
|
|
@@ -421,7 +424,7 @@ public class UserService {
|
|
|
421
424
|
user.setResetKey(RandomUtil.generateResetKey());
|
|
422
425
|
user.setResetDate(Instant.now());
|
|
423
426
|
user.setActivated(true);
|
|
424
|
-
|
|
427
|
+
<%_ if (databaseTypeSql || databaseTypeMongodb || databaseTypeNeo4j) { _%>
|
|
425
428
|
if (userDTO.getAuthorities() != null) {
|
|
426
429
|
Set<Authority> authorities = userDTO.getAuthorities().stream()
|
|
427
430
|
.map(authorityRepository::findById)
|
|
@@ -430,28 +433,28 @@ public class UserService {
|
|
|
430
433
|
.collect(Collectors.toSet());
|
|
431
434
|
user.setAuthorities(authorities);
|
|
432
435
|
}
|
|
433
|
-
|
|
436
|
+
<%_ } else { _%>
|
|
434
437
|
user.setAuthorities(userDTO.getAuthorities());
|
|
435
|
-
|
|
438
|
+
<%_ } _%>
|
|
436
439
|
userRepository.save(user);
|
|
437
|
-
|
|
440
|
+
<%_ if (searchEngineElasticsearch) { _%>
|
|
438
441
|
userSearchRepository.save(user);
|
|
439
|
-
|
|
440
|
-
|
|
442
|
+
<%_ } _%>
|
|
443
|
+
<%_ if (cacheManagerIsAvailable) { _%>
|
|
441
444
|
this.clearUserCaches(user);
|
|
442
|
-
|
|
445
|
+
<%_ } _%>
|
|
443
446
|
log.debug("Created Information for User: {}", user);
|
|
444
447
|
return user;
|
|
445
448
|
<%_ } else { _%>
|
|
446
|
-
|
|
449
|
+
<%_ if (databaseTypeSql || databaseTypeMongodb || databaseTypeNeo4j) { _%>
|
|
447
450
|
return Flux.fromIterable(userDTO.getAuthorities() != null ? userDTO.getAuthorities() : new HashSet<>())
|
|
448
451
|
.flatMap(authorityRepository::findById)
|
|
449
452
|
.doOnNext(authority -> user.getAuthorities().add(authority))
|
|
450
453
|
.then(Mono.just(user))
|
|
451
|
-
|
|
454
|
+
<%_ } else { _%>
|
|
452
455
|
user.setAuthorities(userDTO.getAuthorities());
|
|
453
456
|
return Mono.just(user)
|
|
454
|
-
|
|
457
|
+
<%_ } _%>
|
|
455
458
|
.publishOn(Schedulers.boundedElastic())
|
|
456
459
|
.map(newUser -> {
|
|
457
460
|
String encryptedPassword = passwordEncoder.encode(RandomUtil.generatePassword());
|
|
@@ -462,12 +465,12 @@ public class UserService {
|
|
|
462
465
|
return newUser;
|
|
463
466
|
})
|
|
464
467
|
.flatMap(this::saveUser)
|
|
465
|
-
|
|
468
|
+
<%_ if (searchEngineElasticsearch) { _%>
|
|
466
469
|
.flatMap(user1 -> userSearchRepository.save(user1).thenReturn(user1))
|
|
467
|
-
|
|
468
|
-
|
|
470
|
+
<%_ } _%>
|
|
471
|
+
<%_ if (cacheManagerIsAvailable) { _%>
|
|
469
472
|
.doOnNext(this::clearUserCaches)
|
|
470
|
-
|
|
473
|
+
<%_ } _%>
|
|
471
474
|
.doOnNext(user1 -> log.debug("Created Information for User: {}", user1));
|
|
472
475
|
<%_ } _%>
|
|
473
476
|
}
|
|
@@ -478,90 +481,90 @@ public class UserService {
|
|
|
478
481
|
* @param userDTO user to update.
|
|
479
482
|
* @return updated user.
|
|
480
483
|
*/
|
|
481
|
-
<%_ if (
|
|
484
|
+
<%_ if (databaseTypeSql && reactive) { _%>
|
|
482
485
|
@Transactional
|
|
483
486
|
<%_ } _%>
|
|
484
487
|
public <% if (reactive) { %>Mono<% } else { %>Optional<% } %><<%= asDto('AdminUser') %>> updateUser(<%= asDto('AdminUser') %> userDTO) {
|
|
485
|
-
|
|
488
|
+
<%_ if (!reactive) { _%>
|
|
486
489
|
return Optional.of(userRepository
|
|
487
490
|
.findById(userDTO.getId()))
|
|
488
491
|
.filter(Optional::isPresent)
|
|
489
492
|
.map(Optional::get)
|
|
490
493
|
.map(user -> {
|
|
491
|
-
|
|
494
|
+
<%_ } else { _%>
|
|
492
495
|
return userRepository.findById(userDTO.getId())
|
|
493
|
-
.<%_ if (
|
|
494
|
-
|
|
495
|
-
|
|
496
|
+
.<%_ if (databaseTypeSql || databaseTypeMongodb) { _%>flatMap<% } else { %>map<% } %>(user -> {
|
|
497
|
+
<%_ } _%>
|
|
498
|
+
<%_ if (databaseTypeCouchbase) { _%>
|
|
496
499
|
if (!user.getLogin().equals(userDTO.getLogin())) {
|
|
497
500
|
userRepository.deleteById(userDTO.getId());
|
|
498
501
|
}
|
|
499
|
-
|
|
500
|
-
|
|
502
|
+
<%_ } _%>
|
|
503
|
+
<%_ if (cacheManagerIsAvailable) { _%>
|
|
501
504
|
this.clearUserCaches(user);
|
|
502
|
-
|
|
505
|
+
<%_ } _%>
|
|
503
506
|
user.setLogin(userDTO.getLogin().toLowerCase());
|
|
504
507
|
user.setFirstName(userDTO.getFirstName());
|
|
505
508
|
user.setLastName(userDTO.getLastName());
|
|
506
509
|
if (userDTO.getEmail() != null) {
|
|
507
510
|
user.setEmail(userDTO.getEmail().toLowerCase());
|
|
508
511
|
}
|
|
509
|
-
|
|
512
|
+
<%_ if (databaseTypeSql || databaseTypeMongodb || databaseTypeNeo4j || databaseTypeCouchbase) { _%>
|
|
510
513
|
user.setImageUrl(userDTO.getImageUrl());
|
|
511
|
-
|
|
514
|
+
<%_ } _%>
|
|
512
515
|
user.setActivated(userDTO.isActivated());
|
|
513
516
|
user.setLangKey(userDTO.getLangKey());
|
|
514
|
-
|
|
517
|
+
<%_ if (databaseTypeSql || databaseTypeMongodb || databaseTypeNeo4j) { _%>
|
|
515
518
|
Set<Authority> managedAuthorities = user.getAuthorities();
|
|
516
519
|
managedAuthorities.clear();
|
|
517
|
-
|
|
520
|
+
<%_ } else { /* Cassandra & Couchbase */ _%>
|
|
518
521
|
user.setAuthorities(userDTO.getAuthorities());
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
+
<%_ } _%>
|
|
523
|
+
<%_ if (!reactive) { _%>
|
|
524
|
+
<%_ if (databaseTypeSql || databaseTypeMongodb || databaseTypeNeo4j) { _%>
|
|
522
525
|
userDTO.getAuthorities().stream()
|
|
523
526
|
.map(authorityRepository::findById)
|
|
524
527
|
.filter(Optional::isPresent)
|
|
525
528
|
.map(Optional::get)
|
|
526
529
|
.forEach(managedAuthorities::add);
|
|
527
|
-
|
|
528
|
-
|
|
530
|
+
<%_ } _%>
|
|
531
|
+
<%_ if (databaseTypeMongodb || databaseTypeNeo4j || databaseTypeCouchbase || databaseTypeCassandra) { _%>
|
|
529
532
|
userRepository.save(user);
|
|
530
|
-
|
|
531
|
-
|
|
533
|
+
<%_ } _%>
|
|
534
|
+
<%_ if (searchEngineElasticsearch) { _%>
|
|
532
535
|
userSearchRepository.save(user);
|
|
533
|
-
|
|
534
|
-
|
|
536
|
+
<%_ } _%>
|
|
537
|
+
<%_ if (cacheManagerIsAvailable) { _%>
|
|
535
538
|
this.clearUserCaches(user);
|
|
536
|
-
|
|
539
|
+
<%_ } _%>
|
|
537
540
|
log.debug("Changed Information for User: {}", user);
|
|
538
541
|
return user;
|
|
539
542
|
})
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
+
<%_ } else { /* reactive */ _%>
|
|
544
|
+
<%_ if (databaseTypeSql || databaseTypeMongodb) { _%>
|
|
545
|
+
<%_ if (databaseTypeSql) { _%>
|
|
543
546
|
return userRepository
|
|
544
547
|
.deleteUserAuthorities(user.getId())
|
|
545
548
|
.thenMany(Flux.fromIterable(userDTO.getAuthorities()))
|
|
546
|
-
|
|
549
|
+
<%_ } else { _%>
|
|
547
550
|
return Flux.fromIterable(userDTO.getAuthorities())
|
|
548
|
-
|
|
551
|
+
<%_ } _%>
|
|
549
552
|
.flatMap(authorityRepository::findById)
|
|
550
553
|
.map(managedAuthorities::add)
|
|
551
554
|
.then(Mono.just(user));
|
|
552
|
-
|
|
555
|
+
<%_ } else { _%>
|
|
553
556
|
return user;
|
|
554
|
-
|
|
557
|
+
<%_ } _%>
|
|
555
558
|
})
|
|
556
559
|
.flatMap(this::saveUser)
|
|
557
|
-
|
|
560
|
+
<%_ if (searchEngineElasticsearch) { _%>
|
|
558
561
|
.flatMap(user -> userSearchRepository.save(user).thenReturn(user))
|
|
559
|
-
|
|
560
|
-
|
|
562
|
+
<%_ } _%>
|
|
563
|
+
<%_ if (cacheManagerIsAvailable) { _%>
|
|
561
564
|
.doOnNext(this::clearUserCaches)
|
|
562
|
-
|
|
565
|
+
<%_ } _%>
|
|
563
566
|
.doOnNext(user -> log.debug("Changed Information for User: {}", user))
|
|
564
|
-
|
|
567
|
+
<%_ } _%>
|
|
565
568
|
.map(<%= asDto('AdminUser') %>::new);
|
|
566
569
|
}
|
|
567
570
|
|
|
@@ -569,33 +572,33 @@ public class UserService {
|
|
|
569
572
|
public void deleteUser(String login) {
|
|
570
573
|
userRepository.findOneByLogin(login).ifPresent(user -> {
|
|
571
574
|
userRepository.delete(user);
|
|
572
|
-
|
|
575
|
+
<%_ if (searchEngineElasticsearch) { _%>
|
|
573
576
|
userSearchRepository.delete(user);
|
|
574
|
-
|
|
575
|
-
|
|
577
|
+
<%_ } _%>
|
|
578
|
+
<%_ if (cacheManagerIsAvailable) { _%>
|
|
576
579
|
this.clearUserCaches(user);
|
|
577
|
-
|
|
580
|
+
<%_ } _%>
|
|
578
581
|
log.debug("Deleted User: {}", user);
|
|
579
582
|
});
|
|
580
583
|
}
|
|
581
584
|
<%_ } else { _%>
|
|
582
|
-
|
|
585
|
+
<%_ if (databaseTypeSql) { _%>
|
|
583
586
|
@Transactional
|
|
584
|
-
|
|
587
|
+
<%_ } _%>
|
|
585
588
|
public Mono<Void> deleteUser(String login) {
|
|
586
589
|
return userRepository.findOneByLogin(login)
|
|
587
590
|
.flatMap(user -> userRepository.delete(user).thenReturn(user))
|
|
588
|
-
|
|
591
|
+
<%_ if (searchEngineElasticsearch) { _%>
|
|
589
592
|
.flatMap(user -> userSearchRepository.delete(user).thenReturn(user))
|
|
590
|
-
|
|
591
|
-
|
|
593
|
+
<%_ } _%>
|
|
594
|
+
<%_ if (cacheManagerIsAvailable) { _%>
|
|
592
595
|
.doOnNext(this::clearUserCaches)
|
|
593
|
-
|
|
596
|
+
<%_ } _%>
|
|
594
597
|
.doOnNext(user -> log.debug("Deleted User: {}", user))
|
|
595
598
|
.then();
|
|
596
599
|
}
|
|
597
600
|
<%_ } _%>
|
|
598
|
-
<%_ }
|
|
601
|
+
<%_ } /* authenticationType !== 'oauth2'*/ _%>
|
|
599
602
|
|
|
600
603
|
/**
|
|
601
604
|
* Update basic information (first name, last name, email, language) for the current user.
|
|
@@ -604,17 +607,17 @@ public class UserService {
|
|
|
604
607
|
* @param lastName last name of user.
|
|
605
608
|
* @param email email id of user.
|
|
606
609
|
* @param langKey language key.
|
|
607
|
-
|
|
610
|
+
<%_ if (databaseTypeSql || databaseTypeMongodb || databaseTypeCouchbase || databaseTypeNeo4j) { _%>
|
|
608
611
|
* @param imageUrl image URL of user.
|
|
609
|
-
|
|
610
|
-
|
|
612
|
+
<%_ } _%>
|
|
613
|
+
<%_ if (reactive) { _%>
|
|
611
614
|
* @return a completed {@link Mono}.
|
|
612
|
-
|
|
615
|
+
<%_ } _%>
|
|
613
616
|
*/
|
|
614
|
-
|
|
617
|
+
<%_ if (databaseTypeSql && reactive) { _%>
|
|
615
618
|
@Transactional
|
|
616
|
-
|
|
617
|
-
public <% if (reactive) { %>Mono<Void><% } else { %>void<% } %> updateUser(String firstName, String lastName, String email, String langKey<% if (
|
|
619
|
+
<%_ } _%>
|
|
620
|
+
public <% if (reactive) { %>Mono<Void><% } else { %>void<% } %> updateUser(String firstName, String lastName, String email, String langKey<% if (databaseTypeSql || databaseTypeMongodb || databaseTypeCouchbase || databaseTypeNeo4j) { %>, String imageUrl<% } %>) {
|
|
618
621
|
<% if (reactive) { %>return <% } %>SecurityUtils.getCurrentUserLogin()
|
|
619
622
|
.flatMap(userRepository::findOneByLogin)
|
|
620
623
|
.<% if (reactive) { %>flatMap<% } else { %>ifPresent<% } %>(user -> {
|
|
@@ -624,50 +627,50 @@ public class UserService {
|
|
|
624
627
|
user.setEmail(email.toLowerCase());
|
|
625
628
|
}
|
|
626
629
|
user.setLangKey(langKey);
|
|
627
|
-
|
|
630
|
+
<%_ if (databaseTypeSql || databaseTypeMongodb || databaseTypeCouchbase || databaseTypeNeo4j) { _%>
|
|
628
631
|
user.setImageUrl(imageUrl);
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
+
<%_ } _%>
|
|
633
|
+
<%_ if (!reactive) { _%>
|
|
634
|
+
<%_ if (databaseTypeMongodb || databaseTypeCouchbase || databaseTypeNeo4j || databaseTypeCassandra) { _%>
|
|
632
635
|
userRepository.save(user);
|
|
633
|
-
|
|
634
|
-
|
|
636
|
+
<%_ } _%>
|
|
637
|
+
<%_ if (searchEngineElasticsearch) { _%>
|
|
635
638
|
userSearchRepository.save(user);
|
|
636
|
-
|
|
637
|
-
|
|
639
|
+
<%_ } _%>
|
|
640
|
+
<%_ if (cacheManagerIsAvailable) { _%>
|
|
638
641
|
this.clearUserCaches(user);
|
|
639
|
-
|
|
642
|
+
<%_ } _%>
|
|
640
643
|
log.debug("Changed Information for User: {}", user);
|
|
641
644
|
});
|
|
642
|
-
|
|
645
|
+
<%_ } else { _%>
|
|
643
646
|
return saveUser(user);
|
|
644
647
|
})
|
|
645
|
-
|
|
648
|
+
<%_ if (searchEngineElasticsearch) { _%>
|
|
646
649
|
.flatMap(user -> userSearchRepository.save(user).thenReturn(user))
|
|
647
|
-
|
|
648
|
-
|
|
650
|
+
<%_ } _%>
|
|
651
|
+
<%_ if (cacheManagerIsAvailable) { _%>
|
|
649
652
|
.doOnNext(this::clearUserCaches)
|
|
650
|
-
|
|
653
|
+
<%_ } _%>
|
|
651
654
|
.doOnNext(user -> log.debug("Changed Information for User: {}", user))
|
|
652
655
|
.then();
|
|
653
|
-
|
|
656
|
+
<%_ } _%>
|
|
654
657
|
}
|
|
655
658
|
|
|
656
|
-
<%_ if (reactive) { _%>
|
|
657
|
-
<%_ if (
|
|
659
|
+
<%_ if (reactive) { _%>
|
|
660
|
+
<%_ if (databaseTypeSql && authenticationTypeOauth2) { _%>
|
|
658
661
|
@Transactional
|
|
659
662
|
public Mono<User> saveUser(User user) {
|
|
660
663
|
return saveUser(user, false);
|
|
661
664
|
}
|
|
662
665
|
|
|
663
666
|
<%_ } _%>
|
|
664
|
-
<%_ if (
|
|
667
|
+
<%_ if (databaseTypeSql) { _%>
|
|
665
668
|
@Transactional
|
|
666
669
|
<%_ } _%>
|
|
667
|
-
<% if (
|
|
668
|
-
|
|
670
|
+
<% if (!databaseTypeSql) { %>private <% } else { %>public <% } %>Mono<<%= asEntity('User') %>> saveUser(<%= asEntity('User') %> user<% if (databaseTypeSql && authenticationTypeOauth2) { %>, boolean forceCreate<% } %>) {
|
|
671
|
+
<%_ if (databaseTypeCassandra) { _%>
|
|
669
672
|
return userRepository.save(user);
|
|
670
|
-
|
|
673
|
+
<%_ } else { _%>
|
|
671
674
|
return SecurityUtils.getCurrentUserLogin()
|
|
672
675
|
.switchIfEmpty(Mono.just(Constants.SYSTEM))
|
|
673
676
|
.flatMap(login -> {
|
|
@@ -675,10 +678,10 @@ public class UserService {
|
|
|
675
678
|
user.setCreatedBy(login);
|
|
676
679
|
}
|
|
677
680
|
user.setLastModifiedBy(login);
|
|
678
|
-
|
|
681
|
+
<%_ if (databaseTypeSql) { _%>
|
|
679
682
|
// Saving the relationship can be done in an entity callback
|
|
680
683
|
// once https://github.com/spring-projects/spring-data-r2dbc/issues/215 is done
|
|
681
|
-
|
|
684
|
+
<%_ if (authenticationTypeOauth2) { _%>
|
|
682
685
|
Mono<User> persistedUser;
|
|
683
686
|
if (forceCreate) {
|
|
684
687
|
persistedUser = userRepository.create(user);
|
|
@@ -686,88 +689,88 @@ public class UserService {
|
|
|
686
689
|
persistedUser = userRepository.save(user);
|
|
687
690
|
}
|
|
688
691
|
return persistedUser
|
|
689
|
-
|
|
692
|
+
<%_ } else { _%>
|
|
690
693
|
return userRepository.save(user)
|
|
691
|
-
|
|
694
|
+
<%_ } _%>
|
|
692
695
|
.flatMap(savedUser ->
|
|
693
696
|
Flux.fromIterable(user.getAuthorities())
|
|
694
697
|
.flatMap(authority -> userRepository.saveUserAuthority(savedUser.getId(), authority.getName()))
|
|
695
698
|
.then(Mono.just(savedUser))
|
|
696
699
|
);
|
|
697
|
-
|
|
700
|
+
<%_ } else { _%>
|
|
698
701
|
return userRepository.save(user);
|
|
699
|
-
|
|
702
|
+
<%_ } _%>
|
|
700
703
|
});
|
|
701
|
-
|
|
704
|
+
<%_ } _%>
|
|
702
705
|
}
|
|
703
|
-
<%_ } _%>
|
|
704
|
-
<%_ if (
|
|
706
|
+
<%_ } _%>
|
|
707
|
+
<%_ if (!authenticationTypeOauth2) { _%>
|
|
705
708
|
|
|
706
|
-
<%_ if (
|
|
709
|
+
<%_ if (databaseTypeSql) { _%>
|
|
707
710
|
@Transactional
|
|
708
711
|
<%_ } _%>
|
|
709
712
|
public <% if (reactive) { %>Mono<Void><% } else { %>void<% } %> changePassword(String currentClearTextPassword, String newPassword) {
|
|
710
713
|
<% if (reactive) { %>return <% } %>SecurityUtils.getCurrentUserLogin()
|
|
711
714
|
.flatMap(userRepository::findOneByLogin)
|
|
712
|
-
|
|
715
|
+
<%_ if (reactive) { _%>
|
|
713
716
|
.publishOn(Schedulers.boundedElastic())
|
|
714
717
|
.map(user -> {
|
|
715
|
-
|
|
718
|
+
<%_ } else { _%>
|
|
716
719
|
.ifPresent(user -> {
|
|
717
|
-
|
|
720
|
+
<%_ } _%>
|
|
718
721
|
String currentEncryptedPassword = user.getPassword();
|
|
719
722
|
if (!passwordEncoder.matches(currentClearTextPassword, currentEncryptedPassword)) {
|
|
720
723
|
throw new InvalidPasswordException();
|
|
721
724
|
}
|
|
722
725
|
String encryptedPassword = passwordEncoder.encode(newPassword);
|
|
723
726
|
user.setPassword(encryptedPassword);
|
|
724
|
-
|
|
725
|
-
|
|
727
|
+
<%_ if (!reactive) { _%>
|
|
728
|
+
<%_ if (databaseTypeMongodb || databaseTypeNeo4j || databaseTypeCouchbase || databaseTypeCassandra) { _%>
|
|
726
729
|
userRepository.save(user);
|
|
727
|
-
|
|
728
|
-
|
|
730
|
+
<%_ } _%>
|
|
731
|
+
<%_ if (cacheManagerIsAvailable) { _%>
|
|
729
732
|
this.clearUserCaches(user);
|
|
730
|
-
|
|
733
|
+
<%_ } _%>
|
|
731
734
|
log.debug("Changed password for User: {}", user);
|
|
732
735
|
});
|
|
733
|
-
|
|
736
|
+
<%_ } else { _%>
|
|
734
737
|
return user;
|
|
735
738
|
})
|
|
736
739
|
.flatMap(this::saveUser)
|
|
737
|
-
|
|
740
|
+
<%_ if (cacheManagerIsAvailable) { _%>
|
|
738
741
|
.doOnNext(this::clearUserCaches)
|
|
739
|
-
|
|
742
|
+
<%_ } _%>
|
|
740
743
|
.doOnNext(user -> log.debug("Changed password for User: {}", user))
|
|
741
744
|
.then();
|
|
742
|
-
|
|
745
|
+
<%_ } _%>
|
|
743
746
|
}
|
|
744
|
-
<%_ } _%>
|
|
747
|
+
<%_ } _%>
|
|
745
748
|
|
|
746
|
-
|
|
749
|
+
<%_ if (databaseTypeSql) { _%>
|
|
747
750
|
@Transactional(readOnly = true)
|
|
748
|
-
|
|
749
|
-
|
|
751
|
+
<%_ } _%>
|
|
752
|
+
<%_ if (databaseTypeSql || databaseTypeMongodb || databaseTypeNeo4j || databaseTypeCouchbase) { _%>
|
|
750
753
|
public <% if (reactive) { %>Flux<% } else { %>Page<% } %><<%= asDto('AdminUser') %>> getAllManagedUsers(Pageable pageable) {
|
|
751
|
-
return userRepository.findAll<% if (reactive) { %><% if (
|
|
754
|
+
return userRepository.findAll<% if (reactive) { %><% if (databaseTypeSql) { %>WithAuthorities<% } else { %>ByIdNotNull<% }} %>(pageable).map(<%= asDto('AdminUser') %>::new);
|
|
752
755
|
}
|
|
753
756
|
|
|
754
|
-
<%_ if (
|
|
757
|
+
<%_ if (databaseTypeSql) { _%>
|
|
755
758
|
@Transactional(readOnly = true)
|
|
756
759
|
<%_ } _%>
|
|
757
760
|
public <% if (reactive) { %>Flux<% } else { %>Page<% } %><<%= asDto('User') %>> getAllPublicUsers(Pageable pageable) {
|
|
758
|
-
return userRepository.
|
|
761
|
+
return userRepository.findAllBy<% if (!databaseTypeCouchbase) { %>IdNotNullAnd<% } %>ActivatedIsTrue(pageable).map(<%= asDto('User') %>::new);
|
|
759
762
|
}
|
|
760
763
|
|
|
761
|
-
|
|
764
|
+
<%_ if (reactive) { _%>
|
|
762
765
|
|
|
763
|
-
|
|
766
|
+
<%_ if (databaseTypeSql) { _%>
|
|
764
767
|
@Transactional(readOnly = true)
|
|
765
|
-
|
|
768
|
+
<%_ } _%>
|
|
766
769
|
public Mono<Long> countManagedUsers() {
|
|
767
770
|
return userRepository.count();
|
|
768
771
|
}
|
|
769
|
-
|
|
770
|
-
|
|
772
|
+
<%_ } _%>
|
|
773
|
+
<%_ } else { /* Cassandra */ _%>
|
|
771
774
|
public <% if (reactive) { %>Flux<% } else { %>List<% } %><<%= asDto('AdminUser') %>> getAllManagedUsers() {
|
|
772
775
|
return userRepository.findAll()<% if (!reactive) { %>.stream()<% } %>
|
|
773
776
|
.map(<%= asDto('AdminUser') %>::new)<% if (!reactive) { %>
|
|
@@ -780,28 +783,28 @@ public class UserService {
|
|
|
780
783
|
.map(<%= asDto('User') %>::new)<% if (!reactive) { %>
|
|
781
784
|
.collect(Collectors.toList())<% } %>;
|
|
782
785
|
}
|
|
783
|
-
|
|
786
|
+
<%_ } _%>
|
|
784
787
|
|
|
785
|
-
|
|
788
|
+
<%_ if (databaseTypeSql) { _%>
|
|
786
789
|
@Transactional(readOnly = true)
|
|
787
|
-
|
|
790
|
+
<%_ } _%>
|
|
788
791
|
public <% if (reactive) { %>Mono<% } else { %>Optional<% } %><<%= asEntity('User') %>> getUserWithAuthoritiesByLogin(String login) {
|
|
789
|
-
|
|
792
|
+
<%_ if (databaseTypeSql) { _%>
|
|
790
793
|
return userRepository.findOneWithAuthoritiesByLogin(login);
|
|
791
|
-
|
|
794
|
+
<%_ } else { /* MongoDB, Couchbase and Cassandra */ _%>
|
|
792
795
|
return userRepository.findOneByLogin(login);
|
|
793
|
-
|
|
796
|
+
<%_ } _%>
|
|
794
797
|
}
|
|
795
798
|
|
|
796
|
-
|
|
797
|
-
|
|
799
|
+
<%_ if (!authenticationTypeOauth2) { _%>
|
|
800
|
+
<%_ if (databaseTypeSql) { _%>
|
|
798
801
|
@Transactional(readOnly = true)
|
|
799
|
-
|
|
802
|
+
<%_ } _%>
|
|
800
803
|
public <% if (reactive) { %>Mono<% } else { %>Optional<% } %><<%= asEntity('User') %>> getUserWithAuthorities() {
|
|
801
|
-
return SecurityUtils.getCurrentUserLogin().flatMap(userRepository::findOne<% if (
|
|
804
|
+
return SecurityUtils.getCurrentUserLogin().flatMap(userRepository::findOne<% if (databaseTypeSql) { %>WithAuthorities<% } %>ByLogin);
|
|
802
805
|
}
|
|
803
|
-
|
|
804
|
-
|
|
806
|
+
<%_ } _%>
|
|
807
|
+
<%_ if ((databaseTypeSql || databaseTypeMongodb || databaseTypeNeo4j || databaseTypeCouchbase) && authenticationTypeSession && !reactive) { _%>
|
|
805
808
|
|
|
806
809
|
/**
|
|
807
810
|
* Persistent Token are used for providing automatic authentication, they should be automatically deleted after
|
|
@@ -819,8 +822,8 @@ public class UserService {
|
|
|
819
822
|
persistentTokenRepository.delete(token);
|
|
820
823
|
});
|
|
821
824
|
}
|
|
822
|
-
|
|
823
|
-
|
|
825
|
+
<%_ } _%>
|
|
826
|
+
<%_ if (!authenticationTypeOauth2 && (databaseTypeSql || databaseTypeMongodb || databaseTypeNeo4j || databaseTypeCouchbase)) { _%>
|
|
824
827
|
|
|
825
828
|
/**
|
|
826
829
|
* Not activated users should be automatically deleted after 3 days.
|
|
@@ -829,65 +832,65 @@ public class UserService {
|
|
|
829
832
|
*/
|
|
830
833
|
@Scheduled(cron = "0 0 1 * * ?")
|
|
831
834
|
public void removeNotActivatedUsers() {
|
|
832
|
-
|
|
835
|
+
<%_ if (!reactive) { _%>
|
|
833
836
|
userRepository
|
|
834
837
|
.findAllByActivatedIsFalseAndActivationKeyIsNotNullAndCreatedDateBefore(Instant.now().minus(3, ChronoUnit.DAYS))
|
|
835
838
|
.forEach(user -> {
|
|
836
839
|
log.debug("Deleting not activated user {}", user.getLogin());
|
|
837
840
|
userRepository.delete(user);
|
|
838
|
-
|
|
841
|
+
<%_ if (searchEngineElasticsearch) { _%>
|
|
839
842
|
userSearchRepository.delete(user);
|
|
840
|
-
|
|
841
|
-
|
|
843
|
+
<%_ } _%>
|
|
844
|
+
<%_ if (cacheManagerIsAvailable) { _%>
|
|
842
845
|
this.clearUserCaches(user);
|
|
843
|
-
|
|
846
|
+
<%_ } _%>
|
|
844
847
|
});
|
|
845
|
-
|
|
848
|
+
<%_ } else { _%>
|
|
846
849
|
removeNotActivatedUsersReactively().blockLast();
|
|
847
850
|
}
|
|
848
851
|
|
|
849
|
-
|
|
852
|
+
<%_ if (databaseTypeSql) { _%>
|
|
850
853
|
@Transactional
|
|
851
|
-
|
|
854
|
+
<%_ } _%>
|
|
852
855
|
public Flux<<%= asEntity('User') %>> removeNotActivatedUsersReactively() {
|
|
853
856
|
return userRepository
|
|
854
|
-
.findAllByActivatedIsFalseAndActivationKeyIsNotNullAndCreatedDateBefore(<%_ if (
|
|
857
|
+
.findAllByActivatedIsFalseAndActivationKeyIsNotNullAndCreatedDateBefore(<%_ if (databaseTypeSql) { _%>LocalDateTime.ofInstant(Instant.now().minus(3, ChronoUnit.DAYS), ZoneOffset.UTC)<%_ } else { _%>Instant.now().minus(3, ChronoUnit.DAYS)<%_ } _%>)
|
|
855
858
|
.flatMap(user -> userRepository.delete(user).thenReturn(user))
|
|
856
|
-
|
|
859
|
+
<%_ if (searchEngineElasticsearch) { _%>
|
|
857
860
|
.flatMap(user -> userSearchRepository.delete(user).thenReturn(user))
|
|
858
|
-
|
|
859
|
-
|
|
861
|
+
<%_ } _%>
|
|
862
|
+
<%_ if (cacheManagerIsAvailable) { _%>
|
|
860
863
|
.doOnNext(this::clearUserCaches)
|
|
861
|
-
|
|
864
|
+
<%_ } _%>
|
|
862
865
|
.doOnNext(user -> log.debug("Deleted User: {}", user));
|
|
863
|
-
<%_ } _%>
|
|
864
|
-
}
|
|
865
866
|
<%_ } _%>
|
|
866
|
-
|
|
867
|
+
}
|
|
868
|
+
<%_ } _%>
|
|
869
|
+
<%_ if (databaseTypeSql || databaseTypeMongodb || databaseTypeNeo4j || databaseTypeCouchbase) { _%>
|
|
867
870
|
|
|
868
871
|
/**
|
|
869
872
|
* Gets a list of all the authorities.
|
|
870
873
|
* @return a list of all the authorities.
|
|
871
874
|
*/
|
|
872
|
-
<%_ if (
|
|
875
|
+
<%_ if (databaseTypeSql) { _%>
|
|
873
876
|
@Transactional(readOnly = true)
|
|
874
877
|
<%_ } _%>
|
|
875
878
|
public <% if (reactive) { %>Flux<% } else { %>List<% } %><String> getAuthorities() {
|
|
876
879
|
return authorityRepository.findAll()<% if (!reactive) { %>.stream()<% } %>.map(Authority::getName)<% if (!reactive) { %>.collect(Collectors.toList())<% } %>;
|
|
877
880
|
}
|
|
878
|
-
|
|
879
|
-
|
|
881
|
+
<%_ } _%>
|
|
882
|
+
<%_ if (authenticationTypeOauth2) { _%>
|
|
880
883
|
|
|
881
884
|
private <% if (reactive) { %>Mono<<%= asEntity('User') %>><% } else { %><%= asEntity('User') %><% } %> syncUserWithIdP(Map<String, Object> details, <%= asEntity('User') %> user) {
|
|
882
885
|
// save authorities in to sync user roles/groups between IdP and JHipster's local database
|
|
883
|
-
|
|
886
|
+
<%_ if (!reactive) { _%>
|
|
884
887
|
Collection<String> dbAuthorities = getAuthorities();
|
|
885
|
-
|
|
888
|
+
<%_ if (!databaseTypeCouchbase) { _%>
|
|
886
889
|
Collection<String> userAuthorities =
|
|
887
890
|
user.getAuthorities().stream().map(Authority::getName).collect(Collectors.toList());
|
|
888
|
-
|
|
891
|
+
<%_ } else { _%>
|
|
889
892
|
Collection<String> userAuthorities = user.getAuthorities();
|
|
890
|
-
|
|
893
|
+
<%_ } _%>
|
|
891
894
|
for (String authority : userAuthorities) {
|
|
892
895
|
if (!dbAuthorities.contains(authority)) {
|
|
893
896
|
log.debug("Saving authority '{}' in local database", authority);
|
|
@@ -917,14 +920,14 @@ public class UserService {
|
|
|
917
920
|
} else {
|
|
918
921
|
log.debug("Saving user '{}' in local database", user.getLogin());
|
|
919
922
|
userRepository.save(user);
|
|
920
|
-
|
|
923
|
+
<%_ if (cacheManagerIsAvailable) { _%>
|
|
921
924
|
this.clearUserCaches(user);
|
|
922
|
-
|
|
925
|
+
<%_ } _%>
|
|
923
926
|
}
|
|
924
927
|
return user;
|
|
925
|
-
|
|
928
|
+
<%_ } else { _%>
|
|
926
929
|
Collection<String> userAuthorities =
|
|
927
|
-
user.getAuthorities().stream()<% if (
|
|
930
|
+
user.getAuthorities().stream()<% if (!databaseTypeCouchbase) { %>.map(Authority::getName)<% } %>.collect(Collectors.toList());
|
|
928
931
|
|
|
929
932
|
return getAuthorities().collectList()
|
|
930
933
|
.flatMapMany(dbAuthorities -> {
|
|
@@ -941,7 +944,7 @@ public class UserService {
|
|
|
941
944
|
.doOnNext(authority -> log.debug("Saving authority '{}' in local database", authority))
|
|
942
945
|
.flatMap(authorityRepository::save)
|
|
943
946
|
.then(userRepository.findOneByLogin(user.getLogin()))
|
|
944
|
-
.switchIfEmpty(<% if (
|
|
947
|
+
.switchIfEmpty(<% if (authenticationTypeOauth2 && databaseTypeSql) { %>saveUser(user, true)<% } else { %>userRepository.save(user)<% } %>)
|
|
945
948
|
.flatMap(existingUser -> {
|
|
946
949
|
// if IdP sends last updated information, use it to determine if an update should happen
|
|
947
950
|
if (details.get("updated_at") != null) {
|
|
@@ -961,24 +964,24 @@ public class UserService {
|
|
|
961
964
|
return Mono.empty();
|
|
962
965
|
})
|
|
963
966
|
.thenReturn(user);
|
|
964
|
-
<%_ } _%>
|
|
965
|
-
}
|
|
966
967
|
<%_ } _%>
|
|
968
|
+
}
|
|
969
|
+
<%_ } _%>
|
|
967
970
|
|
|
968
|
-
<%_ }
|
|
969
|
-
|
|
971
|
+
<%_ } /* databaseType !== 'no' */ _%>
|
|
972
|
+
<%_ if (authenticationTypeOauth2) { _%>
|
|
970
973
|
/**
|
|
971
974
|
* Returns the user from an OAuth 2.0 login or resource server with JWT.
|
|
972
|
-
|
|
975
|
+
<%_ if (!databaseTypeNo) { _%>
|
|
973
976
|
* Synchronizes the user in the local repository.
|
|
974
|
-
|
|
977
|
+
<%_ } _%>
|
|
975
978
|
*
|
|
976
979
|
* @param authToken the authentication token.
|
|
977
980
|
* @return the user from the authentication.
|
|
978
981
|
*/
|
|
979
|
-
|
|
982
|
+
<%_ if (databaseTypeSql) { _%>
|
|
980
983
|
@Transactional
|
|
981
|
-
|
|
984
|
+
<%_ } _%>
|
|
982
985
|
public <% if (!reactive) { %><%= asDto('AdminUser') %><% } else { %>Mono<<%= asDto('AdminUser') %>><% } %> getUserFromAuthentication(AbstractAuthenticationToken authToken) {
|
|
983
986
|
Map<String, Object> attributes;
|
|
984
987
|
if (authToken instanceof OAuth2AuthenticationToken) {
|
|
@@ -988,37 +991,53 @@ public class UserService {
|
|
|
988
991
|
} else {
|
|
989
992
|
throw new IllegalArgumentException("AuthenticationToken is not OAuth2 or JWT!");
|
|
990
993
|
}
|
|
991
|
-
<%=
|
|
994
|
+
<%= databaseTypeNo ? asDto('AdminUser') : asEntity('User') %> user = getUser(attributes);
|
|
992
995
|
user.setAuthorities(authToken.getAuthorities().stream()
|
|
993
996
|
.map(GrantedAuthority::getAuthority)
|
|
994
|
-
|
|
997
|
+
<%_ if (databaseTypeSql || databaseTypeMongodb || databaseTypeNeo4j) { _%>
|
|
995
998
|
.map(authority -> {
|
|
996
999
|
Authority auth = new Authority();
|
|
997
1000
|
auth.setName(authority);
|
|
998
1001
|
return auth;
|
|
999
1002
|
})
|
|
1000
|
-
|
|
1003
|
+
<%_ } _%>
|
|
1001
1004
|
.collect(Collectors.toSet()));
|
|
1002
|
-
|
|
1005
|
+
|
|
1006
|
+
<%_ if (databaseTypeNo) { _%>
|
|
1007
|
+
return <% if (reactive) { %>Mono.just(user)<% } else { %>user<% } %>;
|
|
1008
|
+
<%_ } else { _%>
|
|
1009
|
+
<%_ if (!reactive) { _%>
|
|
1010
|
+
return new <%= asDto('AdminUser') %>(syncUserWithIdP(attributes, user));
|
|
1011
|
+
<%_ } else { _%>
|
|
1012
|
+
return syncUserWithIdP(attributes, user).flatMap(u -> Mono.just(new <%= asDto('AdminUser') %>(u)));
|
|
1013
|
+
<%_ } _%>
|
|
1014
|
+
<%_ } _%>
|
|
1003
1015
|
}
|
|
1004
1016
|
|
|
1005
|
-
private static <%=
|
|
1006
|
-
<%=
|
|
1017
|
+
private static <%= databaseTypeNo ? asDto('AdminUser') : asEntity('User') %> getUser(Map<String, Object> details) {
|
|
1018
|
+
<%= databaseTypeNo ? asDto('AdminUser') : asEntity('User') %> user = new <%= databaseTypeNo ? asDto('AdminUser') : asEntity('User') %>();
|
|
1007
1019
|
Boolean activated = Boolean.TRUE;
|
|
1020
|
+
String sub = String.valueOf(details.get("sub"));
|
|
1021
|
+
String username = null;
|
|
1022
|
+
if (details.get("preferred_username") != null) {
|
|
1023
|
+
username = ((String) details.get("preferred_username")).toLowerCase();
|
|
1024
|
+
}
|
|
1008
1025
|
// handle resource server JWT, where sub claim is email and uid is ID
|
|
1009
1026
|
if (details.get("uid") != null) {
|
|
1010
1027
|
user.setId((String) details.get("uid"));
|
|
1011
|
-
user.setLogin(
|
|
1028
|
+
user.setLogin(sub);
|
|
1012
1029
|
} else {
|
|
1013
|
-
user.setId(
|
|
1030
|
+
user.setId(sub);
|
|
1014
1031
|
}
|
|
1015
|
-
if (
|
|
1016
|
-
user.setLogin(
|
|
1032
|
+
if (username != null) {
|
|
1033
|
+
user.setLogin(username);
|
|
1017
1034
|
} else if (user.getLogin() == null) {
|
|
1018
1035
|
user.setLogin(user.getId());
|
|
1019
1036
|
}
|
|
1020
1037
|
if (details.get("given_name") != null) {
|
|
1021
1038
|
user.setFirstName((String) details.get("given_name"));
|
|
1039
|
+
} else if (details.get("name") != null) {
|
|
1040
|
+
user.setFirstName((String) details.get("name"));
|
|
1022
1041
|
}
|
|
1023
1042
|
if (details.get("family_name") != null) {
|
|
1024
1043
|
user.setLastName((String) details.get("family_name"));
|
|
@@ -1028,8 +1047,11 @@ public class UserService {
|
|
|
1028
1047
|
}
|
|
1029
1048
|
if (details.get("email") != null) {
|
|
1030
1049
|
user.setEmail(((String) details.get("email")).toLowerCase());
|
|
1050
|
+
} else if (sub.contains("|") && (username != null && username.contains("@"))) {
|
|
1051
|
+
// special handling for Auth0
|
|
1052
|
+
user.setEmail(username);
|
|
1031
1053
|
} else {
|
|
1032
|
-
user.setEmail(
|
|
1054
|
+
user.setEmail(sub);
|
|
1033
1055
|
}
|
|
1034
1056
|
if (details.get("langKey") != null) {
|
|
1035
1057
|
user.setLangKey((String) details.get("langKey"));
|
|
@@ -1052,8 +1074,8 @@ public class UserService {
|
|
|
1052
1074
|
user.setActivated(activated);
|
|
1053
1075
|
return user;
|
|
1054
1076
|
}
|
|
1055
|
-
|
|
1056
|
-
|
|
1077
|
+
<%_ } _%>
|
|
1078
|
+
<%_ if (cacheManagerIsAvailable && !databaseTypeNo) { _%>
|
|
1057
1079
|
|
|
1058
1080
|
private void clearUserCaches(<%= asEntity('User') %> user) {
|
|
1059
1081
|
Objects.requireNonNull(cacheManager.getCache(UserRepository.USERS_BY_LOGIN_CACHE)).evict(user.getLogin());
|
|
@@ -1061,5 +1083,5 @@ public class UserService {
|
|
|
1061
1083
|
Objects.requireNonNull(cacheManager.getCache(UserRepository.USERS_BY_EMAIL_CACHE)).evict(user.getEmail());
|
|
1062
1084
|
}
|
|
1063
1085
|
}
|
|
1064
|
-
|
|
1086
|
+
<%_ } _%>
|
|
1065
1087
|
}
|