-
Notifications
You must be signed in to change notification settings - Fork 1.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[PM-11162] Assign To Collections Permission Update #11367
base: main
Are you sure you want to change the base?
Conversation
Codecov ReportAttention: Patch coverage is
✅ All tests successful. No failed tests found. Additional details and impacted files@@ Coverage Diff @@
## main #11367 +/- ##
==========================================
- Coverage 34.38% 34.38% -0.01%
==========================================
Files 2950 2950
Lines 90416 90437 +21
Branches 16973 16980 +7
==========================================
+ Hits 31091 31093 +2
- Misses 56861 56881 +20
+ Partials 2464 2463 -1 ☔ View full report in Codecov by Sentry. |
Great job, no security vulnerabilities found in this Pull Request |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The change to vault-items
looks good!
However, we need to make a similar change to the item-details-section.component
for the new CipherForm. It also allows users to modify a cipher's collections without the "Assign To Collections" dialog so we need to adjust that component to disable the collections control when !cipher.viewPassword
return org.id === this.originalCipherView.organizationId; | ||
}); | ||
|
||
const filteredCollections = this.originalCipherView.collectionIds.find((id) => { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this.originalCipherView
can be null when creating a new cipher and this will throw.
filteredCollections?.length > 0 || | ||
(this.originalCipherView.edit && this.originalCipherView.viewPassword) | ||
) { | ||
this.showCollectionsControl = true; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
libs/vault/src/cipher-form/components/item-details/item-details-section.component.ts
Show resolved
Hide resolved
…ot remove assign to collections based on permissions
libs/angular/src/admin-console/components/collections.component.ts
Outdated
Show resolved
Hide resolved
if (cipher?.organizationId == null) { | ||
this.canAssignCollections = true; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't follow this - if the cipher isn't in an organization, you can't assign it to a collection.
libs/angular/src/admin-console/components/collections.component.ts
Outdated
Show resolved
Hide resolved
libs/angular/src/admin-console/components/collections.component.ts
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good to go! There do seem to be a couple merge conflicts though
…an edit except pw collection
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't understand the logic here, even with the comment. It seems like this method is doing too much if the boolean logic is this complicated. It's also unclear how the new parameter works.
I can see that the getter is called in different flows for different purposes:
org-vault/vault.component.html
- show/hide the "Add item" button in an empty collection. I assume we don't care about this, because the ticket is only about assigning an existing collection item, not creating a new one. (correct me if I'm wrong? maybe I'm reading the ticket too closely)item-details-section.component.ts
- filtering for readonly collections when creating an item (also an add item flow)assign-collections.component.ts
- filtering for readonly collections when editing an item. This is about assigning an existing item, which is what this PR is about; however it seems to be called for the collection that the item is being assigned to, not the collections the item is currently in (which is what the permission check should be based on).
Can you please help me understand how/why this getter is being used? I thought the cipher-level checks would be sufficient but I'm probably missing something as these flows are fairly complex.
Assuming you do need some extra logic here, I would recommend splitting the getter into separate methods for specific use cases. e.g. canAssignItemsInCollection
, canCreateItemsInCollection
.
…ion input if user can edit that item. will otherwise have input as disabled. updated method names for clarity. revert translation key for collection input footer
After speaking with product and design we have decided to move away from hiding If an item belongs to only a If an item belongs to multiple collections with a higher permission (e.g. item is in Will provide updated description and screen recordings. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
These changes look good to me 👍
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A few questions/suggestions but they are non-blocking as I am no longer a codeowner in this review. In general it looks much clearer since my last review, good job 👍
apps/web/src/app/vault/components/vault-items/vault-cipher-row.component.ts
Show resolved
Hide resolved
apps/web/src/app/vault/components/vault-items/vault-items.component.ts
Outdated
Show resolved
Hide resolved
libs/vault/src/cipher-form/components/item-details/item-details-section.component.ts
Outdated
Show resolved
Hide resolved
736f756
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good
🎟️ Tracking
PM-11162
📔 Objective
Only users with
Can Edit
permissions will be allowed toAssign To Collections
. If the user hasCan Edit Except Password
they should not seeAssign To Collections
in the menu of the item row.UPDATE:
After speaking with product and design we have decided to move away from hiding
Can Edit Except Passwords
collections from the dropdown.If an item belongs to only a
Can Edit Except Passwords
collection, the user will not see theAssign to Collections
action in the item row menu, and the collections dropdown will be disabledIf an item belongs to multiple collections with a higher permission (e.g. item is in
Can Edit Except Password
andCan Manage
) the user will see theAssign to Collections
action, and the collections dropdown in the edit modal will show all available collections📸 Screen Recording
PM-11162.mov
Desktop Permissions
PM-11162-Desktop.mov
Screenshot of CLI error when trying to add collection to
Can Edit Except PW
item UPDATED (shows new error text)Removed Assign option from
Can Edit Except PW
items in browserPM-14165-browser-assign-remove.mov
Recording of Collections dropdown disable for item with only
Can Edit Except PW
. And dropdown available for item with multiple collections including aManage/Edit
permission.PM-11162-edit-except-pw-PM-AC.mov
⏰ Reminders before review
🦮 Reviewer guidelines
:+1:
) or similar for great changes:memo:
) or ℹ️ (:information_source:
) for notes or general info:question:
) for questions:thinking:
) or 💭 (:thought_balloon:
) for more open inquiry that's not quite a confirmed issue and could potentially benefit from discussion:art:
) for suggestions / improvements:x:
) or:warning:
) for more significant problems or concerns needing attention:seedling:
) or ♻️ (:recycle:
) for future improvements or indications of technical debt:pick:
) for minor or nitpick changes