From ad7fa71e76d0b9175a340c160af94babd528f87f Mon Sep 17 00:00:00 2001
From: Jordan Aasen <166539328+jaasen-livefront@users.noreply.github.com>
Date: Fri, 25 Oct 2024 13:04:36 -0700
Subject: [PATCH] [PM-13931] - UI - All applications report table (#11678)
* add remaining components to access intelligence page
* Revert "add remaining components to access intelligence page"
This reverts commit cb8e8266561e32baa34a82241a05c5d38f1cdd97.
* add remaining access intelligence table components
---
.../no-priority-apps.component.html | 15 ++++++++
.../no-priority-apps.component.ts | 15 ++++++++
.../password-health-members.component.html | 28 ++++++++++++++-
.../password-health-members.component.ts | 36 ++++++++++---------
.../password-health.component.html | 2 +-
apps/web/src/locales/en/messages.json | 12 +++++++
libs/tools/card/src/card.component.ts | 2 +-
7 files changed, 91 insertions(+), 19 deletions(-)
create mode 100644 apps/web/src/app/tools/access-intelligence/no-priority-apps.component.html
create mode 100644 apps/web/src/app/tools/access-intelligence/no-priority-apps.component.ts
diff --git a/apps/web/src/app/tools/access-intelligence/no-priority-apps.component.html b/apps/web/src/app/tools/access-intelligence/no-priority-apps.component.html
new file mode 100644
index 0000000000..9c3b4f4891
--- /dev/null
+++ b/apps/web/src/app/tools/access-intelligence/no-priority-apps.component.html
@@ -0,0 +1,15 @@
+
+
+
+ {{ "noPriorityApplicationsTitle" | i18n }}
+
+
+
+
+ {{ "noPriorityApplicationsDescription" | i18n }}
+
+
+
+
+
+
diff --git a/apps/web/src/app/tools/access-intelligence/no-priority-apps.component.ts b/apps/web/src/app/tools/access-intelligence/no-priority-apps.component.ts
new file mode 100644
index 0000000000..e4e54ca2f1
--- /dev/null
+++ b/apps/web/src/app/tools/access-intelligence/no-priority-apps.component.ts
@@ -0,0 +1,15 @@
+import { CommonModule } from "@angular/common";
+import { Component } from "@angular/core";
+
+import { JslibModule } from "@bitwarden/angular/jslib.module";
+import { ButtonModule, NoItemsModule, Icons } from "@bitwarden/components";
+
+@Component({
+ standalone: true,
+ selector: "tools-no-priority-apps",
+ templateUrl: "no-priority-apps.component.html",
+ imports: [ButtonModule, CommonModule, JslibModule, NoItemsModule],
+})
+export class NoPriorityAppsComponent {
+ noItemsIcon = Icons.NoResults;
+}
diff --git a/apps/web/src/app/tools/access-intelligence/password-health-members.component.html b/apps/web/src/app/tools/access-intelligence/password-health-members.component.html
index f902011110..885c21f0a2 100644
--- a/apps/web/src/app/tools/access-intelligence/password-health-members.component.html
+++ b/apps/web/src/app/tools/access-intelligence/password-health-members.component.html
@@ -8,7 +8,33 @@
>
{{ "loading" | i18n }}
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/web/src/app/tools/access-intelligence/password-health-members.component.ts b/apps/web/src/app/tools/access-intelligence/password-health-members.component.ts
index 30c9ad8dba..17b2456406 100644
--- a/apps/web/src/app/tools/access-intelligence/password-health-members.component.ts
+++ b/apps/web/src/app/tools/access-intelligence/password-health-members.component.ts
@@ -1,10 +1,9 @@
-import { CommonModule } from "@angular/common";
import { Component, DestroyRef, inject, OnInit } from "@angular/core";
import { takeUntilDestroyed } from "@angular/core/rxjs-interop";
+import { FormControl, FormsModule } from "@angular/forms";
import { ActivatedRoute } from "@angular/router";
-import { map } from "rxjs";
+import { debounceTime, map } from "rxjs";
-import { JslibModule } from "@bitwarden/angular/jslib.module";
// eslint-disable-next-line no-restricted-imports
import { PasswordHealthService } from "@bitwarden/bit-common/tools/reports/access-intelligence";
import { AuditService } from "@bitwarden/common/abstractions/audit.service";
@@ -12,33 +11,31 @@ import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.servic
import { PasswordStrengthServiceAbstraction } from "@bitwarden/common/tools/password-strength";
import { CipherService } from "@bitwarden/common/vault/abstractions/cipher.service";
import { CipherView } from "@bitwarden/common/vault/models/view/cipher.view";
-import {
- BadgeModule,
- BadgeVariant,
- ContainerComponent,
- TableDataSource,
- TableModule,
-} from "@bitwarden/components";
+import { BadgeVariant, SearchModule, TableDataSource, TableModule } from "@bitwarden/components";
+import { CardComponent } from "@bitwarden/tools-card";
-// eslint-disable-next-line no-restricted-imports
import { HeaderModule } from "../../layouts/header/header.module";
// eslint-disable-next-line no-restricted-imports
+import { SharedModule } from "../../shared";
import { OrganizationBadgeModule } from "../../vault/individual-vault/organization-badge/organization-badge.module";
// eslint-disable-next-line no-restricted-imports
import { PipesModule } from "../../vault/individual-vault/pipes/pipes.module";
+import { NoPriorityAppsComponent } from "./no-priority-apps.component";
+
@Component({
standalone: true,
selector: "tools-password-health-members",
templateUrl: "password-health-members.component.html",
imports: [
- BadgeModule,
+ CardComponent,
OrganizationBadgeModule,
- CommonModule,
- ContainerComponent,
PipesModule,
- JslibModule,
HeaderModule,
+ SearchModule,
+ FormsModule,
+ NoPriorityAppsComponent,
+ SharedModule,
TableModule,
],
providers: [PasswordHealthService],
@@ -56,6 +53,8 @@ export class PasswordHealthMembersComponent implements OnInit {
loading = true;
+ protected searchControl = new FormControl("", { nonNullable: true });
+
private destroyRef = inject(DestroyRef);
constructor(
@@ -64,7 +63,11 @@ export class PasswordHealthMembersComponent implements OnInit {
protected auditService: AuditService,
protected i18nService: I18nService,
protected activatedRoute: ActivatedRoute,
- ) {}
+ ) {
+ this.searchControl.valueChanges
+ .pipe(debounceTime(200), takeUntilDestroyed())
+ .subscribe((v) => (this.dataSource.filter = v));
+ }
ngOnInit() {
this.activatedRoute.paramMap
@@ -89,6 +92,7 @@ export class PasswordHealthMembersComponent implements OnInit {
await passwordHealthService.generateReport();
this.dataSource.data = passwordHealthService.reportCiphers;
+
this.exposedPasswordMap = passwordHealthService.exposedPasswordMap;
this.passwordStrengthMap = passwordHealthService.passwordStrengthMap;
this.passwordUseMap = passwordHealthService.passwordUseMap;
diff --git a/apps/web/src/app/tools/access-intelligence/password-health.component.html b/apps/web/src/app/tools/access-intelligence/password-health.component.html
index 3245970644..5b1fe4610d 100644
--- a/apps/web/src/app/tools/access-intelligence/password-health.component.html
+++ b/apps/web/src/app/tools/access-intelligence/password-health.component.html
@@ -8,7 +8,7 @@
>
{{ "loading" | i18n }}
-
+
diff --git a/apps/web/src/locales/en/messages.json b/apps/web/src/locales/en/messages.json
index d1c5bd97f3..9ea33149de 100644
--- a/apps/web/src/locales/en/messages.json
+++ b/apps/web/src/locales/en/messages.json
@@ -53,6 +53,18 @@
}
}
},
+ "noPriorityApplicationsTitle": {
+ "message": "You haven’t marked any applications as a priority"
+ },
+ "noPriorityApplicationsDescription": {
+ "message": "Select your most critical applications to discover at-risk passwords, and notify users to change those passwords."
+ },
+ "markPriorityApps": {
+ "message": "Mark priority apps"
+ },
+ "markAppAsCritical": {
+ "message": "Mark app as critical"
+ },
"application": {
"message": "Application"
},
diff --git a/libs/tools/card/src/card.component.ts b/libs/tools/card/src/card.component.ts
index 9305246c58..85db7eaa7b 100644
--- a/libs/tools/card/src/card.component.ts
+++ b/libs/tools/card/src/card.component.ts
@@ -11,7 +11,7 @@ import { TypographyModule } from "@bitwarden/components";
imports: [CommonModule, TypographyModule, JslibModule],
host: {
class:
- "tw-box-border tw-bg-background tw-block tw-text-main tw-border-solid tw-border tw-border-secondary-300 tw-border [&:not(bit-layout_*)]:tw-rounded-lg tw-p-6",
+ "tw-box-border tw-bg-background tw-block tw-text-main tw-border-solid tw-border tw-border-secondary-300 tw-border [&:not(bit-layout_*)]:tw-rounded-lg tw-rounded-lg tw-p-6",
},
})
export class CardComponent {