|
@ -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; |
|
|