|
|
@ -748,8 +748,6 @@ struct GetOrgUserData { |
|
|
|
include_groups: Option<bool>, |
|
|
|
} |
|
|
|
|
|
|
|
// includeCollections
|
|
|
|
// includeGroups
|
|
|
|
#[get("/organizations/<org_id>/users?<data..>")] |
|
|
|
async fn get_org_users( |
|
|
|
data: GetOrgUserData, |
|
|
@ -1229,14 +1227,25 @@ async fn _confirm_invite( |
|
|
|
save_result |
|
|
|
} |
|
|
|
|
|
|
|
#[get("/organizations/<org_id>/users/<org_user_id>")] |
|
|
|
async fn get_user(org_id: String, org_user_id: String, _headers: AdminHeaders, mut conn: DbConn) -> JsonResult { |
|
|
|
#[get("/organizations/<org_id>/users/<org_user_id>?<data..>")] |
|
|
|
async fn get_user( |
|
|
|
org_id: String, |
|
|
|
org_user_id: String, |
|
|
|
data: GetOrgUserData, |
|
|
|
_headers: AdminHeaders, |
|
|
|
mut conn: DbConn, |
|
|
|
) -> JsonResult { |
|
|
|
let user = match UserOrganization::find_by_uuid_and_org(&org_user_id, &org_id, &mut conn).await { |
|
|
|
Some(user) => user, |
|
|
|
None => err!("The specified user isn't a member of the organization"), |
|
|
|
}; |
|
|
|
|
|
|
|
Ok(Json(user.to_json_details(&mut conn).await)) |
|
|
|
// In this case, when groups are requested we also need to include collections.
|
|
|
|
// Else these will not be shown in the interface, and could lead to missing collections when saved.
|
|
|
|
let include_groups = data.include_groups.unwrap_or(false); |
|
|
|
Ok(Json( |
|
|
|
user.to_json_user_details(data.include_collections.unwrap_or(include_groups), include_groups, &mut conn).await, |
|
|
|
)) |
|
|
|
} |
|
|
|
|
|
|
|
#[derive(Deserialize)] |
|
|
@ -1244,6 +1253,7 @@ async fn get_user(org_id: String, org_user_id: String, _headers: AdminHeaders, m |
|
|
|
struct EditUserData { |
|
|
|
Type: NumberOrString, |
|
|
|
Collections: Option<Vec<CollectionData>>, |
|
|
|
Groups: Option<Vec<String>>, |
|
|
|
AccessAll: bool, |
|
|
|
} |
|
|
|
|
|
|
@ -1342,6 +1352,13 @@ async fn edit_user( |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
GroupUser::delete_all_by_user(&user_to_edit.uuid, &mut conn).await?; |
|
|
|
|
|
|
|
for group in data.Groups.iter().flatten() { |
|
|
|
let mut group_entry = GroupUser::new(String::from(group), user_to_edit.uuid.clone()); |
|
|
|
group_entry.save(&mut conn).await?; |
|
|
|
} |
|
|
|
|
|
|
|
log_event( |
|
|
|
EventType::OrganizationUserUpdated as i32, |
|
|
|
&user_to_edit.uuid, |
|
|
|