Skip to content

Commit

Permalink
Fix web-vault Member UI show/edit/save
Browse files Browse the repository at this point in the history
There was a small bug left in regards to the web-vault v2023.2.0 fixes.
This PR fixes the left items. I think all should be addressed now.
When editing a User, you were not able to see or edit groups, or see
wich collections a user bellonged to.

Fixes #3311
  • Loading branch information
BlackDex committed Mar 6, 2023
1 parent 337cbfa commit 10c5476
Showing 1 changed file with 22 additions and 5 deletions.
27 changes: 22 additions & 5 deletions src/api/core/organizations.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -1229,21 +1227,33 @@ 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)]
#[allow(non_snake_case)]
struct EditUserData {
Type: NumberOrString,
Collections: Option<Vec<CollectionData>>,
Groups: Option<Vec<String>>,
AccessAll: bool,
}

Expand Down Expand Up @@ -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,
Expand Down

0 comments on commit 10c5476

Please sign in to comment.