diff --git a/apps/web/src/app/vault/components/vault-items/vault-items.component.ts b/apps/web/src/app/vault/components/vault-items/vault-items.component.ts index 11da889112c..449345b0d5d 100644 --- a/apps/web/src/app/vault/components/vault-items/vault-items.component.ts +++ b/apps/web/src/app/vault/components/vault-items/vault-items.component.ts @@ -106,7 +106,7 @@ export class VaultItemsComponent { } const organization = this.allOrganizations.find((o) => o.id === collection.organizationId); - return collection.canEdit(organization); + return collection.canEdit(organization, this.flexibleCollectionsEnabled); } protected canDeleteCollection(collection: CollectionView): boolean { diff --git a/apps/web/src/app/vault/core/views/collection-admin.view.ts b/apps/web/src/app/vault/core/views/collection-admin.view.ts index f773fbc4934..5a59d703f73 100644 --- a/apps/web/src/app/vault/core/views/collection-admin.view.ts +++ b/apps/web/src/app/vault/core/views/collection-admin.view.ts @@ -31,8 +31,12 @@ export class CollectionAdminView extends CollectionView { this.assigned = response.assigned; } - override canEdit(org: Organization): boolean { - return org?.canEditAnyCollection || (org?.canEditAssignedCollections && this.assigned); + override canEdit(org: Organization, flexibleCollectionsEnabled: boolean): boolean { + if (flexibleCollectionsEnabled) { + return org?.canEditAnyCollection; + } else { + return org?.canEditAnyCollection || (org?.canEditAssignedCollections && this.assigned); + } } override canDelete(org: Organization, flexibleCollectionsEnabled: boolean): boolean { diff --git a/apps/web/src/app/vault/individual-vault/vault-header/vault-header.component.ts b/apps/web/src/app/vault/individual-vault/vault-header/vault-header.component.ts index 4b7d708c620..3164126caf9 100644 --- a/apps/web/src/app/vault/individual-vault/vault-header/vault-header.component.ts +++ b/apps/web/src/app/vault/individual-vault/vault-header/vault-header.component.ts @@ -143,7 +143,7 @@ export class VaultHeaderComponent { const organization = this.organizations.find( (o) => o.id === this.collection?.node.organizationId ); - return this.collection.node.canEdit(organization); + return this.collection.node.canEdit(organization, this.flexibleCollectionsEnabled); } async editCollection(tab: CollectionDialogTabType): Promise { diff --git a/apps/web/src/app/vault/org-vault/vault-header/vault-header.component.ts b/apps/web/src/app/vault/org-vault/vault-header/vault-header.component.ts index 3272b3588eb..ec7bb78519f 100644 --- a/apps/web/src/app/vault/org-vault/vault-header/vault-header.component.ts +++ b/apps/web/src/app/vault/org-vault/vault-header/vault-header.component.ts @@ -152,7 +152,7 @@ export class VaultHeaderComponent { } // Otherwise, check if we can edit the specified collection - return this.collection.node.canEdit(this.organization); + return this.collection.node.canEdit(this.organization, this.flexibleCollectionsEnabled); } addCipher() { diff --git a/libs/common/src/admin-console/models/domain/organization.ts b/libs/common/src/admin-console/models/domain/organization.ts index 068ce6d45aa..54d4be46d2a 100644 --- a/libs/common/src/admin-console/models/domain/organization.ts +++ b/libs/common/src/admin-console/models/domain/organization.ts @@ -184,14 +184,26 @@ export class Organization { return this.canEditAnyCollection || this.canDeleteAnyCollection; } + /** + * @deprecated + * This is deprecated with the introduction of Flexible Collections. + */ get canEditAssignedCollections() { return this.isManager || this.permissions.editAssignedCollections; } + /** + * @deprecated + * This is deprecated with the introduction of Flexible Collections. + */ get canDeleteAssignedCollections() { return this.isManager || this.permissions.deleteAssignedCollections; } + /** + * @deprecated + * This is deprecated with the introduction of Flexible Collections. + */ get canViewAssignedCollections() { return this.canDeleteAssignedCollections || this.canEditAssignedCollections; } diff --git a/libs/common/src/vault/models/view/collection.view.ts b/libs/common/src/vault/models/view/collection.view.ts index 48cacb7b556..9aaa497e5f4 100644 --- a/libs/common/src/vault/models/view/collection.view.ts +++ b/libs/common/src/vault/models/view/collection.view.ts @@ -32,13 +32,17 @@ export class CollectionView implements View, ITreeNodeObject { } // For editing collection details, not the items within it. - canEdit(org: Organization): boolean { + canEdit(org: Organization, flexibleCollectionsEnabled: boolean): boolean { if (org.id !== this.organizationId) { throw new Error( "Id of the organization provided does not match the org id of the collection." ); } - return org?.canEditAnyCollection || org?.canEditAssignedCollections; + if (flexibleCollectionsEnabled) { + return org?.canEditAnyCollection || this.manage; + } else { + return org?.canEditAnyCollection || org?.canEditAssignedCollections; + } } // For deleting a collection, not the items within it.