Browse Source

fixed groups permissions

pull/2907/head
Daniele Andrei 3 years ago
parent
commit
ee2cd0df46
  1. 48
      src/db/models/collection.rs

48
src/db/models/collection.rs

@ -267,7 +267,7 @@ impl Collection {
return true; return true;
} }
db_run! { conn: { let direct: bool = db_run! { conn: {
users_collections::table users_collections::table
.filter(users_collections::collection_uuid.eq(&self.uuid)) .filter(users_collections::collection_uuid.eq(&self.uuid))
.filter(users_collections::user_uuid.eq(user_uuid)) .filter(users_collections::user_uuid.eq(user_uuid))
@ -276,7 +276,27 @@ impl Collection {
.first::<i64>(conn) .first::<i64>(conn)
.ok() .ok()
.unwrap_or(0) != 0 .unwrap_or(0) != 0
}} }};
let indirect: bool = db_run! { conn: {
collections_groups::table
.filter(collections_groups::collections_uuid.eq(&self.uuid))
.filter(collections_groups::read_only.eq(false))
.filter(collections_groups::groups_uuid.eq_any(
groups_users::table
.inner_join(users_organizations::table.on(
users_organizations::uuid.eq(groups_users::users_organizations_uuid)
))
.filter(users_organizations::user_uuid.eq(user_uuid))
.select(groups_users::groups_uuid)
))
.count()
.first::<i64>(conn)
.ok()
.unwrap_or(0) != 0
}};
direct || indirect
} }
} }
} }
@ -289,7 +309,7 @@ impl Collection {
return false; return false;
} }
db_run! { conn: { let direct: bool = db_run! { conn: {
users_collections::table users_collections::table
.filter(users_collections::collection_uuid.eq(&self.uuid)) .filter(users_collections::collection_uuid.eq(&self.uuid))
.filter(users_collections::user_uuid.eq(user_uuid)) .filter(users_collections::user_uuid.eq(user_uuid))
@ -298,7 +318,27 @@ impl Collection {
.first::<i64>(conn) .first::<i64>(conn)
.ok() .ok()
.unwrap_or(0) != 0 .unwrap_or(0) != 0
}} }};
let indirect: bool = db_run! { conn: {
collections_groups::table
.filter(collections_groups::collections_uuid.eq(&self.uuid))
.filter(collections_groups::hide_passwords.eq(true))
.filter(collections_groups::groups_uuid.eq_any(
groups_users::table
.inner_join(users_organizations::table.on(
users_organizations::uuid.eq(groups_users::users_organizations_uuid)
))
.filter(users_organizations::user_uuid.eq(user_uuid))
.select(groups_users::groups_uuid)
))
.count()
.first::<i64>(conn)
.ok()
.unwrap_or(0) != 0
}};
direct || indirect
} }
} }
} }

Loading…
Cancel
Save