From b628baeb1a1cb76bf8481d7da8d570b582012d55 Mon Sep 17 00:00:00 2001 From: Max Peintner Date: Mon, 13 Jul 2020 13:38:49 +0200 Subject: [PATCH] feat(console): pinned org list, project grant detail view, state change, i18n, domain dialog, policy refactor, theme fixes, refactor user and projects (#449) * pinned organisations * project grant detail, state update, user-list pad * rm entry components * members nav, i18n, disable actions on non active * add org domain dialog * mv password policy rm to detail view * prefix pinned orgs for userid, fix collapsed pad * fix app back navigation * rem pwd required validator * fix org item overflow * routing * move users modules to users page * reorganize projects * remove child init of translate * hide same preferred loginname --- console/src/app/app-routing.module.ts | 14 +- console/src/app/app.component.html | 4 +- .../accounts-card/accounts-card.component.ts | 4 +- .../member-create-dialog.module.ts | 3 - .../meta-layout/meta-layout.component.scss | 3 +- .../user-grants/user-grants.component.ts | 2 + .../modules/warn-dialog/warn-dialog.module.ts | 3 - .../src/app/pages/home/home.component.html | 4 +- console/src/app/pages/home/home.module.ts | 12 +- .../iam-members/iam-members.component.html | 169 +++++++++--------- .../iam-members/iam-members.component.scss | 51 ++++-- .../orgs/org-create/org-create.component.ts | 5 +- .../orgs/org-create/org-create.module.ts | 12 +- .../add-domain-dialog.component.html | 18 ++ .../add-domain-dialog.component.scss | 26 +++ .../add-domain-dialog.component.spec.ts | 25 +++ .../add-domain-dialog.component.ts | 26 +++ .../add-domain-dialog.module.ts | 22 +++ .../orgs/org-detail/org-detail.component.html | 12 +- .../orgs/org-detail/org-detail.component.scss | 10 -- .../orgs/org-detail/org-detail.component.ts | 26 ++- .../orgs/org-grid/org-grid.component.html | 38 ++-- .../orgs/org-grid/org-grid.component.scss | 36 +++- .../pages/orgs/org-grid/org-grid.component.ts | 66 +++++++ console/src/app/pages/orgs/orgs.module.ts | 14 +- .../password-policy.component.html | 8 + .../password-policy.component.scss | 9 + .../password-policy.component.ts | 38 ++-- .../password-policy/password-policy.module.ts | 16 +- .../policy-grid/policy-grid.component.html | 10 -- .../orgs/policy-grid/policy-grid.component.ts | 26 --- .../project-grant-detail.component.html | 19 -- .../project-grant-detail.component.scss | 43 ----- .../project-grant-detail.component.ts | 32 ---- .../apps/app-create/app-create.component.html | 0 .../apps/app-create/app-create.component.scss | 0 .../app-create/app-create.component.spec.ts | 0 .../apps/app-create/app-create.component.ts | 0 .../apps/app-detail/app-detail.component.html | 4 +- .../apps/app-detail/app-detail.component.scss | 0 .../app-detail/app-detail.component.spec.ts | 0 .../apps/app-detail/app-detail.component.ts | 0 .../app-secret-dialog.component.html | 0 .../app-secret-dialog.component.scss | 0 .../app-secret-dialog.component.spec.ts | 0 .../app-secret-dialog.component.ts | 0 .../apps/apps-routing.module.ts | 0 .../pages/{ => projects}/apps/apps.module.ts | 15 +- .../granted-project-detail.component.html | 0 .../granted-project-detail.component.scss | 0 .../granted-project-detail.component.spec.ts | 0 .../granted-project-detail.component.ts | 0 .../granted-project-grid.component.html | 0 .../granted-project-grid.component.scss | 0 .../granted-project-grid.component.spec.ts | 0 .../granted-project-grid.component.ts | 0 .../granted-project-list.component.html | 0 .../granted-project-list.component.scss | 0 .../granted-project-list.component.spec.ts | 0 .../granted-project-list.component.ts | 0 .../granted-projects-routing.module.ts | 3 +- .../granted-projects.component.html | 0 .../granted-projects.component.scss | 0 .../granted-projects.component.spec.ts | 0 .../granted-projects.component.ts | 0 .../granted-projects.module.ts | 26 +-- .../owned-project-detail.component.html | 5 +- .../owned-project-detail.component.scss | 0 .../owned-project-detail.component.spec.ts | 0 .../owned-project-detail.component.ts | 48 ++++- .../owned-project-grid.component.html | 0 .../owned-project-grid.component.scss | 0 .../owned-project-grid.component.spec.ts | 0 .../owned-project-grid.component.ts | 1 - .../owned-project-list.component.html | 0 .../owned-project-list.component.scss | 0 .../owned-project-list.component.spec.ts | 0 .../owned-project-list.component.ts | 0 .../owned-projects-routing.module.ts | 5 +- .../owned-projects.component.html | 0 .../owned-projects.component.scss | 0 .../owned-projects.component.spec.ts | 0 .../owned-projects.component.ts | 0 .../owned-projects/owned-projects.module.ts | 28 ++- .../project-application-grid.component.html | 0 .../project-application-grid.component.scss | 0 ...project-application-grid.component.spec.ts | 0 .../project-application-grid.component.ts | 0 .../project-applications-datasource.ts | 0 .../project-applications.component.html | 0 .../project-applications.component.scss | 0 .../project-applications.component.spec.ts | 0 .../project-applications.component.ts | 0 .../project-grant-detail-datasource.ts | 0 .../project-grant-detail-routing.module.ts | 0 .../project-grant-detail.component.html | 58 ++++++ .../project-grant-detail.component.scss | 92 ++++++++++ .../project-grant-detail.component.spec.ts | 0 .../project-grant-detail.component.ts | 88 +++++++++ .../project-grant-detail.module.ts | 4 + ...grant-members-create-dialog.component.html | 0 ...grant-members-create-dialog.component.scss | 0 ...nt-members-create-dialog.component.spec.ts | 0 ...t-grant-members-create-dialog.component.ts | 0 ...ject-grant-members-create-dialog.module.ts | 3 - .../project-grant-members-datasource.ts | 0 .../project-grant-members.component.html | 2 +- .../project-grant-members.component.scss | 4 +- .../project-grant-members.component.spec.ts | 0 .../project-grant-members.component.ts | 0 .../project-grant-members.module.ts | 0 .../project-grants-datasource.ts | 0 .../project-grants.component.html | 2 +- .../project-grants.component.scss | 0 .../project-grants.component.spec.ts | 0 .../project-grants.component.ts | 0 .../project-create-routing.module.ts | 0 .../project-create.component.html | 0 .../project-create.component.scss | 0 .../project-create.component.spec.ts | 0 .../project-create.component.ts | 0 .../project-create/project-create.module.ts | 12 +- .../project-grant-create-routing.module.ts | 0 .../project-grant-create.component.html | 0 .../project-grant-create.component.scss | 0 .../project-grant-create.component.spec.ts | 0 .../project-grant-create.component.ts | 0 .../project-grant-create.module.ts | 2 +- .../project-role-create-routing.module.ts | 0 .../project-role-create.component.html | 0 .../project-role-create.component.scss | 0 .../project-role-create.component.spec.ts | 0 .../project-role-create.component.ts | 0 .../project-role-create.module.ts | 0 .../user-create/user-create-routing.module.ts | 0 .../user-create/user-create.component.html | 0 .../user-create/user-create.component.scss | 0 .../user-create/user-create.component.spec.ts | 0 .../user-create/user-create.component.ts | 0 .../user-create/user-create.module.ts | 0 .../auth-user-detail.component.html | 0 .../auth-user-detail.component.scss | 0 .../auth-user-detail.component.spec.ts | 0 .../auth-user-detail.component.ts | 0 .../auth-user-mfa.component.html | 0 .../auth-user-mfa.component.scss | 0 .../auth-user-mfa.component.spec.ts | 0 .../auth-user-mfa/auth-user-mfa.component.ts | 0 .../code-dialog/code-dialog.component.html | 0 .../code-dialog/code-dialog.component.scss | 0 .../code-dialog/code-dialog.component.spec.ts | 0 .../code-dialog/code-dialog.component.ts | 0 .../dialog-otp/dialog-otp.component.html | 0 .../dialog-otp/dialog-otp.component.scss | 0 .../dialog-otp/dialog-otp.component.ts | 0 .../detail-form/detail-form.component.html | 0 .../detail-form/detail-form.component.scss | 0 .../detail-form/detail-form.component.spec.ts | 0 .../detail-form/detail-form.component.ts | 0 .../detail-form/detail-form.module.ts | 0 .../password/password.component.html | 2 +- .../password/password.component.scss | 0 .../password/password.component.spec.ts | 0 .../password/password.component.ts | 3 +- .../theme-setting.component.html | 0 .../theme-setting.component.scss | 0 .../theme-setting.component.spec.ts | 0 .../theme-setting/theme-setting.component.ts | 0 .../user-detail/user-detail-routing.module.ts | 0 .../user-detail/user-detail.module.ts | 12 +- .../user-detail/user-detail.component.html | 0 .../user-detail/user-detail.component.scss | 0 .../user-detail/user-detail.component.spec.ts | 0 .../user-detail/user-detail.component.ts | 0 .../user-mfa/user-mfa.component.html | 0 .../user-mfa/user-mfa.component.scss | 0 .../user-mfa/user-mfa.component.spec.ts | 0 .../user-mfa/user-mfa.component.ts | 0 .../user-list/user-list-routing.module.ts | 0 .../user-list/user-list.component.html | 2 +- .../user-list/user-list.component.scss | 15 +- .../user-list/user-list.component.spec.ts | 0 .../user-list/user-list.component.ts | 0 .../{ => users}/user-list/user-list.module.ts | 12 +- .../app/pages/users/users-routing.module.ts | 27 +++ console/src/app/pages/users/users.module.ts | 13 ++ .../app/pages/{user-detail => }/validators.ts | 0 console/src/app/services/project.service.ts | 23 +++ console/src/app/services/toast.service.ts | 2 +- console/src/assets/i18n/de.json | 43 ++++- console/src/assets/i18n/en.json | 37 +++- console/src/styles.scss | 64 +++++-- console/src/styles/table.scss | 4 +- 193 files changed, 967 insertions(+), 500 deletions(-) create mode 100644 console/src/app/pages/orgs/org-detail/add-domain-dialog/add-domain-dialog.component.html create mode 100644 console/src/app/pages/orgs/org-detail/add-domain-dialog/add-domain-dialog.component.scss create mode 100644 console/src/app/pages/orgs/org-detail/add-domain-dialog/add-domain-dialog.component.spec.ts create mode 100644 console/src/app/pages/orgs/org-detail/add-domain-dialog/add-domain-dialog.component.ts create mode 100644 console/src/app/pages/orgs/org-detail/add-domain-dialog/add-domain-dialog.module.ts delete mode 100644 console/src/app/pages/owned-projects/project-grant-detail/project-grant-detail.component.html delete mode 100644 console/src/app/pages/owned-projects/project-grant-detail/project-grant-detail.component.scss delete mode 100644 console/src/app/pages/owned-projects/project-grant-detail/project-grant-detail.component.ts rename console/src/app/pages/{ => projects}/apps/app-create/app-create.component.html (100%) rename console/src/app/pages/{ => projects}/apps/app-create/app-create.component.scss (100%) rename console/src/app/pages/{ => projects}/apps/app-create/app-create.component.spec.ts (100%) rename console/src/app/pages/{ => projects}/apps/app-create/app-create.component.ts (100%) rename console/src/app/pages/{ => projects}/apps/app-detail/app-detail.component.html (97%) rename console/src/app/pages/{ => projects}/apps/app-detail/app-detail.component.scss (100%) rename console/src/app/pages/{ => projects}/apps/app-detail/app-detail.component.spec.ts (100%) rename console/src/app/pages/{ => projects}/apps/app-detail/app-detail.component.ts (100%) rename console/src/app/pages/{ => projects}/apps/app-secret-dialog/app-secret-dialog.component.html (100%) rename console/src/app/pages/{ => projects}/apps/app-secret-dialog/app-secret-dialog.component.scss (100%) rename console/src/app/pages/{ => projects}/apps/app-secret-dialog/app-secret-dialog.component.spec.ts (100%) rename console/src/app/pages/{ => projects}/apps/app-secret-dialog/app-secret-dialog.component.ts (100%) rename console/src/app/pages/{ => projects}/apps/apps-routing.module.ts (100%) rename console/src/app/pages/{ => projects}/apps/apps.module.ts (83%) rename console/src/app/pages/{ => projects}/granted-projects/granted-project-detail/granted-project-detail.component.html (100%) rename console/src/app/pages/{ => projects}/granted-projects/granted-project-detail/granted-project-detail.component.scss (100%) rename console/src/app/pages/{ => projects}/granted-projects/granted-project-detail/granted-project-detail.component.spec.ts (100%) rename console/src/app/pages/{ => projects}/granted-projects/granted-project-detail/granted-project-detail.component.ts (100%) rename console/src/app/pages/{ => projects}/granted-projects/granted-project-grid/granted-project-grid.component.html (100%) rename console/src/app/pages/{ => projects}/granted-projects/granted-project-grid/granted-project-grid.component.scss (100%) rename console/src/app/pages/{ => projects}/granted-projects/granted-project-grid/granted-project-grid.component.spec.ts (100%) rename console/src/app/pages/{ => projects}/granted-projects/granted-project-grid/granted-project-grid.component.ts (100%) rename console/src/app/pages/{ => projects}/granted-projects/granted-project-list/granted-project-list.component.html (100%) rename console/src/app/pages/{ => projects}/granted-projects/granted-project-list/granted-project-list.component.scss (100%) rename console/src/app/pages/{ => projects}/granted-projects/granted-project-list/granted-project-list.component.spec.ts (100%) rename console/src/app/pages/{ => projects}/granted-projects/granted-project-list/granted-project-list.component.ts (100%) rename console/src/app/pages/{ => projects}/granted-projects/granted-projects-routing.module.ts (92%) rename console/src/app/pages/{ => projects}/granted-projects/granted-projects.component.html (100%) rename console/src/app/pages/{ => projects}/granted-projects/granted-projects.component.scss (100%) rename console/src/app/pages/{ => projects}/granted-projects/granted-projects.component.spec.ts (100%) rename console/src/app/pages/{ => projects}/granted-projects/granted-projects.component.ts (100%) rename console/src/app/pages/{ => projects}/granted-projects/granted-projects.module.ts (72%) rename console/src/app/pages/{ => projects}/owned-projects/owned-project-detail/owned-project-detail.component.html (94%) rename console/src/app/pages/{ => projects}/owned-projects/owned-project-detail/owned-project-detail.component.scss (100%) rename console/src/app/pages/{ => projects}/owned-projects/owned-project-detail/owned-project-detail.component.spec.ts (100%) rename console/src/app/pages/{ => projects}/owned-projects/owned-project-detail/owned-project-detail.component.ts (70%) rename console/src/app/pages/{ => projects}/owned-projects/owned-project-grid/owned-project-grid.component.html (100%) rename console/src/app/pages/{ => projects}/owned-projects/owned-project-grid/owned-project-grid.component.scss (100%) rename console/src/app/pages/{ => projects}/owned-projects/owned-project-grid/owned-project-grid.component.spec.ts (100%) rename console/src/app/pages/{ => projects}/owned-projects/owned-project-grid/owned-project-grid.component.ts (99%) rename console/src/app/pages/{ => projects}/owned-projects/owned-project-list/owned-project-list.component.html (100%) rename console/src/app/pages/{ => projects}/owned-projects/owned-project-list/owned-project-list.component.scss (100%) rename console/src/app/pages/{ => projects}/owned-projects/owned-project-list/owned-project-list.component.spec.ts (100%) rename console/src/app/pages/{ => projects}/owned-projects/owned-project-list/owned-project-list.component.ts (100%) rename console/src/app/pages/{ => projects}/owned-projects/owned-projects-routing.module.ts (88%) rename console/src/app/pages/{ => projects}/owned-projects/owned-projects.component.html (100%) rename console/src/app/pages/{ => projects}/owned-projects/owned-projects.component.scss (100%) rename console/src/app/pages/{ => projects}/owned-projects/owned-projects.component.spec.ts (100%) rename console/src/app/pages/{ => projects}/owned-projects/owned-projects.component.ts (100%) rename console/src/app/pages/{ => projects}/owned-projects/owned-projects.module.ts (77%) rename console/src/app/pages/{ => projects}/owned-projects/project-application-grid/project-application-grid.component.html (100%) rename console/src/app/pages/{ => projects}/owned-projects/project-application-grid/project-application-grid.component.scss (100%) rename console/src/app/pages/{ => projects}/owned-projects/project-application-grid/project-application-grid.component.spec.ts (100%) rename console/src/app/pages/{ => projects}/owned-projects/project-application-grid/project-application-grid.component.ts (100%) rename console/src/app/pages/{ => projects}/owned-projects/project-applications/project-applications-datasource.ts (100%) rename console/src/app/pages/{ => projects}/owned-projects/project-applications/project-applications.component.html (100%) rename console/src/app/pages/{ => projects}/owned-projects/project-applications/project-applications.component.scss (100%) rename console/src/app/pages/{ => projects}/owned-projects/project-applications/project-applications.component.spec.ts (100%) rename console/src/app/pages/{ => projects}/owned-projects/project-applications/project-applications.component.ts (100%) rename console/src/app/pages/{ => projects}/owned-projects/project-grant-detail/project-grant-detail-datasource.ts (100%) rename console/src/app/pages/{ => projects}/owned-projects/project-grant-detail/project-grant-detail-routing.module.ts (100%) create mode 100644 console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-detail.component.html create mode 100644 console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-detail.component.scss rename console/src/app/pages/{ => projects}/owned-projects/project-grant-detail/project-grant-detail.component.spec.ts (100%) create mode 100644 console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-detail.component.ts rename console/src/app/pages/{ => projects}/owned-projects/project-grant-detail/project-grant-detail.module.ts (90%) rename console/src/app/pages/{ => projects}/owned-projects/project-grant-detail/project-grant-members/project-grant-members-create-dialog/project-grant-members-create-dialog.component.html (100%) rename console/src/app/pages/{ => projects}/owned-projects/project-grant-detail/project-grant-members/project-grant-members-create-dialog/project-grant-members-create-dialog.component.scss (100%) rename console/src/app/pages/{ => projects}/owned-projects/project-grant-detail/project-grant-members/project-grant-members-create-dialog/project-grant-members-create-dialog.component.spec.ts (100%) rename console/src/app/pages/{ => projects}/owned-projects/project-grant-detail/project-grant-members/project-grant-members-create-dialog/project-grant-members-create-dialog.component.ts (100%) rename console/src/app/pages/{ => projects}/owned-projects/project-grant-detail/project-grant-members/project-grant-members-create-dialog/project-grant-members-create-dialog.module.ts (92%) rename console/src/app/pages/{ => projects}/owned-projects/project-grant-detail/project-grant-members/project-grant-members-datasource.ts (100%) rename console/src/app/pages/{ => projects}/owned-projects/project-grant-detail/project-grant-members/project-grant-members.component.html (98%) rename console/src/app/pages/{ => projects}/owned-projects/project-grant-detail/project-grant-members/project-grant-members.component.scss (98%) rename console/src/app/pages/{ => projects}/owned-projects/project-grant-detail/project-grant-members/project-grant-members.component.spec.ts (100%) rename console/src/app/pages/{ => projects}/owned-projects/project-grant-detail/project-grant-members/project-grant-members.component.ts (100%) rename console/src/app/pages/{ => projects}/owned-projects/project-grant-detail/project-grant-members/project-grant-members.module.ts (100%) rename console/src/app/pages/{ => projects}/owned-projects/project-grants/project-grants-datasource.ts (100%) rename console/src/app/pages/{ => projects}/owned-projects/project-grants/project-grants.component.html (99%) rename console/src/app/pages/{ => projects}/owned-projects/project-grants/project-grants.component.scss (100%) rename console/src/app/pages/{ => projects}/owned-projects/project-grants/project-grants.component.spec.ts (100%) rename console/src/app/pages/{ => projects}/owned-projects/project-grants/project-grants.component.ts (100%) rename console/src/app/pages/{ => projects}/project-create/project-create-routing.module.ts (100%) rename console/src/app/pages/{ => projects}/project-create/project-create.component.html (100%) rename console/src/app/pages/{ => projects}/project-create/project-create.component.scss (100%) rename console/src/app/pages/{ => projects}/project-create/project-create.component.spec.ts (100%) rename console/src/app/pages/{ => projects}/project-create/project-create.component.ts (100%) rename console/src/app/pages/{ => projects}/project-create/project-create.module.ts (67%) rename console/src/app/pages/{ => projects}/project-grant-create/project-grant-create-routing.module.ts (100%) rename console/src/app/pages/{ => projects}/project-grant-create/project-grant-create.component.html (100%) rename console/src/app/pages/{ => projects}/project-grant-create/project-grant-create.component.scss (100%) rename console/src/app/pages/{ => projects}/project-grant-create/project-grant-create.component.spec.ts (100%) rename console/src/app/pages/{ => projects}/project-grant-create/project-grant-create.component.ts (100%) rename console/src/app/pages/{ => projects}/project-grant-create/project-grant-create.module.ts (94%) rename console/src/app/pages/{ => projects}/project-role-create/project-role-create-routing.module.ts (100%) rename console/src/app/pages/{ => projects}/project-role-create/project-role-create.component.html (100%) rename console/src/app/pages/{ => projects}/project-role-create/project-role-create.component.scss (100%) rename console/src/app/pages/{ => projects}/project-role-create/project-role-create.component.spec.ts (100%) rename console/src/app/pages/{ => projects}/project-role-create/project-role-create.component.ts (100%) rename console/src/app/pages/{ => projects}/project-role-create/project-role-create.module.ts (100%) rename console/src/app/pages/{ => users}/user-create/user-create-routing.module.ts (100%) rename console/src/app/pages/{ => users}/user-create/user-create.component.html (100%) rename console/src/app/pages/{ => users}/user-create/user-create.component.scss (100%) rename console/src/app/pages/{ => users}/user-create/user-create.component.spec.ts (100%) rename console/src/app/pages/{ => users}/user-create/user-create.component.ts (100%) rename console/src/app/pages/{ => users}/user-create/user-create.module.ts (100%) rename console/src/app/pages/{ => users}/user-detail/auth-user-detail/auth-user-detail.component.html (100%) rename console/src/app/pages/{ => users}/user-detail/auth-user-detail/auth-user-detail.component.scss (100%) rename console/src/app/pages/{ => users}/user-detail/auth-user-detail/auth-user-detail.component.spec.ts (100%) rename console/src/app/pages/{ => users}/user-detail/auth-user-detail/auth-user-detail.component.ts (100%) rename console/src/app/pages/{ => users}/user-detail/auth-user-detail/auth-user-mfa/auth-user-mfa.component.html (100%) rename console/src/app/pages/{ => users}/user-detail/auth-user-detail/auth-user-mfa/auth-user-mfa.component.scss (100%) rename console/src/app/pages/{ => users}/user-detail/auth-user-detail/auth-user-mfa/auth-user-mfa.component.spec.ts (100%) rename console/src/app/pages/{ => users}/user-detail/auth-user-detail/auth-user-mfa/auth-user-mfa.component.ts (100%) rename console/src/app/pages/{ => users}/user-detail/auth-user-detail/code-dialog/code-dialog.component.html (100%) rename console/src/app/pages/{ => users}/user-detail/auth-user-detail/code-dialog/code-dialog.component.scss (100%) rename console/src/app/pages/{ => users}/user-detail/auth-user-detail/code-dialog/code-dialog.component.spec.ts (100%) rename console/src/app/pages/{ => users}/user-detail/auth-user-detail/code-dialog/code-dialog.component.ts (100%) rename console/src/app/pages/{ => users}/user-detail/auth-user-detail/dialog-otp/dialog-otp.component.html (100%) rename console/src/app/pages/{ => users}/user-detail/auth-user-detail/dialog-otp/dialog-otp.component.scss (100%) rename console/src/app/pages/{ => users}/user-detail/auth-user-detail/dialog-otp/dialog-otp.component.ts (100%) rename console/src/app/pages/{ => users}/user-detail/detail-form/detail-form.component.html (100%) rename console/src/app/pages/{ => users}/user-detail/detail-form/detail-form.component.scss (100%) rename console/src/app/pages/{ => users}/user-detail/detail-form/detail-form.component.spec.ts (100%) rename console/src/app/pages/{ => users}/user-detail/detail-form/detail-form.component.ts (100%) rename console/src/app/pages/{ => users}/user-detail/detail-form/detail-form.module.ts (100%) rename console/src/app/pages/{ => users}/user-detail/password/password.component.html (99%) rename console/src/app/pages/{ => users}/user-detail/password/password.component.scss (100%) rename console/src/app/pages/{ => users}/user-detail/password/password.component.spec.ts (100%) rename console/src/app/pages/{ => users}/user-detail/password/password.component.ts (98%) rename console/src/app/pages/{ => users}/user-detail/theme-setting/theme-setting.component.html (100%) rename console/src/app/pages/{ => users}/user-detail/theme-setting/theme-setting.component.scss (100%) rename console/src/app/pages/{ => users}/user-detail/theme-setting/theme-setting.component.spec.ts (100%) rename console/src/app/pages/{ => users}/user-detail/theme-setting/theme-setting.component.ts (100%) rename console/src/app/pages/{ => users}/user-detail/user-detail-routing.module.ts (100%) rename console/src/app/pages/{ => users}/user-detail/user-detail.module.ts (87%) rename console/src/app/pages/{ => users}/user-detail/user-detail/user-detail.component.html (100%) rename console/src/app/pages/{ => users}/user-detail/user-detail/user-detail.component.scss (100%) rename console/src/app/pages/{ => users}/user-detail/user-detail/user-detail.component.spec.ts (100%) rename console/src/app/pages/{ => users}/user-detail/user-detail/user-detail.component.ts (100%) rename console/src/app/pages/{ => users}/user-detail/user-mfa/user-mfa.component.html (100%) rename console/src/app/pages/{ => users}/user-detail/user-mfa/user-mfa.component.scss (100%) rename console/src/app/pages/{ => users}/user-detail/user-mfa/user-mfa.component.spec.ts (100%) rename console/src/app/pages/{ => users}/user-detail/user-mfa/user-mfa.component.ts (100%) rename console/src/app/pages/{ => users}/user-list/user-list-routing.module.ts (100%) rename console/src/app/pages/{ => users}/user-list/user-list.component.html (98%) rename console/src/app/pages/{ => users}/user-list/user-list.component.scss (78%) rename console/src/app/pages/{ => users}/user-list/user-list.component.spec.ts (100%) rename console/src/app/pages/{ => users}/user-list/user-list.component.ts (100%) rename console/src/app/pages/{ => users}/user-list/user-list.module.ts (79%) create mode 100644 console/src/app/pages/users/users-routing.module.ts create mode 100644 console/src/app/pages/users/users.module.ts rename console/src/app/pages/{user-detail => }/validators.ts (100%) diff --git a/console/src/app/app-routing.module.ts b/console/src/app/app-routing.module.ts index a7ec050286..e1a4065621 100644 --- a/console/src/app/app-routing.module.ts +++ b/console/src/app/app-routing.module.ts @@ -12,7 +12,8 @@ const routes: Routes = [ }, { path: 'granted-projects', - loadChildren: () => import('./pages/granted-projects/granted-projects.module').then(m => m.GrantedProjectsModule), + loadChildren: () => import('./pages/projects/granted-projects/granted-projects.module') + .then(m => m.GrantedProjectsModule), canActivate: [AuthGuard, RoleGuard], data: { roles: ['project.read'], @@ -20,20 +21,16 @@ const routes: Routes = [ }, { path: 'projects', - loadChildren: () => import('./pages/owned-projects/owned-projects.module').then(m => m.OwnedProjectsModule), + loadChildren: () => import('./pages/projects/owned-projects/owned-projects.module') + .then(m => m.OwnedProjectsModule), canActivate: [AuthGuard, RoleGuard], data: { roles: ['project.read'], }, }, - { - path: 'user', - loadChildren: () => import('./pages/user-detail/user-detail.module').then(m => m.UserDetailModule), - canActivate: [AuthGuard], - }, { path: 'users', - loadChildren: () => import('./pages/user-list/user-list.module').then(m => m.UserListModule), + loadChildren: () => import('./pages/users/users.module').then(m => m.UsersModule), canActivate: [AuthGuard, RoleGuard], data: { roles: ['user.read'], @@ -55,7 +52,6 @@ const routes: Routes = [ roles: ['org.read'], }, }, - { path: 'grant-create/project/:projectid/grant/:grantid', loadChildren: () => import('src/app/pages/user-grant-create/user-grant-create.module') diff --git a/console/src/app/app.component.html b/console/src/app/app.component.html index bf7ef131ff..9f60282476 100644 --- a/console/src/app/app.component.html +++ b/console/src/app/app.component.html @@ -54,7 +54,7 @@
+ [routerLink]="['/users/me']"> {{ 'MENU.PERSONAL_INFO' | translate }} @@ -104,7 +104,7 @@
- {{ 'MENU.USER' | translate }} diff --git a/console/src/app/modules/accounts-card/accounts-card.component.ts b/console/src/app/modules/accounts-card/accounts-card.component.ts index bb5cebc35c..e7d3d10352 100644 --- a/console/src/app/modules/accounts-card/accounts-card.component.ts +++ b/console/src/app/modules/accounts-card/accounts-card.component.ts @@ -20,7 +20,7 @@ export class AccountsCardComponent implements OnInit { constructor(public authService: AuthService, private router: Router, private userService: AuthUserService) { this.userService.getMyUserSessions().then(sessions => { this.users = sessions.toObject().userSessionsList; - const index = this.users.findIndex(user => user.userName === this.profile.userName); + const index = this.users.findIndex(user => user.loginName === this.profile.preferredLoginName); this.users.splice(index, 1); this.loadingUsers = false; @@ -34,7 +34,7 @@ export class AccountsCardComponent implements OnInit { } public editUserProfile(): void { - this.router.navigate(['user/me']); + this.router.navigate(['users/me']); this.close.emit(); } diff --git a/console/src/app/modules/add-member-dialog/member-create-dialog.module.ts b/console/src/app/modules/add-member-dialog/member-create-dialog.module.ts index 40234f6a99..e206bfff36 100644 --- a/console/src/app/modules/add-member-dialog/member-create-dialog.module.ts +++ b/console/src/app/modules/add-member-dialog/member-create-dialog.module.ts @@ -28,8 +28,5 @@ import { MemberCreateDialogComponent } from './member-create-dialog.component'; SearchRolesAutocompleteModule, OrgMemberRolesAutocompleteModule, ], - entryComponents: [ - MemberCreateDialogComponent, - ], }) export class MemberCreateDialogModule { } diff --git a/console/src/app/modules/meta-layout/meta-layout.component.scss b/console/src/app/modules/meta-layout/meta-layout.component.scss index c98a4728e5..216a28972c 100644 --- a/console/src/app/modules/meta-layout/meta-layout.component.scss +++ b/console/src/app/modules/meta-layout/meta-layout.component.scss @@ -17,11 +17,11 @@ .meta { position: relative; flex: 1 0 300px; + padding: 1rem; @media only screen and (min-width: 1500px) { flex-basis: 400px; } - padding: 1rem; .meta-content { max-height: calc(100vh - 60px); @@ -32,6 +32,7 @@ &.hidden { flex: 0 0 0 !important; width: 0; + padding: 1px; .hide { transform: rotate(180deg); diff --git a/console/src/app/modules/user-grants/user-grants.component.ts b/console/src/app/modules/user-grants/user-grants.component.ts index e26233f9aa..f598222c11 100644 --- a/console/src/app/modules/user-grants/user-grants.component.ts +++ b/console/src/app/modules/user-grants/user-grants.component.ts @@ -29,6 +29,8 @@ export class UserGrantsComponent implements OnInit, AfterViewInit { @Input() allowCreate: boolean = false; @Input() allowDelete: boolean = false; + @Input() public disabled: boolean = false; + @Input() userId: string = ''; @Input() projectId: string = ''; diff --git a/console/src/app/modules/warn-dialog/warn-dialog.module.ts b/console/src/app/modules/warn-dialog/warn-dialog.module.ts index bbe5428a5c..6520c8ef7e 100644 --- a/console/src/app/modules/warn-dialog/warn-dialog.module.ts +++ b/console/src/app/modules/warn-dialog/warn-dialog.module.ts @@ -14,8 +14,5 @@ import { WarnDialogComponent } from './warn-dialog.component'; TranslateModule, MatButtonModule, ], - entryComponents: [ - WarnDialogComponent, - ], }) export class WarnDialogModule { } diff --git a/console/src/app/pages/home/home.component.html b/console/src/app/pages/home/home.component.html index 56642bdbd6..64c2acb20c 100644 --- a/console/src/app/pages/home/home.component.html +++ b/console/src/app/pages/home/home.component.html @@ -32,7 +32,7 @@ @@ -75,7 +75,7 @@ diff --git a/console/src/app/pages/home/home.module.ts b/console/src/app/pages/home/home.module.ts index 5cc387c91a..40f18ee2d0 100644 --- a/console/src/app/pages/home/home.module.ts +++ b/console/src/app/pages/home/home.module.ts @@ -1,10 +1,8 @@ import { CommonModule } from '@angular/common'; -import { HttpClient } from '@angular/common/http'; import { NgModule } from '@angular/core'; import { MatButtonModule } from '@angular/material/button'; import { MatIconModule } from '@angular/material/icon'; -import { TranslateLoader, TranslateModule } from '@ngx-translate/core'; -import { HttpLoaderFactory } from 'src/app/app.module'; +import { TranslateModule } from '@ngx-translate/core'; import { HasRoleModule } from 'src/app/directives/has-role/has-role.module'; import { HomeRoutingModule } from './home-routing.module'; @@ -20,13 +18,7 @@ import { HomeComponent } from './home.component'; HasRoleModule, HomeRoutingModule, MatButtonModule, - TranslateModule.forChild({ - loader: { - provide: TranslateLoader, - useFactory: HttpLoaderFactory, - deps: [HttpClient], - }, - }), + TranslateModule, ], }) export class HomeModule { } diff --git a/console/src/app/pages/iam/iam-members/iam-members.component.html b/console/src/app/pages/iam/iam-members/iam-members.component.html index a2ee239ce9..6be283c682 100644 --- a/console/src/app/pages/iam/iam-members/iam-members.component.html +++ b/console/src/app/pages/iam/iam-members/iam-members.component.html @@ -1,96 +1,105 @@
-
-

{{ 'IAM.MEMBER.TITLE' | translate }}

-

{{ 'IAM.MEMBER.DESCRIPTION' | translate }}

+ - -
-
- - {{'ORG_DETAIL.TABLE.TOTAL' | translate}} - {{dataSource?.membersSubject.value.length}} - - - {{'ORG_DETAIL.TABLE.SELECTION' | translate}} - {{selection?.selected?.length}} - +
+
+

{{ 'IAM.MEMBER.TITLE' | translate }}

+

{{ 'IAM.MEMBER.DESCRIPTION' | translate }}

- - - - - - - add{{ 'ACTIONS.NEW' | translate }} - - -
-
-
- +
+
+ + {{'ORG_DETAIL.TABLE.TOTAL' | translate}} + {{dataSource?.membersSubject.value.length}} + + + {{'ORG_DETAIL.TABLE.SELECTION' | translate}} + {{selection?.selected?.length}} + +
+ + + + + + + add{{ 'ACTIONS.NEW' | translate }} + +
- - - - - - - - - +
+
+ +
+
- - - - - - {{ 'PROJECT.MEMBER.FIRSTNAME' | translate }} - {{member.firstName}}
+ + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - -
+ + + + + + {{ 'PROJECT.MEMBER.LASTNAME' | translate }} - {{member.lastName}} {{ 'PROJECT.MEMBER.FIRSTNAME' | translate }} + {{member.firstName}} {{ 'PROJECT.MEMBER.USERNAME' | translate }} - {{member.userName}} {{ 'PROJECT.MEMBER.LASTNAME' | translate }} + {{member.lastName}} {{ 'PROJECT.MEMBER.EMAIL' | translate }} - {{member.email}} - {{ 'PROJECT.MEMBER.USERNAME' | translate }} + {{member.userName}} {{ 'PROJECT.MEMBER.ROLES' | translate }} - - {{ 'ROLES.'+role | translate }} - {{ 'PROJECT.MEMBER.EMAIL' | translate }} + {{member.email}} +
+ + {{ 'PROJECT.MEMBER.ROLES' | translate }} + + + {{ 'ROLES.'+role | translate }} + + - - + + + + + + + +
\ No newline at end of file diff --git a/console/src/app/pages/iam/iam-members/iam-members.component.scss b/console/src/app/pages/iam/iam-members/iam-members.component.scss index b66a6f7b32..281b9526ea 100644 --- a/console/src/app/pages/iam/iam-members/iam-members.component.scss +++ b/console/src/app/pages/iam/iam-members/iam-members.component.scss @@ -1,26 +1,43 @@ .container { + display: flex; padding-bottom: 3rem; - .head { + .left { + width: 100px; display: flex; - align-items: center; - border-bottom: 1px solid #ffffff20; - margin-bottom: 2rem; - flex-wrap: wrap; - + padding: 1rem; + justify-content: center; + a { - display: block; + margin-top: .2rem; } - - h1 { - font-size: 1.2rem; - } - - .desc { - width: 100%; - display: block; - font-size: .9rem; - color: #8795a1; + } + + .right { + flex: 1; + padding-top: 1rem; + + .head { + display: flex; + align-items: center; + border-bottom: 1px solid #ffffff20; + margin-bottom: 2rem; + flex-wrap: wrap; + + a { + display: block; + } + + h1 { + font-size: 1.2rem; + } + + .desc { + width: 100%; + display: block; + font-size: .9rem; + color: #8795a1; + } } } } diff --git a/console/src/app/pages/orgs/org-create/org-create.component.ts b/console/src/app/pages/orgs/org-create/org-create.component.ts index c226c91baf..f60c8ede62 100644 --- a/console/src/app/pages/orgs/org-create/org-create.component.ts +++ b/console/src/app/pages/orgs/org-create/org-create.component.ts @@ -3,14 +3,13 @@ import { Location } from '@angular/common'; import { Component } from '@angular/core'; import { AbstractControl, FormBuilder, FormGroup, Validators } from '@angular/forms'; import { Router } from '@angular/router'; +import { lowerCaseValidator, numberValidator, symbolValidator, upperCaseValidator } from 'src/app/pages/validators'; import { CreateOrgRequest, CreateUserRequest, Gender, OrgSetUpResponse } from 'src/app/proto/generated/admin_pb'; import { PasswordComplexityPolicy } from 'src/app/proto/generated/auth_pb'; import { AdminService } from 'src/app/services/admin.service'; import { AuthUserService } from 'src/app/services/auth-user.service'; import { ToastService } from 'src/app/services/toast.service'; -import { lowerCaseValidator, numberValidator, symbolValidator, upperCaseValidator } from '../../user-detail/validators'; - function passwordConfirmValidator(c: AbstractControl): any { if (!c.parent || !c) { return; @@ -64,7 +63,7 @@ export class OrgCreateComponent { private fb: FormBuilder, private authUserService: AuthUserService, ) { - const validators: Validators[] = [Validators.required]; + const validators: Validators[] = []; this.orgForm = this.fb.group({ name: ['', [Validators.required]], diff --git a/console/src/app/pages/orgs/org-create/org-create.module.ts b/console/src/app/pages/orgs/org-create/org-create.module.ts index 5588b631a3..72c0a89e2d 100644 --- a/console/src/app/pages/orgs/org-create/org-create.module.ts +++ b/console/src/app/pages/orgs/org-create/org-create.module.ts @@ -1,5 +1,4 @@ import { CommonModule } from '@angular/common'; -import { HttpClient } from '@angular/common/http'; import { NgModule } from '@angular/core'; import { FormsModule, ReactiveFormsModule } from '@angular/forms'; import { MatButtonModule } from '@angular/material/button'; @@ -7,8 +6,7 @@ import { MatFormFieldModule } from '@angular/material/form-field'; import { MatIconModule } from '@angular/material/icon'; import { MatInputModule } from '@angular/material/input'; import { MatSelectModule } from '@angular/material/select'; -import { TranslateLoader, TranslateModule } from '@ngx-translate/core'; -import { HttpLoaderFactory } from 'src/app/app.module'; +import { TranslateModule } from '@ngx-translate/core'; import { PipesModule } from 'src/app/pipes/pipes.module'; import { OrgCreateRoutingModule } from './org-create-routing.module'; @@ -27,13 +25,7 @@ import { OrgCreateComponent } from './org-create.component'; MatIconModule, MatSelectModule, PipesModule, - TranslateModule.forChild({ - loader: { - provide: TranslateLoader, - useFactory: HttpLoaderFactory, - deps: [HttpClient], - }, - }), + TranslateModule, ], }) export class OrgCreateModule { } diff --git a/console/src/app/pages/orgs/org-detail/add-domain-dialog/add-domain-dialog.component.html b/console/src/app/pages/orgs/org-detail/add-domain-dialog/add-domain-dialog.component.html new file mode 100644 index 0000000000..81f2a09424 --- /dev/null +++ b/console/src/app/pages/orgs/org-detail/add-domain-dialog/add-domain-dialog.component.html @@ -0,0 +1,18 @@ +{{'ORG.DOMAINS.ADD.TITLE' | translate}} +
+

{{'ORG.DOMAINS.ADD.DESCRIPTION' | translate}}

+ + + Code + + +
+
+ + + +
\ No newline at end of file diff --git a/console/src/app/pages/orgs/org-detail/add-domain-dialog/add-domain-dialog.component.scss b/console/src/app/pages/orgs/org-detail/add-domain-dialog/add-domain-dialog.component.scss new file mode 100644 index 0000000000..aed5f6d6af --- /dev/null +++ b/console/src/app/pages/orgs/org-detail/add-domain-dialog/add-domain-dialog.component.scss @@ -0,0 +1,26 @@ +.title { + font-size: 1.2rem; + margin-top: 0; +} + +.desc { + color: #8795a1; + font-size: .9rem; +} + +mat-form-field { + width: 100%; +} + +.action { + display: flex; + justify-content: flex-end; + + .ok-button { + margin-left: 0.5rem; + } + + button { + border-radius: 0.5rem; + } +} \ No newline at end of file diff --git a/console/src/app/pages/orgs/org-detail/add-domain-dialog/add-domain-dialog.component.spec.ts b/console/src/app/pages/orgs/org-detail/add-domain-dialog/add-domain-dialog.component.spec.ts new file mode 100644 index 0000000000..356b48de1b --- /dev/null +++ b/console/src/app/pages/orgs/org-detail/add-domain-dialog/add-domain-dialog.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { AddDomainDialogComponent } from './add-domain-dialog.component'; + +describe('WarnDialogComponent', () => { + let component: AddDomainDialogComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [AddDomainDialogComponent], + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(AddDomainDialogComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/console/src/app/pages/orgs/org-detail/add-domain-dialog/add-domain-dialog.component.ts b/console/src/app/pages/orgs/org-detail/add-domain-dialog/add-domain-dialog.component.ts new file mode 100644 index 0000000000..de58701159 --- /dev/null +++ b/console/src/app/pages/orgs/org-detail/add-domain-dialog/add-domain-dialog.component.ts @@ -0,0 +1,26 @@ +import { Component, Inject, OnInit } from '@angular/core'; +import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; + +@Component({ + selector: 'app-add-domain-dialog', + templateUrl: './add-domain-dialog.component.html', + styleUrls: ['./add-domain-dialog.component.scss'], +}) +export class AddDomainDialogComponent implements OnInit { + public newdomain: string = ''; + constructor( + public dialogRef: MatDialogRef, + @Inject(MAT_DIALOG_DATA) public data: any, + ) { } + + ngOnInit(): void { + } + + public closeDialog(): void { + this.dialogRef.close(false); + } + + public closeDialogWithSuccess(): void { + this.dialogRef.close(this.newdomain); + } +} diff --git a/console/src/app/pages/orgs/org-detail/add-domain-dialog/add-domain-dialog.module.ts b/console/src/app/pages/orgs/org-detail/add-domain-dialog/add-domain-dialog.module.ts new file mode 100644 index 0000000000..4f61ea514b --- /dev/null +++ b/console/src/app/pages/orgs/org-detail/add-domain-dialog/add-domain-dialog.module.ts @@ -0,0 +1,22 @@ +import { CommonModule } from '@angular/common'; +import { NgModule } from '@angular/core'; +import { FormsModule } from '@angular/forms'; +import { MatButtonModule } from '@angular/material/button'; +import { MatFormFieldModule } from '@angular/material/form-field'; +import { MatInputModule } from '@angular/material/input'; +import { TranslateModule } from '@ngx-translate/core'; + +import { AddDomainDialogComponent } from './add-domain-dialog.component'; + +@NgModule({ + declarations: [AddDomainDialogComponent], + imports: [ + CommonModule, + TranslateModule, + MatButtonModule, + MatFormFieldModule, + MatInputModule, + FormsModule, + ], +}) +export class AddDomainDialogModule { } diff --git a/console/src/app/pages/orgs/org-detail/org-detail.component.html b/console/src/app/pages/orgs/org-detail/org-detail.component.html index 70cfef1d4e..b084745f95 100644 --- a/console/src/app/pages/orgs/org-detail/org-detail.component.html +++ b/console/src/app/pages/orgs/org-detail/org-detail.component.html @@ -15,16 +15,8 @@

{{'ORG.PAGES.ORGDOMAIN_VERIFICATION' | translate}}

-
- - new domain - - - - -
+ diff --git a/console/src/app/pages/orgs/org-detail/org-detail.component.scss b/console/src/app/pages/orgs/org-detail/org-detail.component.scss index 91d55e19d3..f9672efb31 100644 --- a/console/src/app/pages/orgs/org-detail/org-detail.component.scss +++ b/console/src/app/pages/orgs/org-detail/org-detail.component.scss @@ -81,16 +81,6 @@ h1 { color: #818a8a; } -.new-row { - display: flex; - flex-wrap: wrap; - align-items: center; - - mat-form-field { - flex: 1; - } -} - .side { .details { margin-bottom: 1rem; diff --git a/console/src/app/pages/orgs/org-detail/org-detail.component.ts b/console/src/app/pages/orgs/org-detail/org-detail.component.ts index 5d1c4d3c03..8af670a8ca 100644 --- a/console/src/app/pages/orgs/org-detail/org-detail.component.ts +++ b/console/src/app/pages/orgs/org-detail/org-detail.component.ts @@ -11,6 +11,8 @@ import { Org, OrgDomainView, OrgMember, OrgMemberSearchResponse, OrgState } from import { OrgService } from 'src/app/services/org.service'; import { ToastService } from 'src/app/services/toast.service'; +import { AddDomainDialogComponent } from './add-domain-dialog/add-domain-dialog.component'; + @Component({ selector: 'app-org-detail', @@ -31,7 +33,6 @@ export class OrgDetailComponent implements OnInit, OnDestroy { public domains: OrgDomainView.AsObject[] = []; public primaryDomain: string = ''; - public newDomain: string = ''; constructor( private dialog: MatDialog, @@ -64,23 +65,32 @@ export class OrgDetailComponent implements OnInit, OnDestroy { public changeState(event: MatButtonToggleChange | any): void { if (event.value === OrgState.ORGSTATE_ACTIVE) { this.orgService.ReactivateMyOrg().then(() => { - this.toast.showInfo('Reactivated Org'); + this.toast.showInfo('ORG.TOAST.REACTIVATED', true); }).catch((error) => { this.toast.showError(error); }); } else if (event.value === OrgState.ORGSTATE_INACTIVE) { this.orgService.DeactivateMyOrg().then(() => { - this.toast.showInfo('Deactivated Org'); + this.toast.showInfo('ORG.TOAST.DEACTIVATED', true); }).catch((error) => { this.toast.showError(error); }); } } - public saveNewOrgDomain(): void { - this.orgService.AddMyOrgDomain(this.newDomain).then(domain => { - this.domains.push(domain.toObject()); - this.newDomain = ''; + public addNewDomain(): void { + const dialogRef = this.dialog.open(AddDomainDialogComponent, { + data: {}, + width: '400px', + }); + + dialogRef.afterClosed().subscribe(resp => { + if (resp) { + this.orgService.AddMyOrgDomain(resp).then(domain => { + this.domains.push(domain.toObject()); + this.toast.showInfo('ORG.TOAST.DOMAINADDED', true); + }); + } }); } @@ -98,7 +108,7 @@ export class OrgDetailComponent implements OnInit, OnDestroy { dialogRef.afterClosed().subscribe(resp => { if (resp) { this.orgService.RemoveMyOrgDomain(domain).then(() => { - this.toast.showInfo('Removed'); + this.toast.showInfo('ORG.TOAST.DOMAINREMOVED', true); const index = this.domains.findIndex(d => d.domain === domain); if (index > -1) { this.domains.splice(index, 1); diff --git a/console/src/app/pages/orgs/org-grid/org-grid.component.html b/console/src/app/pages/orgs/org-grid/org-grid.component.html index 409aa581fa..d736852fb0 100644 --- a/console/src/app/pages/orgs/org-grid/org-grid.component.html +++ b/console/src/app/pages/orgs/org-grid/org-grid.component.html @@ -11,9 +11,11 @@
+

{{'PROJECT.PAGES.PINNED' | translate}}

+
+ *ngFor="let org of selection.selected; index as i" (click)="selectOrg(org, $event)" + [ngClass]="{ active: activeOrg?.id === org?.id }">
{{org.id}} @@ -23,17 +25,31 @@
- +
+
+
+

{{'PROJECT.PAGES.ALL' | translate}}

- - - - - +
+
+ {{org.id}} + + {{ org.name }} + No Name + +
+
+
+
diff --git a/console/src/app/pages/orgs/org-grid/org-grid.component.scss b/console/src/app/pages/orgs/org-grid/org-grid.component.scss index 2e47755ca3..d6f2b0d26e 100644 --- a/console/src/app/pages/orgs/org-grid/org-grid.component.scss +++ b/console/src/app/pages/orgs/org-grid/org-grid.component.scss @@ -35,9 +35,10 @@ h1 { position: relative; z-index: 100; margin: 1rem; - flex-basis: 250px; + flex-basis: 230px; display: flex; text-decoration: none; + overflow: hidden; cursor: pointer; padding-top: 0; padding-right: 0; @@ -45,14 +46,14 @@ h1 { padding-left: 1rem; border-radius: 0.5rem; box-sizing: border-box; - min-height: 166px; + min-height: 130px; * { box-sizing: border-box; } &.active { - border: 2px solid #db4c69; + border: 2px solid #38649d; } .selection-icon { @@ -151,16 +152,28 @@ h1 { } .edit-button { + opacity: 0; + user-select: none; position: absolute; bottom: 0; right: 0; margin: 0; margin-bottom: 0.25rem; + color: #8795a1; + + &:hover { + opacity: 1; + color: white; + } + + &.selected { + opacity: 1; + } } &:hover { - .selection-icon { + .edit-button { opacity: 1; } @@ -180,7 +193,7 @@ h1 { } } - .selection-icon { + .edit-button { opacity: 1; } } @@ -188,13 +201,13 @@ h1 { .add-org-button { z-index: 100; - flex-basis: 250px; + flex-basis: 230px; cursor: pointer; display: flex; justify-content: center; align-items: center; flex-direction: column; - min-height: 166px; + min-height: 130px; border-radius: 0.5rem; margin: 1rem; box-sizing: border-box; @@ -220,4 +233,11 @@ h1 { } } } -} \ No newline at end of file +} + +.n-items { + padding: 0 1rem; + font-size: .8rem; + color: #8795a1; + flex-basis: 100%; +} diff --git a/console/src/app/pages/orgs/org-grid/org-grid.component.ts b/console/src/app/pages/orgs/org-grid/org-grid.component.ts index ced36cc6ca..8ca1e3d396 100644 --- a/console/src/app/pages/orgs/org-grid/org-grid.component.ts +++ b/console/src/app/pages/orgs/org-grid/org-grid.component.ts @@ -1,6 +1,8 @@ import { SelectionModel } from '@angular/cdk/collections'; import { Component } from '@angular/core'; import { Router } from '@angular/router'; +import { Observable, of } from 'rxjs'; +import { switchMap, take } from 'rxjs/operators'; import { Org } from 'src/app/proto/generated/auth_pb'; import { AuthUserService } from 'src/app/services/auth-user.service'; import { AuthService } from 'src/app/services/auth.service'; @@ -17,23 +19,87 @@ export class OrgGridComponent { public selection: SelectionModel = new SelectionModel(true, []); public selectedIndex: number = -1; + public loading: boolean = false; + + public notPinned: Array = []; + constructor( public authService: AuthService, private userService: AuthUserService, private toast: ToastService, private router: Router, ) { + this.loading = true; this.getData(10, 0); this.authService.GetActiveOrg().then(org => this.activeOrg = org); + + this.selection.changed.subscribe(selection => { + this.setPrefixedItem('pinned-orgs', JSON.stringify( + this.selection.selected.map(item => item.id), + )).pipe(take(1)).subscribe(() => { + selection.added.forEach(element => { + const index = this.notPinned.findIndex(item => item.id === element.id); + this.notPinned.splice(index, 1); + }); + + this.notPinned.push(...selection.removed); + }); + }); + } + + public reorganizeItems(): void { + this.getPrefixedItem('pinned-orgs').pipe(take(1)).subscribe(storageEntry => { + if (storageEntry) { + const array: string[] = JSON.parse(storageEntry); + const toSelect: Org.AsObject[] = this.orgList.filter((item, index) => { + if (array.includes(item.id)) { + // this.notPinned.splice(index, 1); + return true; + } + }); + this.selection.select(...toSelect); + + const toNotPinned: Org.AsObject[] = this.orgList.filter((item, index) => { + if (!array.includes(item.id)) { + return true; + } + }); + this.notPinned = toNotPinned; + } + }); + } + + private getPrefixedItem(key: string): Observable { + return this.authService.user.pipe( + take(1), + switchMap(user => { + return of(localStorage.getItem(`${user.id}:${key}`)); + }), + ); + } + + private setPrefixedItem(key: string, value: any): Observable { + return this.authService.user.pipe( + take(1), + switchMap(user => { + return of(localStorage.setItem(`${user.id}:${key}`, value)); + }), + ); } private getData(limit: number, offset: number): void { this.userService.SearchMyProjectOrgs(limit, offset).then(res => { this.orgList = res.toObject().resultList; + console.log(this.orgList); + + this.notPinned = Object.assign([], this.orgList); + this.reorganizeItems(); + this.loading = false; }).catch(error => { console.error(error); this.toast.showError(error); + this.loading = false; }); } diff --git a/console/src/app/pages/orgs/orgs.module.ts b/console/src/app/pages/orgs/orgs.module.ts index 6a411d630b..185e8892de 100644 --- a/console/src/app/pages/orgs/orgs.module.ts +++ b/console/src/app/pages/orgs/orgs.module.ts @@ -1,5 +1,4 @@ import { CommonModule } from '@angular/common'; -import { HttpClient } from '@angular/common/http'; import { NgModule, NO_ERRORS_SCHEMA } from '@angular/core'; import { FormsModule, ReactiveFormsModule } from '@angular/forms'; import { MatButtonModule } from '@angular/material/button'; @@ -11,8 +10,7 @@ import { MatInputModule } from '@angular/material/input'; import { MatMenuModule } from '@angular/material/menu'; import { MatTabsModule } from '@angular/material/tabs'; import { MatTooltipModule } from '@angular/material/tooltip'; -import { TranslateLoader, TranslateModule } from '@ngx-translate/core'; -import { HttpLoaderFactory } from 'src/app/app.module'; +import { TranslateModule } from '@ngx-translate/core'; import { HasRoleModule } from 'src/app/directives/has-role/has-role.module'; import { CardModule } from 'src/app/modules/card/card.module'; import { MetaLayoutModule } from 'src/app/modules/meta-layout/meta-layout.module'; @@ -20,6 +18,7 @@ import { WarnDialogModule } from 'src/app/modules/warn-dialog/warn-dialog.module import { ChangesModule } from '../../modules/changes/changes.module'; import { OrgContributorsModule } from './org-contributors/org-contributors.module'; +import { AddDomainDialogModule } from './org-detail/add-domain-dialog/add-domain-dialog.module'; import { OrgDetailComponent } from './org-detail/org-detail.component'; import { OrgGridComponent } from './org-grid/org-grid.component'; import { OrgsRoutingModule } from './orgs-routing.module'; @@ -48,13 +47,8 @@ import { PolicyGridComponent } from './policy-grid/policy-grid.component'; WarnDialogModule, MatMenuModule, ChangesModule, - TranslateModule.forChild({ - loader: { - provide: TranslateLoader, - useFactory: HttpLoaderFactory, - deps: [HttpClient], - }, - }), + AddDomainDialogModule, + TranslateModule, ], exports: [], schemas: [NO_ERRORS_SCHEMA], diff --git a/console/src/app/pages/orgs/password-policy/password-policy.component.html b/console/src/app/pages/orgs/password-policy/password-policy.component.html index 2b293f79e8..333caa0645 100644 --- a/console/src/app/pages/orgs/password-policy/password-policy.component.html +++ b/console/src/app/pages/orgs/password-policy/password-policy.component.html @@ -10,6 +10,14 @@

{{ titletrans | translate }}

{{ desctrans | translate }}

+ + + + +
diff --git a/console/src/app/pages/orgs/password-policy/password-policy.component.scss b/console/src/app/pages/orgs/password-policy/password-policy.component.scss index 12d5cbedde..72cbb79af4 100644 --- a/console/src/app/pages/orgs/password-policy/password-policy.component.scss +++ b/console/src/app/pages/orgs/password-policy/password-policy.component.scss @@ -29,6 +29,10 @@ h1 { font-size: 1.2rem; } + + .fill-space { + flex: 1; + } .desc { width: 100%; @@ -36,6 +40,11 @@ font-size: .9rem; color: #8795a1; } + + button { + border-radius: .5rem; + margin-bottom: .5rem; + } } .content { diff --git a/console/src/app/pages/orgs/password-policy/password-policy.component.ts b/console/src/app/pages/orgs/password-policy/password-policy.component.ts index 6ac53d52e2..4e8cf2d12d 100644 --- a/console/src/app/pages/orgs/password-policy/password-policy.component.ts +++ b/console/src/app/pages/orgs/password-policy/password-policy.component.ts @@ -3,12 +3,6 @@ import { FormGroup } from '@angular/forms'; import { ActivatedRoute, Router } from '@angular/router'; import { BehaviorSubject, Subscription } from 'rxjs'; import { switchMap } from 'rxjs/operators'; -import { - OrgIamPolicy, - PasswordAgePolicy, - PasswordComplexityPolicy, - PasswordLockoutPolicy, -} from 'src/app/proto/generated/management_pb'; import { AdminService } from 'src/app/services/admin.service'; import { OrgService } from 'src/app/services/org.service'; import { StorageService } from 'src/app/services/storage.service'; @@ -37,11 +31,7 @@ export class PasswordPolicyComponent implements OnInit, OnDestroy { componentAction: PolicyComponentAction = PolicyComponentAction.CREATE; - policyData!: PasswordLockoutPolicy.AsObject | - PasswordAgePolicy.AsObject | - PasswordComplexityPolicy.AsObject | - OrgIamPolicy.AsObject; - policyType: PolicyComponentType = PolicyComponentType.COMPLEXITY; + public policyType: PolicyComponentType = PolicyComponentType.COMPLEXITY; public PolicyComponentType: any = PolicyComponentType; public PolicyComponentAction: any = PolicyComponentAction; @@ -159,6 +149,32 @@ export class PasswordPolicyComponent implements OnInit, OnDestroy { } } + public deletePolicy(): void { + switch (this.policyType) { + case PolicyComponentType.LOCKOUT: + this.orgService.DeletePasswordLockoutPolicy(this.lockoutData.id).then(() => { + this.toast.showInfo('Successfully deleted'); + }).catch(error => { + this.toast.showError(error); + }); + break; + case PolicyComponentType.AGE: + this.orgService.DeletePasswordAgePolicy(this.ageData.id).then(() => { + this.toast.showInfo('Successfully deleted'); + }).catch(error => { + this.toast.showError(error); + }); + break; + case PolicyComponentType.COMPLEXITY: + this.orgService.DeletePasswordComplexityPolicy(this.complexityData.id).then(() => { + this.toast.showInfo('Successfully deleted'); + }).catch(error => { + this.toast.showError(error); + }); + break; + } + } + public incrementLength(): void { if (this.complexityData?.minLength !== undefined) { this.complexityData.minLength++; diff --git a/console/src/app/pages/orgs/password-policy/password-policy.module.ts b/console/src/app/pages/orgs/password-policy/password-policy.module.ts index ece815d153..523750577a 100644 --- a/console/src/app/pages/orgs/password-policy/password-policy.module.ts +++ b/console/src/app/pages/orgs/password-policy/password-policy.module.ts @@ -1,5 +1,4 @@ import { CommonModule } from '@angular/common'; -import { HttpClient } from '@angular/common/http'; import { NgModule } from '@angular/core'; import { FormsModule } from '@angular/forms'; import { MatButtonModule } from '@angular/material/button'; @@ -7,8 +6,9 @@ import { MatFormFieldModule } from '@angular/material/form-field'; import { MatIconModule } from '@angular/material/icon'; import { MatInputModule } from '@angular/material/input'; import { MatSlideToggleModule } from '@angular/material/slide-toggle'; -import { TranslateLoader, TranslateModule } from '@ngx-translate/core'; -import { HttpLoaderFactory } from 'src/app/app.module'; +import { MatTooltipModule } from '@angular/material/tooltip'; +import { TranslateModule } from '@ngx-translate/core'; +import { HasRoleModule } from 'src/app/directives/has-role/has-role.module'; import { PasswordPolicyRoutingModule } from './password-policy-routing.module'; import { PasswordPolicyComponent } from './password-policy.component'; @@ -24,13 +24,9 @@ import { PasswordPolicyComponent } from './password-policy.component'; MatButtonModule, MatSlideToggleModule, MatIconModule, - TranslateModule.forChild({ - loader: { - provide: TranslateLoader, - useFactory: HttpLoaderFactory, - deps: [HttpClient], - }, - }), + HasRoleModule, + MatTooltipModule, + TranslateModule, ], }) export class PasswordPolicyModule { } diff --git a/console/src/app/pages/orgs/policy-grid/policy-grid.component.html b/console/src/app/pages/orgs/policy-grid/policy-grid.component.html index fa586e1362..d7e68b3436 100644 --- a/console/src/app/pages/orgs/policy-grid/policy-grid.component.html +++ b/console/src/app/pages/orgs/policy-grid/policy-grid.component.html @@ -48,10 +48,6 @@ -

@@ -107,12 +103,6 @@ - - -

diff --git a/console/src/app/pages/orgs/policy-grid/policy-grid.component.ts b/console/src/app/pages/orgs/policy-grid/policy-grid.component.ts index f2c85b769f..3032569349 100644 --- a/console/src/app/pages/orgs/policy-grid/policy-grid.component.ts +++ b/console/src/app/pages/orgs/policy-grid/policy-grid.component.ts @@ -47,30 +47,4 @@ export class PolicyGridComponent implements OnInit { this.orgService.GetMyOrgIamPolicy().then(data => this.iamPolicy = data.toObject()) .catch(error => { }); } - - public deletePolicy(type: PolicyComponentType): void { - switch (type) { - case PolicyComponentType.LOCKOUT: - this.orgService.DeletePasswordLockoutPolicy(this.lockoutPolicy.id).then(() => { - this.toast.showInfo('Successfully deleted'); - }).catch(error => { - this.toast.showError(error); - }); - break; - case PolicyComponentType.AGE: - this.orgService.DeletePasswordAgePolicy(this.agePolicy.id).then(() => { - this.toast.showInfo('Successfully deleted'); - }).catch(error => { - this.toast.showError(error); - }); - break; - case PolicyComponentType.COMPLEXITY: - this.orgService.DeletePasswordLockoutPolicy(this.lockoutPolicy.id).then(() => { - this.toast.showInfo('Successfully deleted'); - }).catch(error => { - this.toast.showError(error); - }); - break; - } - } } diff --git a/console/src/app/pages/owned-projects/project-grant-detail/project-grant-detail.component.html b/console/src/app/pages/owned-projects/project-grant-detail/project-grant-detail.component.html deleted file mode 100644 index 93c9498615..0000000000 --- a/console/src/app/pages/owned-projects/project-grant-detail/project-grant-detail.component.html +++ /dev/null @@ -1,19 +0,0 @@ -

-
- -
-
-

{{ 'PROJECT.GRANT.DETAIL.TITLE' | translate }}

-

{{ 'PROJECT.GRANT.DETAIL.DESC' | translate }}

-
- - - -
-
-
\ No newline at end of file diff --git a/console/src/app/pages/owned-projects/project-grant-detail/project-grant-detail.component.scss b/console/src/app/pages/owned-projects/project-grant-detail/project-grant-detail.component.scss deleted file mode 100644 index 17fa11bf76..0000000000 --- a/console/src/app/pages/owned-projects/project-grant-detail/project-grant-detail.component.scss +++ /dev/null @@ -1,43 +0,0 @@ -.container { - display: flex; - padding-bottom: 3rem; - - .left { - width: 100px; - display: flex; - padding: 1rem; - justify-content: center; - - a { - margin-top: .2rem; - } - } - - .right { - flex: 1; - padding-top: 1rem; - - .head { - display: flex; - align-items: center; - border-bottom: 1px solid #ffffff20; - margin-bottom: 2rem; - flex-wrap: wrap; - - a { - display: block; - } - - h1 { - font-size: 1.2rem; - } - - .desc { - width: 100%; - display: block; - font-size: .9rem; - color: #8795a1; - } - } - } -} diff --git a/console/src/app/pages/owned-projects/project-grant-detail/project-grant-detail.component.ts b/console/src/app/pages/owned-projects/project-grant-detail/project-grant-detail.component.ts deleted file mode 100644 index e14498a064..0000000000 --- a/console/src/app/pages/owned-projects/project-grant-detail/project-grant-detail.component.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { Component } from '@angular/core'; -import { ActivatedRoute } from '@angular/router'; -import { ProjectType } from 'src/app/proto/generated/management_pb'; -import { OrgService } from 'src/app/services/org.service'; - -@Component({ - selector: 'app-project-grant-detail', - templateUrl: './project-grant-detail.component.html', - styleUrls: ['./project-grant-detail.component.scss'], -}) -export class ProjectGrantDetailComponent { - public projectid: string = ''; - public grantid: string = ''; - - public projectType: ProjectType = ProjectType.PROJECTTYPE_OWNED; - public disabled: boolean = false; - - public isZitadel: boolean = false; - - constructor( - private orgService: OrgService, - private route: ActivatedRoute) { - this.route.params.subscribe(params => { - this.projectid = params.projectid; - this.grantid = params.grantid; - - this.orgService.GetIam().then(iam => { - this.isZitadel = iam.toObject().iamProjectId === this.projectid; - }); - }); - } -} diff --git a/console/src/app/pages/apps/app-create/app-create.component.html b/console/src/app/pages/projects/apps/app-create/app-create.component.html similarity index 100% rename from console/src/app/pages/apps/app-create/app-create.component.html rename to console/src/app/pages/projects/apps/app-create/app-create.component.html diff --git a/console/src/app/pages/apps/app-create/app-create.component.scss b/console/src/app/pages/projects/apps/app-create/app-create.component.scss similarity index 100% rename from console/src/app/pages/apps/app-create/app-create.component.scss rename to console/src/app/pages/projects/apps/app-create/app-create.component.scss diff --git a/console/src/app/pages/apps/app-create/app-create.component.spec.ts b/console/src/app/pages/projects/apps/app-create/app-create.component.spec.ts similarity index 100% rename from console/src/app/pages/apps/app-create/app-create.component.spec.ts rename to console/src/app/pages/projects/apps/app-create/app-create.component.spec.ts diff --git a/console/src/app/pages/apps/app-create/app-create.component.ts b/console/src/app/pages/projects/apps/app-create/app-create.component.ts similarity index 100% rename from console/src/app/pages/apps/app-create/app-create.component.ts rename to console/src/app/pages/projects/apps/app-create/app-create.component.ts diff --git a/console/src/app/pages/apps/app-detail/app-detail.component.html b/console/src/app/pages/projects/apps/app-detail/app-detail.component.html similarity index 97% rename from console/src/app/pages/apps/app-detail/app-detail.component.html rename to console/src/app/pages/projects/apps/app-detail/app-detail.component.html index 9cefd8ef04..a2cbf3f16a 100644 --- a/console/src/app/pages/apps/app-detail/app-detail.component.html +++ b/console/src/app/pages/projects/apps/app-detail/app-detail.component.html @@ -1,6 +1,6 @@
- + arrow_back

{{ 'APP.PAGES.TITLE' | translate }} {{app?.name}}

@@ -16,11 +16,9 @@
- {{'APP.PAGES.DETAIL.STATE.'+AppState.APPSTATE_INACTIVE | translate}} - {{'APP.PAGES.DETAIL.STATE.'+AppState.APPSTATE_ACTIVE | translate}} diff --git a/console/src/app/pages/apps/app-detail/app-detail.component.scss b/console/src/app/pages/projects/apps/app-detail/app-detail.component.scss similarity index 100% rename from console/src/app/pages/apps/app-detail/app-detail.component.scss rename to console/src/app/pages/projects/apps/app-detail/app-detail.component.scss diff --git a/console/src/app/pages/apps/app-detail/app-detail.component.spec.ts b/console/src/app/pages/projects/apps/app-detail/app-detail.component.spec.ts similarity index 100% rename from console/src/app/pages/apps/app-detail/app-detail.component.spec.ts rename to console/src/app/pages/projects/apps/app-detail/app-detail.component.spec.ts diff --git a/console/src/app/pages/apps/app-detail/app-detail.component.ts b/console/src/app/pages/projects/apps/app-detail/app-detail.component.ts similarity index 100% rename from console/src/app/pages/apps/app-detail/app-detail.component.ts rename to console/src/app/pages/projects/apps/app-detail/app-detail.component.ts diff --git a/console/src/app/pages/apps/app-secret-dialog/app-secret-dialog.component.html b/console/src/app/pages/projects/apps/app-secret-dialog/app-secret-dialog.component.html similarity index 100% rename from console/src/app/pages/apps/app-secret-dialog/app-secret-dialog.component.html rename to console/src/app/pages/projects/apps/app-secret-dialog/app-secret-dialog.component.html diff --git a/console/src/app/pages/apps/app-secret-dialog/app-secret-dialog.component.scss b/console/src/app/pages/projects/apps/app-secret-dialog/app-secret-dialog.component.scss similarity index 100% rename from console/src/app/pages/apps/app-secret-dialog/app-secret-dialog.component.scss rename to console/src/app/pages/projects/apps/app-secret-dialog/app-secret-dialog.component.scss diff --git a/console/src/app/pages/apps/app-secret-dialog/app-secret-dialog.component.spec.ts b/console/src/app/pages/projects/apps/app-secret-dialog/app-secret-dialog.component.spec.ts similarity index 100% rename from console/src/app/pages/apps/app-secret-dialog/app-secret-dialog.component.spec.ts rename to console/src/app/pages/projects/apps/app-secret-dialog/app-secret-dialog.component.spec.ts diff --git a/console/src/app/pages/apps/app-secret-dialog/app-secret-dialog.component.ts b/console/src/app/pages/projects/apps/app-secret-dialog/app-secret-dialog.component.ts similarity index 100% rename from console/src/app/pages/apps/app-secret-dialog/app-secret-dialog.component.ts rename to console/src/app/pages/projects/apps/app-secret-dialog/app-secret-dialog.component.ts diff --git a/console/src/app/pages/apps/apps-routing.module.ts b/console/src/app/pages/projects/apps/apps-routing.module.ts similarity index 100% rename from console/src/app/pages/apps/apps-routing.module.ts rename to console/src/app/pages/projects/apps/apps-routing.module.ts diff --git a/console/src/app/pages/apps/apps.module.ts b/console/src/app/pages/projects/apps/apps.module.ts similarity index 83% rename from console/src/app/pages/apps/apps.module.ts rename to console/src/app/pages/projects/apps/apps.module.ts index 0b67c08c5e..6b240f0c8c 100644 --- a/console/src/app/pages/apps/apps.module.ts +++ b/console/src/app/pages/projects/apps/apps.module.ts @@ -1,5 +1,4 @@ import { CommonModule } from '@angular/common'; -import { HttpClient } from '@angular/common/http'; import { CUSTOM_ELEMENTS_SCHEMA, NgModule, NO_ERRORS_SCHEMA } from '@angular/core'; import { FormsModule, ReactiveFormsModule } from '@angular/forms'; import { MatButtonModule } from '@angular/material/button'; @@ -15,8 +14,7 @@ import { MatProgressBarModule } from '@angular/material/progress-bar'; import { MatProgressSpinnerModule } from '@angular/material/progress-spinner'; import { MatSelectModule } from '@angular/material/select'; import { MatTooltipModule } from '@angular/material/tooltip'; -import { TranslateLoader, TranslateModule } from '@ngx-translate/core'; -import { HttpLoaderFactory } from 'src/app/app.module'; +import { TranslateModule } from '@ngx-translate/core'; import { HasRoleModule } from 'src/app/directives/has-role/has-role.module'; import { CardModule } from 'src/app/modules/card/card.module'; @@ -52,16 +50,7 @@ import { AppsRoutingModule } from './apps-routing.module'; MatCheckboxModule, CardModule, MatTooltipModule, - TranslateModule.forChild({ - loader: { - provide: TranslateLoader, - useFactory: HttpLoaderFactory, - deps: [HttpClient], - }, - }), - ], - entryComponents: [ - AppSecretDialogComponent, + TranslateModule, ], exports: [TranslateModule], schemas: [CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA], diff --git a/console/src/app/pages/granted-projects/granted-project-detail/granted-project-detail.component.html b/console/src/app/pages/projects/granted-projects/granted-project-detail/granted-project-detail.component.html similarity index 100% rename from console/src/app/pages/granted-projects/granted-project-detail/granted-project-detail.component.html rename to console/src/app/pages/projects/granted-projects/granted-project-detail/granted-project-detail.component.html diff --git a/console/src/app/pages/granted-projects/granted-project-detail/granted-project-detail.component.scss b/console/src/app/pages/projects/granted-projects/granted-project-detail/granted-project-detail.component.scss similarity index 100% rename from console/src/app/pages/granted-projects/granted-project-detail/granted-project-detail.component.scss rename to console/src/app/pages/projects/granted-projects/granted-project-detail/granted-project-detail.component.scss diff --git a/console/src/app/pages/granted-projects/granted-project-detail/granted-project-detail.component.spec.ts b/console/src/app/pages/projects/granted-projects/granted-project-detail/granted-project-detail.component.spec.ts similarity index 100% rename from console/src/app/pages/granted-projects/granted-project-detail/granted-project-detail.component.spec.ts rename to console/src/app/pages/projects/granted-projects/granted-project-detail/granted-project-detail.component.spec.ts diff --git a/console/src/app/pages/granted-projects/granted-project-detail/granted-project-detail.component.ts b/console/src/app/pages/projects/granted-projects/granted-project-detail/granted-project-detail.component.ts similarity index 100% rename from console/src/app/pages/granted-projects/granted-project-detail/granted-project-detail.component.ts rename to console/src/app/pages/projects/granted-projects/granted-project-detail/granted-project-detail.component.ts diff --git a/console/src/app/pages/granted-projects/granted-project-grid/granted-project-grid.component.html b/console/src/app/pages/projects/granted-projects/granted-project-grid/granted-project-grid.component.html similarity index 100% rename from console/src/app/pages/granted-projects/granted-project-grid/granted-project-grid.component.html rename to console/src/app/pages/projects/granted-projects/granted-project-grid/granted-project-grid.component.html diff --git a/console/src/app/pages/granted-projects/granted-project-grid/granted-project-grid.component.scss b/console/src/app/pages/projects/granted-projects/granted-project-grid/granted-project-grid.component.scss similarity index 100% rename from console/src/app/pages/granted-projects/granted-project-grid/granted-project-grid.component.scss rename to console/src/app/pages/projects/granted-projects/granted-project-grid/granted-project-grid.component.scss diff --git a/console/src/app/pages/granted-projects/granted-project-grid/granted-project-grid.component.spec.ts b/console/src/app/pages/projects/granted-projects/granted-project-grid/granted-project-grid.component.spec.ts similarity index 100% rename from console/src/app/pages/granted-projects/granted-project-grid/granted-project-grid.component.spec.ts rename to console/src/app/pages/projects/granted-projects/granted-project-grid/granted-project-grid.component.spec.ts diff --git a/console/src/app/pages/granted-projects/granted-project-grid/granted-project-grid.component.ts b/console/src/app/pages/projects/granted-projects/granted-project-grid/granted-project-grid.component.ts similarity index 100% rename from console/src/app/pages/granted-projects/granted-project-grid/granted-project-grid.component.ts rename to console/src/app/pages/projects/granted-projects/granted-project-grid/granted-project-grid.component.ts diff --git a/console/src/app/pages/granted-projects/granted-project-list/granted-project-list.component.html b/console/src/app/pages/projects/granted-projects/granted-project-list/granted-project-list.component.html similarity index 100% rename from console/src/app/pages/granted-projects/granted-project-list/granted-project-list.component.html rename to console/src/app/pages/projects/granted-projects/granted-project-list/granted-project-list.component.html diff --git a/console/src/app/pages/granted-projects/granted-project-list/granted-project-list.component.scss b/console/src/app/pages/projects/granted-projects/granted-project-list/granted-project-list.component.scss similarity index 100% rename from console/src/app/pages/granted-projects/granted-project-list/granted-project-list.component.scss rename to console/src/app/pages/projects/granted-projects/granted-project-list/granted-project-list.component.scss diff --git a/console/src/app/pages/granted-projects/granted-project-list/granted-project-list.component.spec.ts b/console/src/app/pages/projects/granted-projects/granted-project-list/granted-project-list.component.spec.ts similarity index 100% rename from console/src/app/pages/granted-projects/granted-project-list/granted-project-list.component.spec.ts rename to console/src/app/pages/projects/granted-projects/granted-project-list/granted-project-list.component.spec.ts diff --git a/console/src/app/pages/granted-projects/granted-project-list/granted-project-list.component.ts b/console/src/app/pages/projects/granted-projects/granted-project-list/granted-project-list.component.ts similarity index 100% rename from console/src/app/pages/granted-projects/granted-project-list/granted-project-list.component.ts rename to console/src/app/pages/projects/granted-projects/granted-project-list/granted-project-list.component.ts diff --git a/console/src/app/pages/granted-projects/granted-projects-routing.module.ts b/console/src/app/pages/projects/granted-projects/granted-projects-routing.module.ts similarity index 92% rename from console/src/app/pages/granted-projects/granted-projects-routing.module.ts rename to console/src/app/pages/projects/granted-projects/granted-projects-routing.module.ts index 7811f1b675..da4692670f 100644 --- a/console/src/app/pages/granted-projects/granted-projects-routing.module.ts +++ b/console/src/app/pages/projects/granted-projects/granted-projects-routing.module.ts @@ -26,7 +26,8 @@ const routes: Routes = [ data: { type: ProjectType.PROJECTTYPE_GRANTED, }, - loadChildren: () => import('../../modules/project-members/project-members.module').then(m => m.ProjectMembersModule), + loadChildren: () => import('src/app/modules/project-members/project-members.module') + .then(m => m.ProjectMembersModule), }, { path: ':id/grant/:grantId', diff --git a/console/src/app/pages/granted-projects/granted-projects.component.html b/console/src/app/pages/projects/granted-projects/granted-projects.component.html similarity index 100% rename from console/src/app/pages/granted-projects/granted-projects.component.html rename to console/src/app/pages/projects/granted-projects/granted-projects.component.html diff --git a/console/src/app/pages/granted-projects/granted-projects.component.scss b/console/src/app/pages/projects/granted-projects/granted-projects.component.scss similarity index 100% rename from console/src/app/pages/granted-projects/granted-projects.component.scss rename to console/src/app/pages/projects/granted-projects/granted-projects.component.scss diff --git a/console/src/app/pages/granted-projects/granted-projects.component.spec.ts b/console/src/app/pages/projects/granted-projects/granted-projects.component.spec.ts similarity index 100% rename from console/src/app/pages/granted-projects/granted-projects.component.spec.ts rename to console/src/app/pages/projects/granted-projects/granted-projects.component.spec.ts diff --git a/console/src/app/pages/granted-projects/granted-projects.component.ts b/console/src/app/pages/projects/granted-projects/granted-projects.component.ts similarity index 100% rename from console/src/app/pages/granted-projects/granted-projects.component.ts rename to console/src/app/pages/projects/granted-projects/granted-projects.component.ts diff --git a/console/src/app/pages/granted-projects/granted-projects.module.ts b/console/src/app/pages/projects/granted-projects/granted-projects.module.ts similarity index 72% rename from console/src/app/pages/granted-projects/granted-projects.module.ts rename to console/src/app/pages/projects/granted-projects/granted-projects.module.ts index 8429ea4706..956f52a673 100644 --- a/console/src/app/pages/granted-projects/granted-projects.module.ts +++ b/console/src/app/pages/projects/granted-projects/granted-projects.module.ts @@ -1,5 +1,4 @@ import { CommonModule } from '@angular/common'; -import { HttpClient } from '@angular/common/http'; import { NgModule, NO_ERRORS_SCHEMA } from '@angular/core'; import { FormsModule, ReactiveFormsModule } from '@angular/forms'; import { MatButtonModule } from '@angular/material/button'; @@ -15,17 +14,16 @@ import { MatSortModule } from '@angular/material/sort'; import { MatTableModule } from '@angular/material/table'; import { MatTabsModule } from '@angular/material/tabs'; import { MatTooltipModule } from '@angular/material/tooltip'; -import { TranslateLoader, TranslateModule } from '@ngx-translate/core'; +import { TranslateModule } from '@ngx-translate/core'; +import { HasRoleModule } from 'src/app/directives/has-role/has-role.module'; +import { CardModule } from 'src/app/modules/card/card.module'; +import { ChangesModule } from 'src/app/modules/changes/changes.module'; +import { MetaLayoutModule } from 'src/app/modules/meta-layout/meta-layout.module'; +import { ProjectContributorsModule } from 'src/app/modules/project-contributors/project-contributors.module'; +import { ProjectRolesModule } from 'src/app/modules/project-roles/project-roles.module'; import { UserGrantsModule } from 'src/app/modules/user-grants/user-grants.module'; +import { PipesModule } from 'src/app/pipes/pipes.module'; -import { HttpLoaderFactory } from '../../app.module'; -import { HasRoleModule } from '../../directives/has-role/has-role.module'; -import { CardModule } from '../../modules/card/card.module'; -import { ChangesModule } from '../../modules/changes/changes.module'; -import { MetaLayoutModule } from '../../modules/meta-layout/meta-layout.module'; -import { ProjectContributorsModule } from '../../modules/project-contributors/project-contributors.module'; -import { ProjectRolesModule } from '../../modules/project-roles/project-roles.module'; -import { PipesModule } from '../../pipes/pipes.module'; import { GrantedProjectDetailComponent } from './granted-project-detail/granted-project-detail.component'; import { GrantedProjectGridComponent } from './granted-project-grid/granted-project-grid.component'; import { GrantedProjectListComponent } from './granted-project-list/granted-project-list.component'; @@ -66,13 +64,7 @@ import { GrantedProjectsComponent } from './granted-projects.component'; MatTooltipModule, MatSortModule, PipesModule, - TranslateModule.forChild({ - loader: { - provide: TranslateLoader, - useFactory: HttpLoaderFactory, - deps: [HttpClient], - }, - }), + TranslateModule, ], schemas: [NO_ERRORS_SCHEMA], }) diff --git a/console/src/app/pages/owned-projects/owned-project-detail/owned-project-detail.component.html b/console/src/app/pages/projects/owned-projects/owned-project-detail/owned-project-detail.component.html similarity index 94% rename from console/src/app/pages/owned-projects/owned-project-detail/owned-project-detail.component.html rename to console/src/app/pages/projects/owned-projects/owned-project-detail/owned-project-detail.component.html index 50bf13e34e..3a7c37cb34 100644 --- a/console/src/app/pages/owned-projects/owned-project-detail/owned-project-detail.component.html +++ b/console/src/app/pages/projects/owned-projects/owned-project-detail/owned-project-detail.component.html @@ -82,8 +82,9 @@ + [disabled]="project?.state !== ProjectState.PROJECTSTATE_ACTIVE" + [allowCreate]="project?.state == ProjectState.PROJECTSTATE_ACTIVE && (['user.grant.write'] | hasRole)" + [allowDelete]="project?.state == ProjectState.PROJECTSTATE_ACTIVE && (['user.grant.delete'] | hasRole)"> diff --git a/console/src/app/pages/owned-projects/owned-project-detail/owned-project-detail.component.scss b/console/src/app/pages/projects/owned-projects/owned-project-detail/owned-project-detail.component.scss similarity index 100% rename from console/src/app/pages/owned-projects/owned-project-detail/owned-project-detail.component.scss rename to console/src/app/pages/projects/owned-projects/owned-project-detail/owned-project-detail.component.scss diff --git a/console/src/app/pages/owned-projects/owned-project-detail/owned-project-detail.component.spec.ts b/console/src/app/pages/projects/owned-projects/owned-project-detail/owned-project-detail.component.spec.ts similarity index 100% rename from console/src/app/pages/owned-projects/owned-project-detail/owned-project-detail.component.spec.ts rename to console/src/app/pages/projects/owned-projects/owned-project-detail/owned-project-detail.component.spec.ts diff --git a/console/src/app/pages/owned-projects/owned-project-detail/owned-project-detail.component.ts b/console/src/app/pages/projects/owned-projects/owned-project-detail/owned-project-detail.component.ts similarity index 70% rename from console/src/app/pages/owned-projects/owned-project-detail/owned-project-detail.component.ts rename to console/src/app/pages/projects/owned-projects/owned-project-detail/owned-project-detail.component.ts index dd117d2a07..e430a48062 100644 --- a/console/src/app/pages/owned-projects/owned-project-detail/owned-project-detail.component.ts +++ b/console/src/app/pages/projects/owned-projects/owned-project-detail/owned-project-detail.component.ts @@ -1,12 +1,14 @@ import { SelectionModel } from '@angular/cdk/collections'; import { Location } from '@angular/common'; import { Component, OnDestroy, OnInit } from '@angular/core'; +import { MatDialog } from '@angular/material/dialog'; import { MatTableDataSource } from '@angular/material/table'; import { ActivatedRoute, Params } from '@angular/router'; import { TranslateService } from '@ngx-translate/core'; import { Subscription } from 'rxjs'; import { ChangeType } from 'src/app/modules/changes/changes.component'; import { UserGrantContext } from 'src/app/modules/user-grants/user-grants-datasource'; +import { WarnDialogComponent } from 'src/app/modules/warn-dialog/warn-dialog.component'; import { Application, ApplicationSearchResponse, @@ -69,6 +71,7 @@ export class OwnedProjectDetailComponent implements OnInit, OnDestroy { private projectService: ProjectService, private _location: Location, private orgService: OrgService, + private dialog: MatDialog, ) { } @@ -99,16 +102,45 @@ export class OwnedProjectDetailComponent implements OnInit, OnDestroy { public changeState(newState: ProjectState): void { if (newState === ProjectState.PROJECTSTATE_ACTIVE) { - this.projectService.ReactivateProject(this.projectId).then(() => { - this.toast.showInfo('Reactivated Project'); - }).catch(error => { - this.toast.showError(error); + const dialogRef = this.dialog.open(WarnDialogComponent, { + data: { + confirmKey: 'ACTIONS.REACTIVATE', + cancelKey: 'ACTIONS.CANCEL', + titleKey: 'PROJECT.PAGES.DIALOG.REACTIVATE.TITLE', + descriptionKey: 'PROJECT.PAGES.DIALOG.REACTIVATE.DESCRIPTION', + }, + width: '400px', }); + dialogRef.afterClosed().subscribe(resp => { + if (resp) { + this.projectService.ReactivateProject(this.projectId).then(() => { + this.toast.showInfo('Reactivated Project'); + this.project.state = ProjectState.PROJECTSTATE_ACTIVE; + }).catch(error => { + this.toast.showError(error); + }); + } + }); + } else if (newState === ProjectState.PROJECTSTATE_INACTIVE) { - this.projectService.DeactivateProject(this.projectId).then(() => { - this.toast.showInfo('Deactivated Project'); - }).catch(error => { - this.toast.showError(error); + const dialogRef = this.dialog.open(WarnDialogComponent, { + data: { + confirmKey: 'ACTIONS.DEACTIVATE', + cancelKey: 'ACTIONS.CANCEL', + titleKey: 'PROJECT.PAGES.DIALOG.DEACTIVATE.TITLE', + descriptionKey: 'PROJECT.PAGES.DIALOG.DEACTIVATE.DESCRIPTION', + }, + width: '400px', + }); + dialogRef.afterClosed().subscribe(resp => { + if (resp) { + this.projectService.DeactivateProject(this.projectId).then(() => { + this.toast.showInfo('Deactivated Project'); + this.project.state = ProjectState.PROJECTSTATE_INACTIVE; + }).catch(error => { + this.toast.showError(error); + }); + } }); } } diff --git a/console/src/app/pages/owned-projects/owned-project-grid/owned-project-grid.component.html b/console/src/app/pages/projects/owned-projects/owned-project-grid/owned-project-grid.component.html similarity index 100% rename from console/src/app/pages/owned-projects/owned-project-grid/owned-project-grid.component.html rename to console/src/app/pages/projects/owned-projects/owned-project-grid/owned-project-grid.component.html diff --git a/console/src/app/pages/owned-projects/owned-project-grid/owned-project-grid.component.scss b/console/src/app/pages/projects/owned-projects/owned-project-grid/owned-project-grid.component.scss similarity index 100% rename from console/src/app/pages/owned-projects/owned-project-grid/owned-project-grid.component.scss rename to console/src/app/pages/projects/owned-projects/owned-project-grid/owned-project-grid.component.scss diff --git a/console/src/app/pages/owned-projects/owned-project-grid/owned-project-grid.component.spec.ts b/console/src/app/pages/projects/owned-projects/owned-project-grid/owned-project-grid.component.spec.ts similarity index 100% rename from console/src/app/pages/owned-projects/owned-project-grid/owned-project-grid.component.spec.ts rename to console/src/app/pages/projects/owned-projects/owned-project-grid/owned-project-grid.component.spec.ts diff --git a/console/src/app/pages/owned-projects/owned-project-grid/owned-project-grid.component.ts b/console/src/app/pages/projects/owned-projects/owned-project-grid/owned-project-grid.component.ts similarity index 99% rename from console/src/app/pages/owned-projects/owned-project-grid/owned-project-grid.component.ts rename to console/src/app/pages/projects/owned-projects/owned-project-grid/owned-project-grid.component.ts index 62a80686fd..78416a4c31 100644 --- a/console/src/app/pages/owned-projects/owned-project-grid/owned-project-grid.component.ts +++ b/console/src/app/pages/projects/owned-projects/owned-project-grid/owned-project-grid.component.ts @@ -38,7 +38,6 @@ export class OwnedProjectGridComponent implements OnChanges { @Input() loading: boolean = false; public selection: SelectionModel = new SelectionModel(true, []); - public selectedIndex: number = -1; public showNewProject: boolean = false; public ProjectState: any = ProjectState; diff --git a/console/src/app/pages/owned-projects/owned-project-list/owned-project-list.component.html b/console/src/app/pages/projects/owned-projects/owned-project-list/owned-project-list.component.html similarity index 100% rename from console/src/app/pages/owned-projects/owned-project-list/owned-project-list.component.html rename to console/src/app/pages/projects/owned-projects/owned-project-list/owned-project-list.component.html diff --git a/console/src/app/pages/owned-projects/owned-project-list/owned-project-list.component.scss b/console/src/app/pages/projects/owned-projects/owned-project-list/owned-project-list.component.scss similarity index 100% rename from console/src/app/pages/owned-projects/owned-project-list/owned-project-list.component.scss rename to console/src/app/pages/projects/owned-projects/owned-project-list/owned-project-list.component.scss diff --git a/console/src/app/pages/owned-projects/owned-project-list/owned-project-list.component.spec.ts b/console/src/app/pages/projects/owned-projects/owned-project-list/owned-project-list.component.spec.ts similarity index 100% rename from console/src/app/pages/owned-projects/owned-project-list/owned-project-list.component.spec.ts rename to console/src/app/pages/projects/owned-projects/owned-project-list/owned-project-list.component.spec.ts diff --git a/console/src/app/pages/owned-projects/owned-project-list/owned-project-list.component.ts b/console/src/app/pages/projects/owned-projects/owned-project-list/owned-project-list.component.ts similarity index 100% rename from console/src/app/pages/owned-projects/owned-project-list/owned-project-list.component.ts rename to console/src/app/pages/projects/owned-projects/owned-project-list/owned-project-list.component.ts diff --git a/console/src/app/pages/owned-projects/owned-projects-routing.module.ts b/console/src/app/pages/projects/owned-projects/owned-projects-routing.module.ts similarity index 88% rename from console/src/app/pages/owned-projects/owned-projects-routing.module.ts rename to console/src/app/pages/projects/owned-projects/owned-projects-routing.module.ts index 9d4028ea9c..d3ddcb5391 100644 --- a/console/src/app/pages/owned-projects/owned-projects-routing.module.ts +++ b/console/src/app/pages/projects/owned-projects/owned-projects-routing.module.ts @@ -31,12 +31,13 @@ const routes: Routes = [ data: { type: ProjectType.PROJECTTYPE_OWNED, }, - loadChildren: () => import('../../modules/project-members/project-members.module').then(m => m.ProjectMembersModule), + loadChildren: () => import('src/app/modules/project-members/project-members.module') + .then(m => m.ProjectMembersModule), }, { path: ':projectid/apps', data: { animation: 'AddPage' }, - loadChildren: () => import('../apps/apps.module').then(m => m.AppsModule), + loadChildren: () => import('src/app/pages/projects/apps/apps.module').then(m => m.AppsModule), }, { path: ':projectid/roles/create', diff --git a/console/src/app/pages/owned-projects/owned-projects.component.html b/console/src/app/pages/projects/owned-projects/owned-projects.component.html similarity index 100% rename from console/src/app/pages/owned-projects/owned-projects.component.html rename to console/src/app/pages/projects/owned-projects/owned-projects.component.html diff --git a/console/src/app/pages/owned-projects/owned-projects.component.scss b/console/src/app/pages/projects/owned-projects/owned-projects.component.scss similarity index 100% rename from console/src/app/pages/owned-projects/owned-projects.component.scss rename to console/src/app/pages/projects/owned-projects/owned-projects.component.scss diff --git a/console/src/app/pages/owned-projects/owned-projects.component.spec.ts b/console/src/app/pages/projects/owned-projects/owned-projects.component.spec.ts similarity index 100% rename from console/src/app/pages/owned-projects/owned-projects.component.spec.ts rename to console/src/app/pages/projects/owned-projects/owned-projects.component.spec.ts diff --git a/console/src/app/pages/owned-projects/owned-projects.component.ts b/console/src/app/pages/projects/owned-projects/owned-projects.component.ts similarity index 100% rename from console/src/app/pages/owned-projects/owned-projects.component.ts rename to console/src/app/pages/projects/owned-projects/owned-projects.component.ts diff --git a/console/src/app/pages/owned-projects/owned-projects.module.ts b/console/src/app/pages/projects/owned-projects/owned-projects.module.ts similarity index 77% rename from console/src/app/pages/owned-projects/owned-projects.module.ts rename to console/src/app/pages/projects/owned-projects/owned-projects.module.ts index e6d465f3f8..9524504985 100644 --- a/console/src/app/pages/owned-projects/owned-projects.module.ts +++ b/console/src/app/pages/projects/owned-projects/owned-projects.module.ts @@ -1,5 +1,4 @@ import { CommonModule } from '@angular/common'; -import { HttpClient } from '@angular/common/http'; import { NgModule, NO_ERRORS_SCHEMA } from '@angular/core'; import { FormsModule, ReactiveFormsModule } from '@angular/forms'; import { MatButtonModule } from '@angular/material/button'; @@ -16,19 +15,18 @@ import { MatSortModule } from '@angular/material/sort'; import { MatTableModule } from '@angular/material/table'; import { MatTabsModule } from '@angular/material/tabs'; import { MatTooltipModule } from '@angular/material/tooltip'; -import { TranslateLoader, TranslateModule } from '@ngx-translate/core'; +import { TranslateModule } from '@ngx-translate/core'; +import { HasRoleModule } from 'src/app/directives/has-role/has-role.module'; import { AvatarModule } from 'src/app/modules/avatar/avatar.module'; +import { CardModule } from 'src/app/modules/card/card.module'; +import { ChangesModule } from 'src/app/modules/changes/changes.module'; +import { MetaLayoutModule } from 'src/app/modules/meta-layout/meta-layout.module'; +import { ProjectContributorsModule } from 'src/app/modules/project-contributors/project-contributors.module'; import { ProjectRolesModule } from 'src/app/modules/project-roles/project-roles.module'; import { UserGrantsModule } from 'src/app/modules/user-grants/user-grants.module'; +import { WarnDialogModule } from 'src/app/modules/warn-dialog/warn-dialog.module'; +import { PipesModule } from 'src/app/pipes/pipes.module'; -import { HttpLoaderFactory } from '../../app.module'; -import { HasRoleModule } from '../../directives/has-role/has-role.module'; -import { CardModule } from '../../modules/card/card.module'; -import { ChangesModule } from '../../modules/changes/changes.module'; -import { MetaLayoutModule } from '../../modules/meta-layout/meta-layout.module'; -import { ProjectContributorsModule } from '../../modules/project-contributors/project-contributors.module'; -import { PipesModule } from '../../pipes/pipes.module'; -import { UserListModule } from '../user-list/user-list.module'; import { OwnedProjectDetailComponent } from './owned-project-detail/owned-project-detail.component'; import { OwnedProjectGridComponent } from './owned-project-grid/owned-project-grid.component'; import { OwnedProjectListComponent } from './owned-project-list/owned-project-list.component'; @@ -64,10 +62,10 @@ import { ProjectGrantsComponent } from './project-grants/project-grants.componen MatFormFieldModule, MatInputModule, ChangesModule, - UserListModule, MatChipsModule, MatIconModule, MatButtonModule, + WarnDialogModule, MatProgressSpinnerModule, MetaLayoutModule, MatProgressBarModule, @@ -79,13 +77,7 @@ import { ProjectGrantsComponent } from './project-grants/project-grants.componen MatTooltipModule, MatSortModule, PipesModule, - TranslateModule.forChild({ - loader: { - provide: TranslateLoader, - useFactory: HttpLoaderFactory, - deps: [HttpClient], - }, - }), + TranslateModule, ], schemas: [NO_ERRORS_SCHEMA], }) diff --git a/console/src/app/pages/owned-projects/project-application-grid/project-application-grid.component.html b/console/src/app/pages/projects/owned-projects/project-application-grid/project-application-grid.component.html similarity index 100% rename from console/src/app/pages/owned-projects/project-application-grid/project-application-grid.component.html rename to console/src/app/pages/projects/owned-projects/project-application-grid/project-application-grid.component.html diff --git a/console/src/app/pages/owned-projects/project-application-grid/project-application-grid.component.scss b/console/src/app/pages/projects/owned-projects/project-application-grid/project-application-grid.component.scss similarity index 100% rename from console/src/app/pages/owned-projects/project-application-grid/project-application-grid.component.scss rename to console/src/app/pages/projects/owned-projects/project-application-grid/project-application-grid.component.scss diff --git a/console/src/app/pages/owned-projects/project-application-grid/project-application-grid.component.spec.ts b/console/src/app/pages/projects/owned-projects/project-application-grid/project-application-grid.component.spec.ts similarity index 100% rename from console/src/app/pages/owned-projects/project-application-grid/project-application-grid.component.spec.ts rename to console/src/app/pages/projects/owned-projects/project-application-grid/project-application-grid.component.spec.ts diff --git a/console/src/app/pages/owned-projects/project-application-grid/project-application-grid.component.ts b/console/src/app/pages/projects/owned-projects/project-application-grid/project-application-grid.component.ts similarity index 100% rename from console/src/app/pages/owned-projects/project-application-grid/project-application-grid.component.ts rename to console/src/app/pages/projects/owned-projects/project-application-grid/project-application-grid.component.ts diff --git a/console/src/app/pages/owned-projects/project-applications/project-applications-datasource.ts b/console/src/app/pages/projects/owned-projects/project-applications/project-applications-datasource.ts similarity index 100% rename from console/src/app/pages/owned-projects/project-applications/project-applications-datasource.ts rename to console/src/app/pages/projects/owned-projects/project-applications/project-applications-datasource.ts diff --git a/console/src/app/pages/owned-projects/project-applications/project-applications.component.html b/console/src/app/pages/projects/owned-projects/project-applications/project-applications.component.html similarity index 100% rename from console/src/app/pages/owned-projects/project-applications/project-applications.component.html rename to console/src/app/pages/projects/owned-projects/project-applications/project-applications.component.html diff --git a/console/src/app/pages/owned-projects/project-applications/project-applications.component.scss b/console/src/app/pages/projects/owned-projects/project-applications/project-applications.component.scss similarity index 100% rename from console/src/app/pages/owned-projects/project-applications/project-applications.component.scss rename to console/src/app/pages/projects/owned-projects/project-applications/project-applications.component.scss diff --git a/console/src/app/pages/owned-projects/project-applications/project-applications.component.spec.ts b/console/src/app/pages/projects/owned-projects/project-applications/project-applications.component.spec.ts similarity index 100% rename from console/src/app/pages/owned-projects/project-applications/project-applications.component.spec.ts rename to console/src/app/pages/projects/owned-projects/project-applications/project-applications.component.spec.ts diff --git a/console/src/app/pages/owned-projects/project-applications/project-applications.component.ts b/console/src/app/pages/projects/owned-projects/project-applications/project-applications.component.ts similarity index 100% rename from console/src/app/pages/owned-projects/project-applications/project-applications.component.ts rename to console/src/app/pages/projects/owned-projects/project-applications/project-applications.component.ts diff --git a/console/src/app/pages/owned-projects/project-grant-detail/project-grant-detail-datasource.ts b/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-detail-datasource.ts similarity index 100% rename from console/src/app/pages/owned-projects/project-grant-detail/project-grant-detail-datasource.ts rename to console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-detail-datasource.ts diff --git a/console/src/app/pages/owned-projects/project-grant-detail/project-grant-detail-routing.module.ts b/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-detail-routing.module.ts similarity index 100% rename from console/src/app/pages/owned-projects/project-grant-detail/project-grant-detail-routing.module.ts rename to console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-detail-routing.module.ts diff --git a/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-detail.component.html b/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-detail.component.html new file mode 100644 index 0000000000..64b9e2b67e --- /dev/null +++ b/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-detail.component.html @@ -0,0 +1,58 @@ +
+
+ +
+
+

{{ 'PROJECT.GRANT.DETAIL.TITLE' | translate }}

+

{{ 'PROJECT.GRANT.DETAIL.DESC' | translate }}

+
+
+
+
+ {{'PROJECT.GRANT.DETAIL.PROJECTNAME' | translate}} + + {{grant?.projectName}} +
+
+ {{'PROJECT.GRANT.DETAIL.RESOURCEOWNER' | translate}} + + {{grant?.resourceOwnerName}} +
+
+ + + +
+ + +
+
+ + + {{ 'PROJECT.GRANT.ROLENAMESLIST' | translate }} + + + {{role.key}} + + + + +
+ +

{{ 'PROJECT.GRANT.DETAIL.MEMBERTITLE' | translate }}

+

{{ 'PROJECT.GRANT.DETAIL.MEMBERDESC' | translate }}

+ + + +
+
+
\ No newline at end of file diff --git a/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-detail.component.scss b/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-detail.component.scss new file mode 100644 index 0000000000..fe4b3d96cf --- /dev/null +++ b/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-detail.component.scss @@ -0,0 +1,92 @@ +.container { + display: flex; + padding-bottom: 3rem; + + h1 { + font-size: 1.2rem; + } + + .desc { + display: block; + font-size: .9rem; + color: #8795a1; + } + + .left { + width: 100px; + display: flex; + padding: 1rem; + justify-content: center; + + a { + margin-top: .2rem; + } + } + + .right { + flex: 1; + padding-top: 1rem; + + .head { + display: flex; + align-items: center; + border-bottom: 1px solid #ffffff20; + margin-bottom: 2rem; + flex-wrap: wrap; + + a { + display: block; + } + + h1 { + margin-top: 0.2rem; + font-size: 2rem; + } + } + + .master-row { + display: flex; + flex-wrap: wrap; + width: 100%; + + .left-col { + flex: 1; + display: flex; + flex-direction: column; + margin-bottom: 2rem; + + .row { + max-width: 400px; + display: flex; + align-items: center; + padding: .5rem 0; + + span { + font-size: .9rem; + } + + .first { + color: #8795a1; + } + } + } + + .fill-space { + flex: 1; + } + + .state-button { + border-radius: .5rem; + } + } + + mat-form-field { + width: 100%; + } + + .divider { + height: 1px; + background-color: #ffffff20; + } + } +} diff --git a/console/src/app/pages/owned-projects/project-grant-detail/project-grant-detail.component.spec.ts b/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-detail.component.spec.ts similarity index 100% rename from console/src/app/pages/owned-projects/project-grant-detail/project-grant-detail.component.spec.ts rename to console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-detail.component.spec.ts diff --git a/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-detail.component.ts b/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-detail.component.ts new file mode 100644 index 0000000000..56faeda908 --- /dev/null +++ b/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-detail.component.ts @@ -0,0 +1,88 @@ +import { Component } from '@angular/core'; +import { MatSelectChange } from '@angular/material/select'; +import { ActivatedRoute } from '@angular/router'; +import { + ProjectGrant, + ProjectGrantState, + ProjectGrantView, + ProjectRoleView, + ProjectType, +} from 'src/app/proto/generated/management_pb'; +import { OrgService } from 'src/app/services/org.service'; +import { ProjectService } from 'src/app/services/project.service'; +import { ToastService } from 'src/app/services/toast.service'; + +@Component({ + selector: 'app-project-grant-detail', + templateUrl: './project-grant-detail.component.html', + styleUrls: ['./project-grant-detail.component.scss'], +}) +export class ProjectGrantDetailComponent { + public grant!: ProjectGrantView.AsObject; + public projectid: string = ''; + public grantid: string = ''; + + public projectType: ProjectType = ProjectType.PROJECTTYPE_OWNED; + public disabled: boolean = false; + + public isZitadel: boolean = false; + ProjectGrantState: any = ProjectGrantState; + + public memberRoleOptions: ProjectRoleView.AsObject[] = []; + + constructor( + private orgService: OrgService, + private projectService: ProjectService, + private route: ActivatedRoute, + private toast: ToastService, + ) { + this.route.params.subscribe(params => { + this.projectid = params.projectid; + this.grantid = params.grantid; + + this.orgService.GetIam().then(iam => { + this.isZitadel = iam.toObject().iamProjectId === this.projectid; + }); + + this.getRoleOptions(params.projectid); + + this.projectService.ProjectGrantByID(this.grantid, this.projectid).then((grant) => { + this.grant = grant.toObject(); + }); + }); + } + + public changeState(newState: ProjectGrantState): void { + if (newState === ProjectGrantState.PROJECTGRANTSTATE_ACTIVE) { + this.projectService.ReactivateProjectGrant(this.grantid, this.projectid).then(() => { + this.toast.showInfo('PROJECT.TOAST.REACTIVATED', true); + this.grant.state = newState; + }).catch(error => { + this.toast.showError(error); + }); + } else if (newState === ProjectGrantState.PROJECTGRANTSTATE_INACTIVE) { + this.projectService.DeactivateProjectGrant(this.grantid, this.projectid).then(() => { + this.toast.showInfo('PROJECT.TOAST.DEACTIVATED', true); + this.grant.state = newState; + }).catch(error => { + this.toast.showError(error); + }); + } + } + + public getRoleOptions(projectId: string): void { + this.projectService.SearchProjectRoles(projectId, 100, 0).then(resp => { + this.memberRoleOptions = resp.toObject().resultList; + console.log(resp.toObject()); + }); + } + + updateRoles(selectionChange: MatSelectChange): void { + this.projectService.UpdateProjectGrant(this.grant.id, this.grant.projectId, selectionChange.value) + .then((newgrant: ProjectGrant) => { + this.toast.showInfo('Grant updated!'); + }).catch(error => { + this.toast.showError(error); + }); + } +} diff --git a/console/src/app/pages/owned-projects/project-grant-detail/project-grant-detail.module.ts b/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-detail.module.ts similarity index 90% rename from console/src/app/pages/owned-projects/project-grant-detail/project-grant-detail.module.ts rename to console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-detail.module.ts index ea075c7b35..0c4c779db0 100644 --- a/console/src/app/pages/owned-projects/project-grant-detail/project-grant-detail.module.ts +++ b/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-detail.module.ts @@ -5,9 +5,11 @@ import { MatAutocompleteModule } from '@angular/material/autocomplete'; import { MatButtonModule } from '@angular/material/button'; import { MatCheckboxModule } from '@angular/material/checkbox'; import { MatChipsModule } from '@angular/material/chips'; +import { MatFormFieldModule } from '@angular/material/form-field'; import { MatIconModule } from '@angular/material/icon'; import { MatPaginatorModule } from '@angular/material/paginator'; import { MatProgressSpinnerModule } from '@angular/material/progress-spinner'; +import { MatSelectModule } from '@angular/material/select'; import { MatSortModule } from '@angular/material/sort'; import { MatTableModule } from '@angular/material/table'; import { MatTooltipModule } from '@angular/material/tooltip'; @@ -33,6 +35,8 @@ import { ProjectGrantMembersModule } from './project-grant-members/project-grant MatIconModule, MatTableModule, MatPaginatorModule, + MatFormFieldModule, + MatSelectModule, MatSortModule, MatTooltipModule, ReactiveFormsModule, diff --git a/console/src/app/pages/owned-projects/project-grant-detail/project-grant-members/project-grant-members-create-dialog/project-grant-members-create-dialog.component.html b/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-members/project-grant-members-create-dialog/project-grant-members-create-dialog.component.html similarity index 100% rename from console/src/app/pages/owned-projects/project-grant-detail/project-grant-members/project-grant-members-create-dialog/project-grant-members-create-dialog.component.html rename to console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-members/project-grant-members-create-dialog/project-grant-members-create-dialog.component.html diff --git a/console/src/app/pages/owned-projects/project-grant-detail/project-grant-members/project-grant-members-create-dialog/project-grant-members-create-dialog.component.scss b/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-members/project-grant-members-create-dialog/project-grant-members-create-dialog.component.scss similarity index 100% rename from console/src/app/pages/owned-projects/project-grant-detail/project-grant-members/project-grant-members-create-dialog/project-grant-members-create-dialog.component.scss rename to console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-members/project-grant-members-create-dialog/project-grant-members-create-dialog.component.scss diff --git a/console/src/app/pages/owned-projects/project-grant-detail/project-grant-members/project-grant-members-create-dialog/project-grant-members-create-dialog.component.spec.ts b/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-members/project-grant-members-create-dialog/project-grant-members-create-dialog.component.spec.ts similarity index 100% rename from console/src/app/pages/owned-projects/project-grant-detail/project-grant-members/project-grant-members-create-dialog/project-grant-members-create-dialog.component.spec.ts rename to console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-members/project-grant-members-create-dialog/project-grant-members-create-dialog.component.spec.ts diff --git a/console/src/app/pages/owned-projects/project-grant-detail/project-grant-members/project-grant-members-create-dialog/project-grant-members-create-dialog.component.ts b/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-members/project-grant-members-create-dialog/project-grant-members-create-dialog.component.ts similarity index 100% rename from console/src/app/pages/owned-projects/project-grant-detail/project-grant-members/project-grant-members-create-dialog/project-grant-members-create-dialog.component.ts rename to console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-members/project-grant-members-create-dialog/project-grant-members-create-dialog.component.ts diff --git a/console/src/app/pages/owned-projects/project-grant-detail/project-grant-members/project-grant-members-create-dialog/project-grant-members-create-dialog.module.ts b/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-members/project-grant-members-create-dialog/project-grant-members-create-dialog.module.ts similarity index 92% rename from console/src/app/pages/owned-projects/project-grant-detail/project-grant-members/project-grant-members-create-dialog/project-grant-members-create-dialog.module.ts rename to console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-members/project-grant-members-create-dialog/project-grant-members-create-dialog.module.ts index c39fcbb047..f458cd8a2b 100644 --- a/console/src/app/pages/owned-projects/project-grant-detail/project-grant-members/project-grant-members-create-dialog/project-grant-members-create-dialog.module.ts +++ b/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-members/project-grant-members-create-dialog/project-grant-members-create-dialog.module.ts @@ -22,9 +22,6 @@ import { ProjectGrantMembersCreateDialogComponent } from './project-grant-member MatFormFieldModule, SearchUserAutocompleteModule, ], - entryComponents: [ - ProjectGrantMembersCreateDialogComponent, - ], }) export class ProjectGrantMembersCreateDialogModule { } diff --git a/console/src/app/pages/owned-projects/project-grant-detail/project-grant-members/project-grant-members-datasource.ts b/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-members/project-grant-members-datasource.ts similarity index 100% rename from console/src/app/pages/owned-projects/project-grant-detail/project-grant-members/project-grant-members-datasource.ts rename to console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-members/project-grant-members-datasource.ts diff --git a/console/src/app/pages/owned-projects/project-grant-detail/project-grant-members/project-grant-members.component.html b/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-members/project-grant-members.component.html similarity index 98% rename from console/src/app/pages/owned-projects/project-grant-detail/project-grant-members/project-grant-members.component.html rename to console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-members/project-grant-members.component.html index 622ea2adae..fe39eb99da 100644 --- a/console/src/app/pages/owned-projects/project-grant-detail/project-grant-members/project-grant-members.component.html +++ b/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-members/project-grant-members.component.html @@ -69,7 +69,7 @@ {{ 'PROJECT.MEMBER.ROLES' | translate }} - {{ 'PROJECT.GRANT.TITLE' | translate }} + {{ 'PROJECT.MEMBER.ROLES' | translate }} diff --git a/console/src/app/pages/owned-projects/project-grant-detail/project-grant-members/project-grant-members.component.scss b/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-members/project-grant-members.component.scss similarity index 98% rename from console/src/app/pages/owned-projects/project-grant-detail/project-grant-members/project-grant-members.component.scss rename to console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-members/project-grant-members.component.scss index 65f6a6b902..17ed5a5811 100644 --- a/console/src/app/pages/owned-projects/project-grant-detail/project-grant-members/project-grant-members.component.scss +++ b/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-members/project-grant-members.component.scss @@ -30,7 +30,7 @@ .table-wrapper { overflow: auto; - + .spinner-container { display: flex; align-items: center; @@ -38,8 +38,6 @@ } table, mat-paginator { - width: 100%; - td, th { padding: .5rem; &:first-child { diff --git a/console/src/app/pages/owned-projects/project-grant-detail/project-grant-members/project-grant-members.component.spec.ts b/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-members/project-grant-members.component.spec.ts similarity index 100% rename from console/src/app/pages/owned-projects/project-grant-detail/project-grant-members/project-grant-members.component.spec.ts rename to console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-members/project-grant-members.component.spec.ts diff --git a/console/src/app/pages/owned-projects/project-grant-detail/project-grant-members/project-grant-members.component.ts b/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-members/project-grant-members.component.ts similarity index 100% rename from console/src/app/pages/owned-projects/project-grant-detail/project-grant-members/project-grant-members.component.ts rename to console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-members/project-grant-members.component.ts diff --git a/console/src/app/pages/owned-projects/project-grant-detail/project-grant-members/project-grant-members.module.ts b/console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-members/project-grant-members.module.ts similarity index 100% rename from console/src/app/pages/owned-projects/project-grant-detail/project-grant-members/project-grant-members.module.ts rename to console/src/app/pages/projects/owned-projects/project-grant-detail/project-grant-members/project-grant-members.module.ts diff --git a/console/src/app/pages/owned-projects/project-grants/project-grants-datasource.ts b/console/src/app/pages/projects/owned-projects/project-grants/project-grants-datasource.ts similarity index 100% rename from console/src/app/pages/owned-projects/project-grants/project-grants-datasource.ts rename to console/src/app/pages/projects/owned-projects/project-grants/project-grants-datasource.ts diff --git a/console/src/app/pages/owned-projects/project-grants/project-grants.component.html b/console/src/app/pages/projects/owned-projects/project-grants/project-grants.component.html similarity index 99% rename from console/src/app/pages/owned-projects/project-grants/project-grants.component.html rename to console/src/app/pages/projects/owned-projects/project-grants/project-grants.component.html index 6abc48faa6..c109a4403e 100644 --- a/console/src/app/pages/owned-projects/project-grants/project-grants.component.html +++ b/console/src/app/pages/projects/owned-projects/project-grants/project-grants.component.html @@ -71,7 +71,7 @@ {{ 'PROJECT.GRANT.ROLENAMESLIST' | translate }} - {{role.key}} diff --git a/console/src/app/pages/owned-projects/project-grants/project-grants.component.scss b/console/src/app/pages/projects/owned-projects/project-grants/project-grants.component.scss similarity index 100% rename from console/src/app/pages/owned-projects/project-grants/project-grants.component.scss rename to console/src/app/pages/projects/owned-projects/project-grants/project-grants.component.scss diff --git a/console/src/app/pages/owned-projects/project-grants/project-grants.component.spec.ts b/console/src/app/pages/projects/owned-projects/project-grants/project-grants.component.spec.ts similarity index 100% rename from console/src/app/pages/owned-projects/project-grants/project-grants.component.spec.ts rename to console/src/app/pages/projects/owned-projects/project-grants/project-grants.component.spec.ts diff --git a/console/src/app/pages/owned-projects/project-grants/project-grants.component.ts b/console/src/app/pages/projects/owned-projects/project-grants/project-grants.component.ts similarity index 100% rename from console/src/app/pages/owned-projects/project-grants/project-grants.component.ts rename to console/src/app/pages/projects/owned-projects/project-grants/project-grants.component.ts diff --git a/console/src/app/pages/project-create/project-create-routing.module.ts b/console/src/app/pages/projects/project-create/project-create-routing.module.ts similarity index 100% rename from console/src/app/pages/project-create/project-create-routing.module.ts rename to console/src/app/pages/projects/project-create/project-create-routing.module.ts diff --git a/console/src/app/pages/project-create/project-create.component.html b/console/src/app/pages/projects/project-create/project-create.component.html similarity index 100% rename from console/src/app/pages/project-create/project-create.component.html rename to console/src/app/pages/projects/project-create/project-create.component.html diff --git a/console/src/app/pages/project-create/project-create.component.scss b/console/src/app/pages/projects/project-create/project-create.component.scss similarity index 100% rename from console/src/app/pages/project-create/project-create.component.scss rename to console/src/app/pages/projects/project-create/project-create.component.scss diff --git a/console/src/app/pages/project-create/project-create.component.spec.ts b/console/src/app/pages/projects/project-create/project-create.component.spec.ts similarity index 100% rename from console/src/app/pages/project-create/project-create.component.spec.ts rename to console/src/app/pages/projects/project-create/project-create.component.spec.ts diff --git a/console/src/app/pages/project-create/project-create.component.ts b/console/src/app/pages/projects/project-create/project-create.component.ts similarity index 100% rename from console/src/app/pages/project-create/project-create.component.ts rename to console/src/app/pages/projects/project-create/project-create.component.ts diff --git a/console/src/app/pages/project-create/project-create.module.ts b/console/src/app/pages/projects/project-create/project-create.module.ts similarity index 67% rename from console/src/app/pages/project-create/project-create.module.ts rename to console/src/app/pages/projects/project-create/project-create.module.ts index 368316a45d..beef15e049 100644 --- a/console/src/app/pages/project-create/project-create.module.ts +++ b/console/src/app/pages/projects/project-create/project-create.module.ts @@ -1,13 +1,11 @@ import { CommonModule } from '@angular/common'; -import { HttpClient } from '@angular/common/http'; import { NgModule } from '@angular/core'; import { FormsModule } from '@angular/forms'; import { MatButtonModule } from '@angular/material/button'; import { MatFormFieldModule } from '@angular/material/form-field'; import { MatIconModule } from '@angular/material/icon'; import { MatInputModule } from '@angular/material/input'; -import { TranslateLoader, TranslateModule } from '@ngx-translate/core'; -import { HttpLoaderFactory } from 'src/app/app.module'; +import { TranslateModule } from '@ngx-translate/core'; import { ProjectCreateRoutingModule } from './project-create-routing.module'; import { ProjectCreateComponent } from './project-create.component'; @@ -22,13 +20,7 @@ import { ProjectCreateComponent } from './project-create.component'; MatFormFieldModule, MatButtonModule, MatIconModule, - TranslateModule.forChild({ - loader: { - provide: TranslateLoader, - useFactory: HttpLoaderFactory, - deps: [HttpClient], - }, - }), + TranslateModule, ], }) export class ProjectCreateModule { } diff --git a/console/src/app/pages/project-grant-create/project-grant-create-routing.module.ts b/console/src/app/pages/projects/project-grant-create/project-grant-create-routing.module.ts similarity index 100% rename from console/src/app/pages/project-grant-create/project-grant-create-routing.module.ts rename to console/src/app/pages/projects/project-grant-create/project-grant-create-routing.module.ts diff --git a/console/src/app/pages/project-grant-create/project-grant-create.component.html b/console/src/app/pages/projects/project-grant-create/project-grant-create.component.html similarity index 100% rename from console/src/app/pages/project-grant-create/project-grant-create.component.html rename to console/src/app/pages/projects/project-grant-create/project-grant-create.component.html diff --git a/console/src/app/pages/project-grant-create/project-grant-create.component.scss b/console/src/app/pages/projects/project-grant-create/project-grant-create.component.scss similarity index 100% rename from console/src/app/pages/project-grant-create/project-grant-create.component.scss rename to console/src/app/pages/projects/project-grant-create/project-grant-create.component.scss diff --git a/console/src/app/pages/project-grant-create/project-grant-create.component.spec.ts b/console/src/app/pages/projects/project-grant-create/project-grant-create.component.spec.ts similarity index 100% rename from console/src/app/pages/project-grant-create/project-grant-create.component.spec.ts rename to console/src/app/pages/projects/project-grant-create/project-grant-create.component.spec.ts diff --git a/console/src/app/pages/project-grant-create/project-grant-create.component.ts b/console/src/app/pages/projects/project-grant-create/project-grant-create.component.ts similarity index 100% rename from console/src/app/pages/project-grant-create/project-grant-create.component.ts rename to console/src/app/pages/projects/project-grant-create/project-grant-create.component.ts diff --git a/console/src/app/pages/project-grant-create/project-grant-create.module.ts b/console/src/app/pages/projects/project-grant-create/project-grant-create.module.ts similarity index 94% rename from console/src/app/pages/project-grant-create/project-grant-create.module.ts rename to console/src/app/pages/projects/project-grant-create/project-grant-create.module.ts index cab91bc310..583f8515c0 100644 --- a/console/src/app/pages/project-grant-create/project-grant-create.module.ts +++ b/console/src/app/pages/projects/project-grant-create/project-grant-create.module.ts @@ -12,9 +12,9 @@ import { MatProgressSpinnerModule } from '@angular/material/progress-spinner'; import { MatTooltipModule } from '@angular/material/tooltip'; import { TranslateModule } from '@ngx-translate/core'; import { CardModule } from 'src/app/modules/card/card.module'; +import { ProjectRolesModule } from 'src/app/modules/project-roles/project-roles.module'; import { PipesModule } from 'src/app/pipes/pipes.module'; -import { ProjectRolesModule } from '../../modules/project-roles/project-roles.module'; import { ProjectGrantCreateRoutingModule } from './project-grant-create-routing.module'; import { ProjectGrantCreateComponent } from './project-grant-create.component'; diff --git a/console/src/app/pages/project-role-create/project-role-create-routing.module.ts b/console/src/app/pages/projects/project-role-create/project-role-create-routing.module.ts similarity index 100% rename from console/src/app/pages/project-role-create/project-role-create-routing.module.ts rename to console/src/app/pages/projects/project-role-create/project-role-create-routing.module.ts diff --git a/console/src/app/pages/project-role-create/project-role-create.component.html b/console/src/app/pages/projects/project-role-create/project-role-create.component.html similarity index 100% rename from console/src/app/pages/project-role-create/project-role-create.component.html rename to console/src/app/pages/projects/project-role-create/project-role-create.component.html diff --git a/console/src/app/pages/project-role-create/project-role-create.component.scss b/console/src/app/pages/projects/project-role-create/project-role-create.component.scss similarity index 100% rename from console/src/app/pages/project-role-create/project-role-create.component.scss rename to console/src/app/pages/projects/project-role-create/project-role-create.component.scss diff --git a/console/src/app/pages/project-role-create/project-role-create.component.spec.ts b/console/src/app/pages/projects/project-role-create/project-role-create.component.spec.ts similarity index 100% rename from console/src/app/pages/project-role-create/project-role-create.component.spec.ts rename to console/src/app/pages/projects/project-role-create/project-role-create.component.spec.ts diff --git a/console/src/app/pages/project-role-create/project-role-create.component.ts b/console/src/app/pages/projects/project-role-create/project-role-create.component.ts similarity index 100% rename from console/src/app/pages/project-role-create/project-role-create.component.ts rename to console/src/app/pages/projects/project-role-create/project-role-create.component.ts diff --git a/console/src/app/pages/project-role-create/project-role-create.module.ts b/console/src/app/pages/projects/project-role-create/project-role-create.module.ts similarity index 100% rename from console/src/app/pages/project-role-create/project-role-create.module.ts rename to console/src/app/pages/projects/project-role-create/project-role-create.module.ts diff --git a/console/src/app/pages/user-create/user-create-routing.module.ts b/console/src/app/pages/users/user-create/user-create-routing.module.ts similarity index 100% rename from console/src/app/pages/user-create/user-create-routing.module.ts rename to console/src/app/pages/users/user-create/user-create-routing.module.ts diff --git a/console/src/app/pages/user-create/user-create.component.html b/console/src/app/pages/users/user-create/user-create.component.html similarity index 100% rename from console/src/app/pages/user-create/user-create.component.html rename to console/src/app/pages/users/user-create/user-create.component.html diff --git a/console/src/app/pages/user-create/user-create.component.scss b/console/src/app/pages/users/user-create/user-create.component.scss similarity index 100% rename from console/src/app/pages/user-create/user-create.component.scss rename to console/src/app/pages/users/user-create/user-create.component.scss diff --git a/console/src/app/pages/user-create/user-create.component.spec.ts b/console/src/app/pages/users/user-create/user-create.component.spec.ts similarity index 100% rename from console/src/app/pages/user-create/user-create.component.spec.ts rename to console/src/app/pages/users/user-create/user-create.component.spec.ts diff --git a/console/src/app/pages/user-create/user-create.component.ts b/console/src/app/pages/users/user-create/user-create.component.ts similarity index 100% rename from console/src/app/pages/user-create/user-create.component.ts rename to console/src/app/pages/users/user-create/user-create.component.ts diff --git a/console/src/app/pages/user-create/user-create.module.ts b/console/src/app/pages/users/user-create/user-create.module.ts similarity index 100% rename from console/src/app/pages/user-create/user-create.module.ts rename to console/src/app/pages/users/user-create/user-create.module.ts diff --git a/console/src/app/pages/user-detail/auth-user-detail/auth-user-detail.component.html b/console/src/app/pages/users/user-detail/auth-user-detail/auth-user-detail.component.html similarity index 100% rename from console/src/app/pages/user-detail/auth-user-detail/auth-user-detail.component.html rename to console/src/app/pages/users/user-detail/auth-user-detail/auth-user-detail.component.html diff --git a/console/src/app/pages/user-detail/auth-user-detail/auth-user-detail.component.scss b/console/src/app/pages/users/user-detail/auth-user-detail/auth-user-detail.component.scss similarity index 100% rename from console/src/app/pages/user-detail/auth-user-detail/auth-user-detail.component.scss rename to console/src/app/pages/users/user-detail/auth-user-detail/auth-user-detail.component.scss diff --git a/console/src/app/pages/user-detail/auth-user-detail/auth-user-detail.component.spec.ts b/console/src/app/pages/users/user-detail/auth-user-detail/auth-user-detail.component.spec.ts similarity index 100% rename from console/src/app/pages/user-detail/auth-user-detail/auth-user-detail.component.spec.ts rename to console/src/app/pages/users/user-detail/auth-user-detail/auth-user-detail.component.spec.ts diff --git a/console/src/app/pages/user-detail/auth-user-detail/auth-user-detail.component.ts b/console/src/app/pages/users/user-detail/auth-user-detail/auth-user-detail.component.ts similarity index 100% rename from console/src/app/pages/user-detail/auth-user-detail/auth-user-detail.component.ts rename to console/src/app/pages/users/user-detail/auth-user-detail/auth-user-detail.component.ts diff --git a/console/src/app/pages/user-detail/auth-user-detail/auth-user-mfa/auth-user-mfa.component.html b/console/src/app/pages/users/user-detail/auth-user-detail/auth-user-mfa/auth-user-mfa.component.html similarity index 100% rename from console/src/app/pages/user-detail/auth-user-detail/auth-user-mfa/auth-user-mfa.component.html rename to console/src/app/pages/users/user-detail/auth-user-detail/auth-user-mfa/auth-user-mfa.component.html diff --git a/console/src/app/pages/user-detail/auth-user-detail/auth-user-mfa/auth-user-mfa.component.scss b/console/src/app/pages/users/user-detail/auth-user-detail/auth-user-mfa/auth-user-mfa.component.scss similarity index 100% rename from console/src/app/pages/user-detail/auth-user-detail/auth-user-mfa/auth-user-mfa.component.scss rename to console/src/app/pages/users/user-detail/auth-user-detail/auth-user-mfa/auth-user-mfa.component.scss diff --git a/console/src/app/pages/user-detail/auth-user-detail/auth-user-mfa/auth-user-mfa.component.spec.ts b/console/src/app/pages/users/user-detail/auth-user-detail/auth-user-mfa/auth-user-mfa.component.spec.ts similarity index 100% rename from console/src/app/pages/user-detail/auth-user-detail/auth-user-mfa/auth-user-mfa.component.spec.ts rename to console/src/app/pages/users/user-detail/auth-user-detail/auth-user-mfa/auth-user-mfa.component.spec.ts diff --git a/console/src/app/pages/user-detail/auth-user-detail/auth-user-mfa/auth-user-mfa.component.ts b/console/src/app/pages/users/user-detail/auth-user-detail/auth-user-mfa/auth-user-mfa.component.ts similarity index 100% rename from console/src/app/pages/user-detail/auth-user-detail/auth-user-mfa/auth-user-mfa.component.ts rename to console/src/app/pages/users/user-detail/auth-user-detail/auth-user-mfa/auth-user-mfa.component.ts diff --git a/console/src/app/pages/user-detail/auth-user-detail/code-dialog/code-dialog.component.html b/console/src/app/pages/users/user-detail/auth-user-detail/code-dialog/code-dialog.component.html similarity index 100% rename from console/src/app/pages/user-detail/auth-user-detail/code-dialog/code-dialog.component.html rename to console/src/app/pages/users/user-detail/auth-user-detail/code-dialog/code-dialog.component.html diff --git a/console/src/app/pages/user-detail/auth-user-detail/code-dialog/code-dialog.component.scss b/console/src/app/pages/users/user-detail/auth-user-detail/code-dialog/code-dialog.component.scss similarity index 100% rename from console/src/app/pages/user-detail/auth-user-detail/code-dialog/code-dialog.component.scss rename to console/src/app/pages/users/user-detail/auth-user-detail/code-dialog/code-dialog.component.scss diff --git a/console/src/app/pages/user-detail/auth-user-detail/code-dialog/code-dialog.component.spec.ts b/console/src/app/pages/users/user-detail/auth-user-detail/code-dialog/code-dialog.component.spec.ts similarity index 100% rename from console/src/app/pages/user-detail/auth-user-detail/code-dialog/code-dialog.component.spec.ts rename to console/src/app/pages/users/user-detail/auth-user-detail/code-dialog/code-dialog.component.spec.ts diff --git a/console/src/app/pages/user-detail/auth-user-detail/code-dialog/code-dialog.component.ts b/console/src/app/pages/users/user-detail/auth-user-detail/code-dialog/code-dialog.component.ts similarity index 100% rename from console/src/app/pages/user-detail/auth-user-detail/code-dialog/code-dialog.component.ts rename to console/src/app/pages/users/user-detail/auth-user-detail/code-dialog/code-dialog.component.ts diff --git a/console/src/app/pages/user-detail/auth-user-detail/dialog-otp/dialog-otp.component.html b/console/src/app/pages/users/user-detail/auth-user-detail/dialog-otp/dialog-otp.component.html similarity index 100% rename from console/src/app/pages/user-detail/auth-user-detail/dialog-otp/dialog-otp.component.html rename to console/src/app/pages/users/user-detail/auth-user-detail/dialog-otp/dialog-otp.component.html diff --git a/console/src/app/pages/user-detail/auth-user-detail/dialog-otp/dialog-otp.component.scss b/console/src/app/pages/users/user-detail/auth-user-detail/dialog-otp/dialog-otp.component.scss similarity index 100% rename from console/src/app/pages/user-detail/auth-user-detail/dialog-otp/dialog-otp.component.scss rename to console/src/app/pages/users/user-detail/auth-user-detail/dialog-otp/dialog-otp.component.scss diff --git a/console/src/app/pages/user-detail/auth-user-detail/dialog-otp/dialog-otp.component.ts b/console/src/app/pages/users/user-detail/auth-user-detail/dialog-otp/dialog-otp.component.ts similarity index 100% rename from console/src/app/pages/user-detail/auth-user-detail/dialog-otp/dialog-otp.component.ts rename to console/src/app/pages/users/user-detail/auth-user-detail/dialog-otp/dialog-otp.component.ts diff --git a/console/src/app/pages/user-detail/detail-form/detail-form.component.html b/console/src/app/pages/users/user-detail/detail-form/detail-form.component.html similarity index 100% rename from console/src/app/pages/user-detail/detail-form/detail-form.component.html rename to console/src/app/pages/users/user-detail/detail-form/detail-form.component.html diff --git a/console/src/app/pages/user-detail/detail-form/detail-form.component.scss b/console/src/app/pages/users/user-detail/detail-form/detail-form.component.scss similarity index 100% rename from console/src/app/pages/user-detail/detail-form/detail-form.component.scss rename to console/src/app/pages/users/user-detail/detail-form/detail-form.component.scss diff --git a/console/src/app/pages/user-detail/detail-form/detail-form.component.spec.ts b/console/src/app/pages/users/user-detail/detail-form/detail-form.component.spec.ts similarity index 100% rename from console/src/app/pages/user-detail/detail-form/detail-form.component.spec.ts rename to console/src/app/pages/users/user-detail/detail-form/detail-form.component.spec.ts diff --git a/console/src/app/pages/user-detail/detail-form/detail-form.component.ts b/console/src/app/pages/users/user-detail/detail-form/detail-form.component.ts similarity index 100% rename from console/src/app/pages/user-detail/detail-form/detail-form.component.ts rename to console/src/app/pages/users/user-detail/detail-form/detail-form.component.ts diff --git a/console/src/app/pages/user-detail/detail-form/detail-form.module.ts b/console/src/app/pages/users/user-detail/detail-form/detail-form.module.ts similarity index 100% rename from console/src/app/pages/user-detail/detail-form/detail-form.module.ts rename to console/src/app/pages/users/user-detail/detail-form/detail-form.module.ts diff --git a/console/src/app/pages/user-detail/password/password.component.html b/console/src/app/pages/users/user-detail/password/password.component.html similarity index 99% rename from console/src/app/pages/user-detail/password/password.component.html rename to console/src/app/pages/users/user-detail/password/password.component.html index 625212b6ff..84bfb397ed 100644 --- a/console/src/app/pages/user-detail/password/password.component.html +++ b/console/src/app/pages/users/user-detail/password/password.component.html @@ -4,7 +4,7 @@ arrow_back - + arrow_back
diff --git a/console/src/app/pages/user-detail/password/password.component.scss b/console/src/app/pages/users/user-detail/password/password.component.scss similarity index 100% rename from console/src/app/pages/user-detail/password/password.component.scss rename to console/src/app/pages/users/user-detail/password/password.component.scss diff --git a/console/src/app/pages/user-detail/password/password.component.spec.ts b/console/src/app/pages/users/user-detail/password/password.component.spec.ts similarity index 100% rename from console/src/app/pages/user-detail/password/password.component.spec.ts rename to console/src/app/pages/users/user-detail/password/password.component.spec.ts diff --git a/console/src/app/pages/user-detail/password/password.component.ts b/console/src/app/pages/users/user-detail/password/password.component.ts similarity index 98% rename from console/src/app/pages/user-detail/password/password.component.ts rename to console/src/app/pages/users/user-detail/password/password.component.ts index 5260339281..9db217ba44 100644 --- a/console/src/app/pages/user-detail/password/password.component.ts +++ b/console/src/app/pages/users/user-detail/password/password.component.ts @@ -1,13 +1,12 @@ import { Component, OnInit } from '@angular/core'; import { AbstractControl, FormBuilder, FormGroup, Validators } from '@angular/forms'; import { ActivatedRoute } from '@angular/router'; +import { lowerCaseValidator, numberValidator, symbolValidator, upperCaseValidator } from 'src/app/pages/validators'; import { PasswordComplexityPolicy } from 'src/app/proto/generated/auth_pb'; import { AuthUserService } from 'src/app/services/auth-user.service'; import { MgmtUserService } from 'src/app/services/mgmt-user.service'; import { ToastService } from 'src/app/services/toast.service'; -import { lowerCaseValidator, numberValidator, symbolValidator, upperCaseValidator } from '../validators'; - function passwordConfirmValidator(c: AbstractControl): any { if (!c.parent || !c) { return; diff --git a/console/src/app/pages/user-detail/theme-setting/theme-setting.component.html b/console/src/app/pages/users/user-detail/theme-setting/theme-setting.component.html similarity index 100% rename from console/src/app/pages/user-detail/theme-setting/theme-setting.component.html rename to console/src/app/pages/users/user-detail/theme-setting/theme-setting.component.html diff --git a/console/src/app/pages/user-detail/theme-setting/theme-setting.component.scss b/console/src/app/pages/users/user-detail/theme-setting/theme-setting.component.scss similarity index 100% rename from console/src/app/pages/user-detail/theme-setting/theme-setting.component.scss rename to console/src/app/pages/users/user-detail/theme-setting/theme-setting.component.scss diff --git a/console/src/app/pages/user-detail/theme-setting/theme-setting.component.spec.ts b/console/src/app/pages/users/user-detail/theme-setting/theme-setting.component.spec.ts similarity index 100% rename from console/src/app/pages/user-detail/theme-setting/theme-setting.component.spec.ts rename to console/src/app/pages/users/user-detail/theme-setting/theme-setting.component.spec.ts diff --git a/console/src/app/pages/user-detail/theme-setting/theme-setting.component.ts b/console/src/app/pages/users/user-detail/theme-setting/theme-setting.component.ts similarity index 100% rename from console/src/app/pages/user-detail/theme-setting/theme-setting.component.ts rename to console/src/app/pages/users/user-detail/theme-setting/theme-setting.component.ts diff --git a/console/src/app/pages/user-detail/user-detail-routing.module.ts b/console/src/app/pages/users/user-detail/user-detail-routing.module.ts similarity index 100% rename from console/src/app/pages/user-detail/user-detail-routing.module.ts rename to console/src/app/pages/users/user-detail/user-detail-routing.module.ts diff --git a/console/src/app/pages/user-detail/user-detail.module.ts b/console/src/app/pages/users/user-detail/user-detail.module.ts similarity index 87% rename from console/src/app/pages/user-detail/user-detail.module.ts rename to console/src/app/pages/users/user-detail/user-detail.module.ts index 143ecd066b..441b363c62 100644 --- a/console/src/app/pages/user-detail/user-detail.module.ts +++ b/console/src/app/pages/users/user-detail/user-detail.module.ts @@ -1,5 +1,4 @@ import { CommonModule } from '@angular/common'; -import { HttpClient } from '@angular/common/http'; import { CUSTOM_ELEMENTS_SCHEMA, NgModule, NO_ERRORS_SCHEMA } from '@angular/core'; import { FormsModule, ReactiveFormsModule } from '@angular/forms'; import { MatButtonModule } from '@angular/material/button'; @@ -9,9 +8,8 @@ import { MatIconModule } from '@angular/material/icon'; import { MatInputModule } from '@angular/material/input'; import { MatProgressBarModule } from '@angular/material/progress-bar'; import { MatTooltipModule } from '@angular/material/tooltip'; -import { TranslateLoader, TranslateModule } from '@ngx-translate/core'; +import { TranslateModule } from '@ngx-translate/core'; import { QRCodeModule } from 'angularx-qrcode'; -import { HttpLoaderFactory } from 'src/app/app.module'; import { HasRoleModule } from 'src/app/directives/has-role/has-role.module'; import { CardModule } from 'src/app/modules/card/card.module'; import { ChangesModule } from 'src/app/modules/changes/changes.module'; @@ -61,13 +59,7 @@ import { UserMfaComponent } from './user-mfa/user-mfa.component'; MatProgressBarModule, MatTooltipModule, HasRoleModule, - TranslateModule.forChild({ - loader: { - provide: TranslateLoader, - useFactory: HttpLoaderFactory, - deps: [HttpClient], - }, - }), + TranslateModule, ], schemas: [CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA], }) diff --git a/console/src/app/pages/user-detail/user-detail/user-detail.component.html b/console/src/app/pages/users/user-detail/user-detail/user-detail.component.html similarity index 100% rename from console/src/app/pages/user-detail/user-detail/user-detail.component.html rename to console/src/app/pages/users/user-detail/user-detail/user-detail.component.html diff --git a/console/src/app/pages/user-detail/user-detail/user-detail.component.scss b/console/src/app/pages/users/user-detail/user-detail/user-detail.component.scss similarity index 100% rename from console/src/app/pages/user-detail/user-detail/user-detail.component.scss rename to console/src/app/pages/users/user-detail/user-detail/user-detail.component.scss diff --git a/console/src/app/pages/user-detail/user-detail/user-detail.component.spec.ts b/console/src/app/pages/users/user-detail/user-detail/user-detail.component.spec.ts similarity index 100% rename from console/src/app/pages/user-detail/user-detail/user-detail.component.spec.ts rename to console/src/app/pages/users/user-detail/user-detail/user-detail.component.spec.ts diff --git a/console/src/app/pages/user-detail/user-detail/user-detail.component.ts b/console/src/app/pages/users/user-detail/user-detail/user-detail.component.ts similarity index 100% rename from console/src/app/pages/user-detail/user-detail/user-detail.component.ts rename to console/src/app/pages/users/user-detail/user-detail/user-detail.component.ts diff --git a/console/src/app/pages/user-detail/user-mfa/user-mfa.component.html b/console/src/app/pages/users/user-detail/user-mfa/user-mfa.component.html similarity index 100% rename from console/src/app/pages/user-detail/user-mfa/user-mfa.component.html rename to console/src/app/pages/users/user-detail/user-mfa/user-mfa.component.html diff --git a/console/src/app/pages/user-detail/user-mfa/user-mfa.component.scss b/console/src/app/pages/users/user-detail/user-mfa/user-mfa.component.scss similarity index 100% rename from console/src/app/pages/user-detail/user-mfa/user-mfa.component.scss rename to console/src/app/pages/users/user-detail/user-mfa/user-mfa.component.scss diff --git a/console/src/app/pages/user-detail/user-mfa/user-mfa.component.spec.ts b/console/src/app/pages/users/user-detail/user-mfa/user-mfa.component.spec.ts similarity index 100% rename from console/src/app/pages/user-detail/user-mfa/user-mfa.component.spec.ts rename to console/src/app/pages/users/user-detail/user-mfa/user-mfa.component.spec.ts diff --git a/console/src/app/pages/user-detail/user-mfa/user-mfa.component.ts b/console/src/app/pages/users/user-detail/user-mfa/user-mfa.component.ts similarity index 100% rename from console/src/app/pages/user-detail/user-mfa/user-mfa.component.ts rename to console/src/app/pages/users/user-detail/user-mfa/user-mfa.component.ts diff --git a/console/src/app/pages/user-list/user-list-routing.module.ts b/console/src/app/pages/users/user-list/user-list-routing.module.ts similarity index 100% rename from console/src/app/pages/user-list/user-list-routing.module.ts rename to console/src/app/pages/users/user-list/user-list-routing.module.ts diff --git a/console/src/app/pages/user-list/user-list.component.html b/console/src/app/pages/users/user-list/user-list.component.html similarity index 98% rename from console/src/app/pages/user-list/user-list.component.html rename to console/src/app/pages/users/user-list/user-list.component.html index 5d25d3653c..fc294c67f6 100644 --- a/console/src/app/pages/user-list/user-list.component.html +++ b/console/src/app/pages/users/user-list/user-list.component.html @@ -78,7 +78,7 @@ + [routerLink]="['/users', row.id]"> diff --git a/console/src/app/pages/user-list/user-list.component.scss b/console/src/app/pages/users/user-list/user-list.component.scss similarity index 78% rename from console/src/app/pages/user-list/user-list.component.scss rename to console/src/app/pages/users/user-list/user-list.component.scss index dd53f8a615..8c1edac24d 100644 --- a/console/src/app/pages/user-list/user-list.component.scss +++ b/console/src/app/pages/users/user-list/user-list.component.scss @@ -50,6 +50,8 @@ h1 { width: 100%; td, th { + padding: 0 1rem; + &:first-child { padding-left: 0; padding-right: 1rem; @@ -60,19 +62,6 @@ h1 { } } - // tr { - // .avatar { - // filter: grayscale(100%); - // transition: filter .1s ease-in-out; - // } - - // &:hover { - // .avatar { - // filter: none; - // } - // } - // } - .data-row { cursor: pointer; &:hover { diff --git a/console/src/app/pages/user-list/user-list.component.spec.ts b/console/src/app/pages/users/user-list/user-list.component.spec.ts similarity index 100% rename from console/src/app/pages/user-list/user-list.component.spec.ts rename to console/src/app/pages/users/user-list/user-list.component.spec.ts diff --git a/console/src/app/pages/user-list/user-list.component.ts b/console/src/app/pages/users/user-list/user-list.component.ts similarity index 100% rename from console/src/app/pages/user-list/user-list.component.ts rename to console/src/app/pages/users/user-list/user-list.component.ts diff --git a/console/src/app/pages/user-list/user-list.module.ts b/console/src/app/pages/users/user-list/user-list.module.ts similarity index 79% rename from console/src/app/pages/user-list/user-list.module.ts rename to console/src/app/pages/users/user-list/user-list.module.ts index 923dfe4a07..f6bcac1122 100644 --- a/console/src/app/pages/user-list/user-list.module.ts +++ b/console/src/app/pages/users/user-list/user-list.module.ts @@ -1,5 +1,4 @@ import { CommonModule } from '@angular/common'; -import { HttpClient } from '@angular/common/http'; import { NgModule } from '@angular/core'; import { FormsModule } from '@angular/forms'; import { MatButtonModule } from '@angular/material/button'; @@ -10,8 +9,7 @@ import { MatPaginatorModule } from '@angular/material/paginator'; import { MatProgressSpinnerModule } from '@angular/material/progress-spinner'; import { MatTableModule } from '@angular/material/table'; import { MatTooltipModule } from '@angular/material/tooltip'; -import { TranslateLoader, TranslateModule } from '@ngx-translate/core'; -import { HttpLoaderFactory } from 'src/app/app.module'; +import { TranslateModule } from '@ngx-translate/core'; import { HasRoleModule } from 'src/app/directives/has-role/has-role.module'; import { AvatarModule } from 'src/app/modules/avatar/avatar.module'; import { CardModule } from 'src/app/modules/card/card.module'; @@ -40,13 +38,7 @@ import { UserListComponent } from './user-list.component'; MatProgressSpinnerModule, MatCheckboxModule, MatTooltipModule, - TranslateModule.forChild({ - loader: { - provide: TranslateLoader, - useFactory: HttpLoaderFactory, - deps: [HttpClient], - }, - }), + TranslateModule, ], exports: [ UserListComponent, diff --git a/console/src/app/pages/users/users-routing.module.ts b/console/src/app/pages/users/users-routing.module.ts new file mode 100644 index 0000000000..1774b7acec --- /dev/null +++ b/console/src/app/pages/users/users-routing.module.ts @@ -0,0 +1,27 @@ +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; +import { RoleGuard } from 'src/app/guards/role.guard'; + +import { AuthGuard } from '../../guards/auth.guard'; + +const routes: Routes = [ + { + path: 'all', + loadChildren: () => import('src/app/pages/users/user-list/user-list.module').then(m => m.UserListModule), + canActivate: [AuthGuard, RoleGuard], + data: { + roles: ['user.read'], + }, + }, + { + path: '', + loadChildren: () => import('src/app/pages/users/user-detail/user-detail.module').then(m => m.UserDetailModule), + canActivate: [AuthGuard], + }, +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], +}) +export class UsersRoutingModule { } diff --git a/console/src/app/pages/users/users.module.ts b/console/src/app/pages/users/users.module.ts new file mode 100644 index 0000000000..9a4242bbdc --- /dev/null +++ b/console/src/app/pages/users/users.module.ts @@ -0,0 +1,13 @@ +import { CommonModule } from '@angular/common'; +import { NgModule } from '@angular/core'; + +import { UsersRoutingModule } from './users-routing.module'; + +@NgModule({ + declarations: [], + imports: [ + CommonModule, + UsersRoutingModule, + ], +}) +export class UsersModule { } diff --git a/console/src/app/pages/user-detail/validators.ts b/console/src/app/pages/validators.ts similarity index 100% rename from console/src/app/pages/user-detail/validators.ts rename to console/src/app/pages/validators.ts diff --git a/console/src/app/services/project.service.ts b/console/src/app/services/project.service.ts index 2d313722bd..a0b98225f6 100644 --- a/console/src/app/services/project.service.ts +++ b/console/src/app/services/project.service.ts @@ -513,6 +513,29 @@ export class ProjectService { ); } + + public async DeactivateProjectGrant(id: string, projectId: string): Promise { + const req = new ProjectGrantID(); + req.setId(id); + req.setProjectId(projectId); + return await this.request( + c => c.deactivateProjectGrant, + req, + f => f, + ); + } + + public async ReactivateProjectGrant(id: string, projectId: string): Promise { + const req = new ProjectGrantID(); + req.setId(id); + req.setProjectId(projectId); + return await this.request( + c => c.reactivateProjectGrant, + req, + f => f, + ); + } + // ********* */ public async SearchProjectUserGrants( diff --git a/console/src/app/services/toast.service.ts b/console/src/app/services/toast.service.ts index 57ee20651d..01ecd427a5 100644 --- a/console/src/app/services/toast.service.ts +++ b/console/src/app/services/toast.service.ts @@ -34,7 +34,7 @@ export class ToastService { this.authService.authenticate(undefined, true, true); }); } else { - const actionObserver$ = this.showMessage(decodeURI(message), 'close', { duration: 5000 }); + this.showMessage(decodeURI(message), 'close', { duration: 3000 }); } } diff --git a/console/src/assets/i18n/de.json b/console/src/assets/i18n/de.json index 4be500c59b..27dc838a8c 100644 --- a/console/src/assets/i18n/de.json +++ b/console/src/assets/i18n/de.json @@ -48,7 +48,9 @@ "REMOVE":"Entfernen", "VERIFY":"Verifizieren", "FINISH":"Abschliessen", - "CHANGE":"Ändern" + "CHANGE":"Ändern", + "REACTIVATE":"Aktivieren", + "DEACTIVATE":"Deaktivieren" }, "ERRORS": { "REQUIRED": "Bitte fülle alle benötigten Felder aus!" @@ -246,11 +248,16 @@ "STATE":"Status" }, "DOMAINS": { + "NEW":"Domain hinzufügen", "TITLE":"Domains", "DESCRIPTION":"Konfiguriere die Domains mit denen sich deine Benutzer einloggen können.", "DELETE": { "TITLE":"Domain löschen?", "DESCRIPTION":"Du bist im Begriff eine Domain aus deiner Organisation zu löschen. Deine Benutzer können diese nach dem Löschen nicht mehr für den Login nutzen." + }, + "ADD": { + "TITLE":"Domain hinzufügen", + "DESCRIPTION":"Du bist im Begriff eine Domain, Ihrer Organisation hinzuzufügen. Deine Benutzer können diese nach dieser erfolgreichen Aktion für den Login nutzen." } }, "STATE": { @@ -264,7 +271,7 @@ }, "POLICY": { "TITLE":"Richtlinen entdecken", - "DESCRIPTION":"Vorgefertigte Richtlinien, die dir Zeit spart und deine Sicherheit verbessern.", + "DESCRIPTION":"Vorgefertigte Richtlinien, die dir Zeit sparen und deine Sicherheit verbessern.", "PWD_COMPLEXITY": { "TITLE":"Passwort Komplexität", "DESCRIPTION":"Stellt sicher, dass alle festgelegten Passwörter einem bestimmten Muster entsprechen", @@ -308,7 +315,13 @@ "MAXAGEDAYS":"Maximale Gültigkeit in Tagen", "USERLOGINMUSTBEDOMAIN":"User Login must be Domain" }, - "DELETE":"Richtlinie entfernen" + "DELETE":"Richtlinie entfernen / zurücksetzen" + }, + "TOAST": { + "DEACTIVATED":"Organisation deaktiviert!", + "REACTIVATED":"Organisation reaktiviert!", + "DOMAINADDED":"Domain hinzugefügt!", + "DOMAINREMOVED":"Domain entfernt!" } }, "ORG_DETAIL": { @@ -362,7 +375,17 @@ "ALL": "Alle", "CREATEDON":"Erstellt am", "LASTMODIFIED":"Zuletzt verändert am", - "ADDNEW":"Neues Projekt erstellen" + "ADDNEW":"Neues Projekt erstellen", + "DIALOG": { + "REACTIVATE": { + "TITLE":"Projekt reaktivieren", + "DESCRIPTION":"Wollen Sie das Project wirklich reaktivieren?" + }, + "DEACTIVATE": { + "TITLE":"Projekt deaktivieren", + "DESCRIPTION":"Wollen Sie das Project wirklich deaktivieren?" + } + } }, "STATE": { "TITLE":"Status", @@ -407,8 +430,12 @@ "FOR_ORG":"The grant wird erstellt für:" }, "DETAIL": { - "TITLE":"Berechtigte Manager der Organisation", - "DESC":"Dies sind die Manager der berechtigten Organisation. Wähle die Benutzer, die Zugriff zum editieren der jeweiligen Zugänge erhalten sollen." + "TITLE":"Organisationsberechtigung", + "DESC":"Hier können Sie die Eigenschaften der gewählten Organisationsberechtigung prüfen und editieren!", + "MEMBERTITLE":"Berechtigte Manager der Organisation", + "MEMBERDESC":"Dies sind die Manager der berechtigten Organisation. Wähle die Benutzer, die Zugriff zum editieren der jeweiligen Zugänge erhalten sollen.", + "PROJECTNAME":"Projekt Name", + "RESOURCEOWNER":"Besitzer" }, "SHOWDETAIL":"Zeige Details", "USER":"Benutzer", @@ -461,7 +488,9 @@ "MEMBERSADDED": "Manager hinzugefügt!", "MEMBERADDED": "Manager hinzugefügt!", "ROLEREMOVED":"Rolle entfernt!", - "ROLECHANGED":"Rolle verändert!" + "ROLECHANGED":"Rolle verändert!", + "REACTIVATED":"Reaktiviert!", + "DEACTIVATED":"Deaktiviert!" } }, "APP": { diff --git a/console/src/assets/i18n/en.json b/console/src/assets/i18n/en.json index af31622d20..e599d46034 100644 --- a/console/src/assets/i18n/en.json +++ b/console/src/assets/i18n/en.json @@ -48,7 +48,9 @@ "REMOVE":"Remove", "VERIFY":"Verify", "FINISH":"Finish", - "CHANGE":"Change" + "CHANGE":"Change", + "REACTIVATE":"Aktivieren", + "DEACTIVATE":"Deaktivieren" }, "ERRORS": { "REQUIRED": "Some required fields are missing!" @@ -246,11 +248,16 @@ "STATE":"State" }, "DOMAINS": { + "NEW":"Add Domain", "TITLE":"Domains", "DESCRIPTION":"Configure your domains. This domain can be used to login with your users.", "DELETE": { "TITLE":"Delete domain?", "DESCRIPTION":"You are about to delete one of your domains. Note that your users can no longer use this domain for their logins." + }, + "ADD": { + "TITLE":"Add domain", + "DESCRIPTION":"You are about to add a domain for your organization. After successful process, you users will be able to use the domain for their login." } }, "STATE": { @@ -308,7 +315,13 @@ "MAXAGEDAYS":"Max Age in days", "USERLOGINMUSTBEDOMAIN":"User Login must be Domain" }, - "DELETE":"Uninstall Policy" + "DELETE":"Uninstall / Reset Policy" + }, + "TOAST": { + "DEACTIVATED":"Organization deactivated!", + "REACTIVATED":"Organization reactivated!", + "DOMAINADDED":"Added domain!", + "DOMAINREMOVED":"Removed domain!" } }, "ORG_DETAIL": { @@ -362,7 +375,17 @@ "ALL": "All", "CREATEDON":"Created on", "LASTMODIFIED":"Last modified on", - "ADDNEW":"Create new project" + "ADDNEW":"Create new project", + "DIALOG": { + "REACTIVATE": { + "TITLE":"Reactivate project", + "DESCRIPTION":"Do you really want to ractivate your project?" + }, + "DEACTIVATE": { + "TITLE":"Deactivate project", + "DESCRIPTION":"Do you really want to deactivate your project?" + } + } }, "STATE": { "TITLE":"State", @@ -408,7 +431,9 @@ }, "DETAIL": { "TITLE":"Managers of the granted organisation", - "DESC":"These are the Managers of the granted organisation. You can select which users are allowed to maintain control of the project." + "DESC":"These are the Managers of the granted organisation. You can select which users are allowed to maintain control of the project.", + "PROJECTNAME":"Project Name", + "RESOURCEOWNER":"Resource Owner" }, "SHOWDETAIL":"Show Details", "USER":"User", @@ -461,7 +486,9 @@ "MEMBERSADDED": "Managers added!", "MEMBERADDED": "Manager added!", "ROLEREMOVED":"Role removed!", - "ROLECHANGED":"Role changed!" + "ROLECHANGED":"Role changed!", + "REACTIVATED":"Reaktiviert!", + "DEACTIVATED":"Deaktiviert!" } }, "APP": { diff --git a/console/src/styles.scss b/console/src/styles.scss index 00942dbfbb..c30554e55e 100644 --- a/console/src/styles.scss +++ b/console/src/styles.scss @@ -55,20 +55,20 @@ $caos-dark-brand: ( ); $caos-light-brand: ( - 50: mat-color($mat-grey, 50), - 100: mat-color($mat-grey, 100), - 200: mat-color($mat-grey, 200), - 300: mat-color($mat-grey, 300), - 400: mat-color($mat-grey, 400), - 500: mat-color($mat-grey, 500), - 600: mat-color($mat-grey, 600), - 700: mat-color($mat-grey, 700), - 800: mat-color($mat-grey, 800), - 900: mat-color($mat-grey, 900), - A100: mat-color($mat-grey, A100), - A200: mat-color($mat-grey, A200), - A300: mat-color($mat-grey, A300), - A400: mat-color($mat-grey, A400), + 50: #ffffff, + 100: #dde6f3, + 200: #b4c9e4, + 300: #7fa3d1, + 400: #6992c9, + 500: #5282c1, + 600: #4072b4, + 700: #38649d, + 800: #305687, + 900: #284770, + A100: #ffffff, + A200: #dde6f3, + A300: #6992c9, + A400: #38649d, A500:#333333, A600: #000000, A700: #8795a1, @@ -125,6 +125,24 @@ $custom-typography: mat-typography-config( background-color: white; transition: background-color .5s ease-in-out; } + + ::-webkit-scrollbar-track { + -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3); + box-shadow: inset 0 0 6px rgba(0,0,0,0.3); + background-color: #fafafa; + border-radius: 8px; + } + + ::-webkit-scrollbar { + width: 6px; + height: 6px; + background-color: #fafafa; + } + + ::-webkit-scrollbar-thumb { + background-color: #5282c1; + border-radius: 8px; + } } .dark-theme { @@ -139,6 +157,24 @@ $custom-typography: mat-typography-config( .mat-dialog-container { background-color: #2d2e30; } + + ::-webkit-scrollbar-track { + -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3); + box-shadow: inset 0 0 6px rgba(0,0,0,0.3); + background-color: #2d2e30; + border-radius: 8px; + } + + ::-webkit-scrollbar { + width: 6px; + height: 6px; + background-color: #2d2e30; + } + + ::-webkit-scrollbar-thumb { + background-color: #5282c1; + border-radius: 8px; + } } .mat-dialog-container { diff --git a/console/src/styles/table.scss b/console/src/styles/table.scss index 86de6b75dd..2cb4ee1b91 100644 --- a/console/src/styles/table.scss +++ b/console/src/styles/table.scss @@ -8,11 +8,11 @@ .mat-table, mat-paginator { - background-color: $secondary-dark !important; + background-color: inherit !important; transition: background-color .5s ease-in-out; &.background-style { - background-color: $primary-dark !important; + background-color: inherit !important; } }