mirror of
https://github.com/bitwarden/browser
synced 2025-12-18 17:23:37 +00:00
* chore: organization.ts, remove refs to flexibleCollections and isManager, refs AC-2647 * chore: clean up callers of removed methods from organization.ts, refs AC-2647 * chore: access-selector, remove fc input and update permissionList param, refs AC-2647 * chore: update permissionList caller, update group-add-edit fc refs, and remove accessAll, refs AC-2647 * chore: update member-dialog fc callers, refs AC-2647 * chore: update bulk-collections-dialog fc callers, refs AC-2647 * chore: update collection-dialog fc callers, refs AC-2647 * chore: update simple fc caller to misc files, refs AC-2647 * chore: update member-dialog fc callers, refs AC-2647 * chore: remove accessAll references and update callers, refs AC-2647 * chore: update comment to specify v1 usage, refs AC-2647 * chore: remove unused message keys and code calls to use those messages, refs AC-2647 * chore: remove readonly false from access-selector model map function, refs AC-2647
124 lines
3.9 KiB
TypeScript
124 lines
3.9 KiB
TypeScript
import { Component, EventEmitter, Input, Output } from "@angular/core";
|
|
|
|
import { Organization } from "@bitwarden/common/admin-console/models/domain/organization";
|
|
import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service";
|
|
import { CollectionView } from "@bitwarden/common/vault/models/view/collection.view";
|
|
|
|
import { GroupView } from "../../../admin-console/organizations/core";
|
|
import { CollectionAdminView } from "../../core/views/collection-admin.view";
|
|
import { Unassigned } from "../../individual-vault/vault-filter/shared/models/routed-vault-filter.model";
|
|
|
|
import {
|
|
convertToPermission,
|
|
getPermissionList,
|
|
} from "./../../../admin-console/organizations/shared/components/access-selector/access-selector.models";
|
|
import { VaultItemEvent } from "./vault-item-event";
|
|
import { RowHeightClass } from "./vault-items.component";
|
|
|
|
@Component({
|
|
selector: "tr[appVaultCollectionRow]",
|
|
templateUrl: "vault-collection-row.component.html",
|
|
})
|
|
export class VaultCollectionRowComponent {
|
|
protected RowHeightClass = RowHeightClass;
|
|
protected Unassigned = "unassigned";
|
|
|
|
@Input() disabled: boolean;
|
|
@Input() collection: CollectionView;
|
|
@Input() showOwner: boolean;
|
|
@Input() showCollections: boolean;
|
|
@Input() showGroups: boolean;
|
|
@Input() canEditCollection: boolean;
|
|
@Input() canDeleteCollection: boolean;
|
|
@Input() canViewCollectionInfo: boolean;
|
|
@Input() organizations: Organization[];
|
|
@Input() groups: GroupView[];
|
|
@Input() showPermissionsColumn: boolean;
|
|
@Input() flexibleCollectionsV1Enabled: boolean;
|
|
@Input() restrictProviderAccess: boolean;
|
|
|
|
@Output() onEvent = new EventEmitter<VaultItemEvent>();
|
|
|
|
@Input() checked: boolean;
|
|
@Output() checkedToggled = new EventEmitter<void>();
|
|
|
|
constructor(private i18nService: I18nService) {}
|
|
|
|
get collectionGroups() {
|
|
if (!(this.collection instanceof CollectionAdminView)) {
|
|
return [];
|
|
}
|
|
|
|
return this.collection.groups;
|
|
}
|
|
|
|
get organization() {
|
|
return this.organizations.find((o) => o.id === this.collection.organizationId);
|
|
}
|
|
|
|
get showAddAccess() {
|
|
if (!this.flexibleCollectionsV1Enabled) {
|
|
return false;
|
|
}
|
|
|
|
if (this.collection.id == Unassigned) {
|
|
return false;
|
|
}
|
|
|
|
// Only show AddAccess when viewing the Org vault (implied by CollectionAdminView)
|
|
if (this.collection instanceof CollectionAdminView) {
|
|
// Only show AddAccess if unmanaged and allowAdminAccessToAllCollectionItems is disabled
|
|
return (
|
|
!this.organization.allowAdminAccessToAllCollectionItems &&
|
|
this.collection.unmanaged &&
|
|
this.organization.canEditUnmanagedCollections()
|
|
);
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
get permissionText() {
|
|
if (
|
|
this.collection.id == Unassigned &&
|
|
this.organization?.canEditUnassignedCiphers(this.restrictProviderAccess)
|
|
) {
|
|
return this.i18nService.t("canEdit");
|
|
}
|
|
if ((this.collection as CollectionAdminView).assigned) {
|
|
const permissionList = getPermissionList();
|
|
return this.i18nService.t(
|
|
permissionList.find((p) => p.perm === convertToPermission(this.collection))?.labelId,
|
|
);
|
|
}
|
|
return this.i18nService.t("noAccess");
|
|
}
|
|
|
|
get permissionTooltip() {
|
|
if (this.collection.id == Unassigned) {
|
|
return this.i18nService.t("collectionAdminConsoleManaged");
|
|
}
|
|
return "";
|
|
}
|
|
|
|
protected edit(readonly: boolean) {
|
|
this.onEvent.next({ type: "editCollection", item: this.collection, readonly: readonly });
|
|
}
|
|
|
|
protected access(readonly: boolean) {
|
|
this.onEvent.next({ type: "viewCollectionAccess", item: this.collection, readonly: readonly });
|
|
}
|
|
|
|
protected deleteCollection() {
|
|
this.onEvent.next({ type: "delete", items: [{ collection: this.collection }] });
|
|
}
|
|
|
|
protected get showCheckbox() {
|
|
if (this.flexibleCollectionsV1Enabled) {
|
|
return this.collection?.id !== Unassigned;
|
|
}
|
|
|
|
return this.canDeleteCollection;
|
|
}
|
|
}
|