|
@ -80,9 +80,9 @@ fn create_organization(headers: Headers, data: JsonUpcase<OrgData>, conn: DbConn |
|
|
let mut user_org = UserOrganization::new(headers.user.uuid.clone(), org.uuid.clone()); |
|
|
let mut user_org = UserOrganization::new(headers.user.uuid.clone(), org.uuid.clone()); |
|
|
let collection = Collection::new(org.uuid.clone(), data.CollectionName); |
|
|
let collection = Collection::new(org.uuid.clone(), data.CollectionName); |
|
|
|
|
|
|
|
|
user_org.key = data.Key; |
|
|
user_org.akey = data.Key; |
|
|
user_org.access_all = true; |
|
|
user_org.access_all = true; |
|
|
user_org.type_ = UserOrgType::Owner as i32; |
|
|
user_org.atype = UserOrgType::Owner as i32; |
|
|
user_org.status = UserOrgStatus::Confirmed as i32; |
|
|
user_org.status = UserOrgStatus::Confirmed as i32; |
|
|
|
|
|
|
|
|
org.save(&conn)?; |
|
|
org.save(&conn)?; |
|
@ -127,7 +127,7 @@ fn leave_organization(org_id: String, headers: Headers, conn: DbConn) -> EmptyRe |
|
|
match UserOrganization::find_by_user_and_org(&headers.user.uuid, &org_id, &conn) { |
|
|
match UserOrganization::find_by_user_and_org(&headers.user.uuid, &org_id, &conn) { |
|
|
None => err!("User not part of organization"), |
|
|
None => err!("User not part of organization"), |
|
|
Some(user_org) => { |
|
|
Some(user_org) => { |
|
|
if user_org.type_ == UserOrgType::Owner { |
|
|
if user_org.atype == UserOrgType::Owner { |
|
|
let num_owners = |
|
|
let num_owners = |
|
|
UserOrganization::find_by_org_and_type(&org_id, UserOrgType::Owner as i32, &conn).len(); |
|
|
UserOrganization::find_by_org_and_type(&org_id, UserOrgType::Owner as i32, &conn).len(); |
|
|
|
|
|
|
|
@ -505,7 +505,7 @@ fn send_invite(org_id: String, data: JsonUpcase<InviteData>, headers: AdminHeade |
|
|
let mut new_user = UserOrganization::new(user.uuid.clone(), org_id.clone()); |
|
|
let mut new_user = UserOrganization::new(user.uuid.clone(), org_id.clone()); |
|
|
let access_all = data.AccessAll.unwrap_or(false); |
|
|
let access_all = data.AccessAll.unwrap_or(false); |
|
|
new_user.access_all = access_all; |
|
|
new_user.access_all = access_all; |
|
|
new_user.type_ = new_type; |
|
|
new_user.atype = new_type; |
|
|
new_user.status = user_org_status; |
|
|
new_user.status = user_org_status; |
|
|
|
|
|
|
|
|
// If no accessAll, add the collections received
|
|
|
// If no accessAll, add the collections received
|
|
@ -657,7 +657,7 @@ fn confirm_invite( |
|
|
None => err!("The specified user isn't a member of the organization"), |
|
|
None => err!("The specified user isn't a member of the organization"), |
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
|
if user_to_confirm.type_ != UserOrgType::User && headers.org_user_type != UserOrgType::Owner { |
|
|
if user_to_confirm.atype != UserOrgType::User && headers.org_user_type != UserOrgType::Owner { |
|
|
err!("Only Owners can confirm Managers, Admins or Owners") |
|
|
err!("Only Owners can confirm Managers, Admins or Owners") |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
@ -666,7 +666,7 @@ fn confirm_invite( |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
user_to_confirm.status = UserOrgStatus::Confirmed as i32; |
|
|
user_to_confirm.status = UserOrgStatus::Confirmed as i32; |
|
|
user_to_confirm.key = match data["Key"].as_str() { |
|
|
user_to_confirm.akey = match data["Key"].as_str() { |
|
|
Some(key) => key.to_string(), |
|
|
Some(key) => key.to_string(), |
|
|
None => err!("Invalid key provided"), |
|
|
None => err!("Invalid key provided"), |
|
|
}; |
|
|
}; |
|
@ -735,18 +735,18 @@ fn edit_user( |
|
|
None => err!("The specified user isn't member of the organization"), |
|
|
None => err!("The specified user isn't member of the organization"), |
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
|
if new_type != user_to_edit.type_ |
|
|
if new_type != user_to_edit.atype |
|
|
&& (user_to_edit.type_ >= UserOrgType::Admin || new_type >= UserOrgType::Admin) |
|
|
&& (user_to_edit.atype >= UserOrgType::Admin || new_type >= UserOrgType::Admin) |
|
|
&& headers.org_user_type != UserOrgType::Owner |
|
|
&& headers.org_user_type != UserOrgType::Owner |
|
|
{ |
|
|
{ |
|
|
err!("Only Owners can grant and remove Admin or Owner privileges") |
|
|
err!("Only Owners can grant and remove Admin or Owner privileges") |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
if user_to_edit.type_ == UserOrgType::Owner && headers.org_user_type != UserOrgType::Owner { |
|
|
if user_to_edit.atype == UserOrgType::Owner && headers.org_user_type != UserOrgType::Owner { |
|
|
err!("Only Owners can edit Owner users") |
|
|
err!("Only Owners can edit Owner users") |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
if user_to_edit.type_ == UserOrgType::Owner && new_type != UserOrgType::Owner { |
|
|
if user_to_edit.atype == UserOrgType::Owner && new_type != UserOrgType::Owner { |
|
|
// Removing owner permmission, check that there are at least another owner
|
|
|
// Removing owner permmission, check that there are at least another owner
|
|
|
let num_owners = UserOrganization::find_by_org_and_type(&org_id, UserOrgType::Owner as i32, &conn).len(); |
|
|
let num_owners = UserOrganization::find_by_org_and_type(&org_id, UserOrgType::Owner as i32, &conn).len(); |
|
|
|
|
|
|
|
@ -756,7 +756,7 @@ fn edit_user( |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
user_to_edit.access_all = data.AccessAll; |
|
|
user_to_edit.access_all = data.AccessAll; |
|
|
user_to_edit.type_ = new_type as i32; |
|
|
user_to_edit.atype = new_type as i32; |
|
|
|
|
|
|
|
|
// Delete all the odd collections
|
|
|
// Delete all the odd collections
|
|
|
for c in CollectionUser::find_by_organization_and_user_uuid(&org_id, &user_to_edit.user_uuid, &conn) { |
|
|
for c in CollectionUser::find_by_organization_and_user_uuid(&org_id, &user_to_edit.user_uuid, &conn) { |
|
@ -785,11 +785,11 @@ fn delete_user(org_id: String, org_user_id: String, headers: AdminHeaders, conn: |
|
|
None => err!("User to delete isn't member of the organization"), |
|
|
None => err!("User to delete isn't member of the organization"), |
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
|
if user_to_delete.type_ != UserOrgType::User && headers.org_user_type != UserOrgType::Owner { |
|
|
if user_to_delete.atype != UserOrgType::User && headers.org_user_type != UserOrgType::Owner { |
|
|
err!("Only Owners can delete Admins or Owners") |
|
|
err!("Only Owners can delete Admins or Owners") |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
if user_to_delete.type_ == UserOrgType::Owner { |
|
|
if user_to_delete.atype == UserOrgType::Owner { |
|
|
// Removing owner, check that there are at least another owner
|
|
|
// Removing owner, check that there are at least another owner
|
|
|
let num_owners = UserOrganization::find_by_org_and_type(&org_id, UserOrgType::Owner as i32, &conn).len(); |
|
|
let num_owners = UserOrganization::find_by_org_and_type(&org_id, UserOrgType::Owner as i32, &conn).len(); |
|
|
|
|
|
|
|
@ -842,7 +842,7 @@ fn post_org_import( |
|
|
None => err!("User is not part of the organization"), |
|
|
None => err!("User is not part of the organization"), |
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
|
if org_user.type_ < UserOrgType::Admin { |
|
|
if org_user.atype < UserOrgType::Admin { |
|
|
err!("Only admins or owners can import into an organization") |
|
|
err!("Only admins or owners can import into an organization") |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|