mirror of
https://github.com/bitwarden/browser
synced 2025-12-15 07:43:35 +00:00
* chore: remove fc v1 from org.canEditAnyCollection and update callers, refs PM-10294 * chore: remove fc v1 from collectionView.canEdit and update callers, refs PM-10294 * chore: remove fc v1 from organization.canEditAllCiphers and update callers, refs PM-10294 * chore: remove fc v1 from canDeleteAnyCollection, collection views, update callers, refs PM-10294 * chore: remove fc v1 from canEditUser/GroupAccess, refs PM-10294 * chore: remove fc v1 from canViewCollectionInfo, refs PM-10294 * chore: remove fc v1 from account component, refs PM-10294 * fix: remove fc v1 from collections component, refs PM-10294 * fix: update vault-items component, refs PM-10294 * fix: remove fc v1 from collection-dialog and collections components, refs PM-10294 * chore: remove ConfigService from group-add-edit and account components, refs PM-10294 * chore: change canEditAnyCollection to getter and update callers, refs PM-10294 * chore: change canEditUnmanagedCollections to getter and update callers, refs PM-10294 * chore: change canDeleteAnyCollection to getter and update callers, refs PM-10294 * chore: remove deprecated observable and update comments with v1, refs PM-10294 * chore: remove ununsed ConfigService from collection-dialog component, refs PM-10294 * chore: remove final fc v1 ref for vault-collection-row, refs PM-10294
97 lines
3.0 KiB
TypeScript
97 lines
3.0 KiB
TypeScript
import { Jsonify } from "type-fest";
|
|
|
|
import { Organization } from "../../../admin-console/models/domain/organization";
|
|
import { View } from "../../../models/view/view";
|
|
import { Collection } from "../domain/collection";
|
|
import { ITreeNodeObject } from "../domain/tree-node";
|
|
import { CollectionAccessDetailsResponse } from "../response/collection.response";
|
|
|
|
export const NestingDelimiter = "/";
|
|
|
|
export class CollectionView implements View, ITreeNodeObject {
|
|
id: string = null;
|
|
organizationId: string = null;
|
|
name: string = null;
|
|
externalId: string = null;
|
|
// readOnly applies to the items within a collection
|
|
readOnly: boolean = null;
|
|
hidePasswords: boolean = null;
|
|
manage: boolean = null;
|
|
assigned: boolean = null;
|
|
|
|
constructor(c?: Collection | CollectionAccessDetailsResponse) {
|
|
if (!c) {
|
|
return;
|
|
}
|
|
|
|
this.id = c.id;
|
|
this.organizationId = c.organizationId;
|
|
this.externalId = c.externalId;
|
|
if (c instanceof Collection) {
|
|
this.readOnly = c.readOnly;
|
|
this.hidePasswords = c.hidePasswords;
|
|
this.manage = c.manage;
|
|
this.assigned = true;
|
|
}
|
|
if (c instanceof CollectionAccessDetailsResponse) {
|
|
this.assigned = c.assigned;
|
|
}
|
|
}
|
|
|
|
canEditItems(org: Organization, restrictProviderAccess: boolean): boolean {
|
|
if (org != null && org.id !== this.organizationId) {
|
|
throw new Error(
|
|
"Id of the organization provided does not match the org id of the collection.",
|
|
);
|
|
}
|
|
|
|
return (
|
|
org?.canEditAllCiphers(restrictProviderAccess) ||
|
|
this.manage ||
|
|
(this.assigned && !this.readOnly)
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Returns true if the user can edit a collection (including user and group access) from the individual vault.
|
|
* Does not include admin permissions - see {@link CollectionAdminView.canEdit}.
|
|
*/
|
|
canEdit(org: Organization): boolean {
|
|
if (org != null && org.id !== this.organizationId) {
|
|
throw new Error(
|
|
"Id of the organization provided does not match the org id of the collection.",
|
|
);
|
|
}
|
|
|
|
return this.manage;
|
|
}
|
|
|
|
/**
|
|
* Returns true if the user can delete a collection from the individual vault.
|
|
* Does not include admin permissions - see {@link CollectionAdminView.canDelete}.
|
|
*/
|
|
canDelete(org: Organization): boolean {
|
|
if (org != null && org.id !== this.organizationId) {
|
|
throw new Error(
|
|
"Id of the organization provided does not match the org id of the collection.",
|
|
);
|
|
}
|
|
|
|
const canDeleteManagedCollections = !org?.limitCollectionCreationDeletion || org.isAdmin;
|
|
|
|
// Only use individual permissions, not admin permissions
|
|
return canDeleteManagedCollections && this.manage;
|
|
}
|
|
|
|
/**
|
|
* Returns true if the user can view collection info and access in a read-only state from the individual vault
|
|
*/
|
|
canViewCollectionInfo(org: Organization | undefined): boolean {
|
|
return false;
|
|
}
|
|
|
|
static fromJSON(obj: Jsonify<CollectionView>) {
|
|
return Object.assign(new CollectionView(new Collection()), obj);
|
|
}
|
|
}
|