@ -97,13 +97,13 @@ impl Collection {
(
(
cu . read_only ,
cu . read_only ,
cu . hide_passwords ,
cu . hide_passwords ,
cu . manage | | ( is_manager & & ! cu . read_only & & ! cu . hide_passwords ) ,
is_manager & & ( cu . manage | | ( ! cu . read_only & & ! cu . hide_passwords ) ) ,
)
)
} else if let Some ( cg ) = cipher_sync_data . user_collections_groups . get ( & self . uuid ) {
} else if let Some ( cg ) = cipher_sync_data . user_collections_groups . get ( & self . uuid ) {
(
(
cg . read_only ,
cg . read_only ,
cg . hide_passwords ,
cg . hide_passwords ,
cg . manage | | ( is_manager & & ! cg . read_only & & ! cg . hide_passwords ) ,
is_manager & & ( cg . manage | | ( ! cg . read_only & & ! cg . hide_passwords ) ) ,
)
)
} else {
} else {
( false , false , false )
( false , false , false )
@ -114,7 +114,9 @@ impl Collection {
} else {
} else {
match Membership ::find_confirmed_by_user_and_org ( user_uuid , & self . org_uuid , conn ) . await {
match Membership ::find_confirmed_by_user_and_org ( user_uuid , & self . org_uuid , conn ) . await {
Some ( m ) if m . has_full_access ( ) = > ( false , false , m . atype > = MembershipType ::Manager ) ,
Some ( m ) if m . has_full_access ( ) = > ( false , false , m . atype > = MembershipType ::Manager ) ,
Some ( _ ) if self . is_manageable_by_user ( user_uuid , conn ) . await = > ( false , false , true ) ,
Some ( m ) if m . atype = = MembershipType ::Manager & & self . is_manageable_by_user ( user_uuid , conn ) . await = > {
( false , false , true )
}
Some ( m ) = > {
Some ( m ) = > {
let is_manager = m . atype = = MembershipType ::Manager ;
let is_manager = m . atype = = MembershipType ::Manager ;
let read_only = ! self . is_writable_by_user ( user_uuid , conn ) . await ;
let read_only = ! self . is_writable_by_user ( user_uuid , conn ) . await ;