diff options
author | Stefan Melmuk <[email protected]> | 2023-03-18 21:13:06 +0100 |
---|---|---|
committer | Stefan Melmuk <[email protected]> | 2023-03-23 00:26:26 +0100 |
commit | 3cf67e0b8ddc8d4f00dc122de511cbff6b650d58 (patch) | |
tree | 412a07bfc6a7deb7594347eed2dbb4573f1e35d1 | |
parent | 5800aceb2d065a23899d277f91865f1d5b9ef297 (diff) | |
download | vaultwarden-3cf67e0b8ddc8d4f00dc122de511cbff6b650d58.tar.gz vaultwarden-3cf67e0b8ddc8d4f00dc122de511cbff6b650d58.zip |
add endpoint to bulk delete groups
-rw-r--r-- | src/api/core/organizations.rs | 34 |
1 files changed, 29 insertions, 5 deletions
diff --git a/src/api/core/organizations.rs b/src/api/core/organizations.rs index 9c46617a..172c7f90 100644 --- a/src/api/core/organizations.rs +++ b/src/api/core/organizations.rs @@ -81,6 +81,7 @@ pub fn routes() -> Vec<Route> { get_group_details, delete_group, post_delete_group, + bulk_delete_groups, get_group_users, put_group_users, get_user_groups, @@ -2363,17 +2364,21 @@ async fn get_group_details(_org_id: String, group_id: String, _headers: AdminHea } #[post("/organizations/<org_id>/groups/<group_id>/delete")] -async fn post_delete_group(org_id: String, group_id: String, headers: AdminHeaders, conn: DbConn) -> EmptyResult { - delete_group(org_id, group_id, headers, conn).await +async fn post_delete_group(org_id: String, group_id: String, headers: AdminHeaders, mut conn: DbConn) -> EmptyResult { + _delete_group(org_id, group_id, &headers, &mut conn).await } #[delete("/organizations/<org_id>/groups/<group_id>")] async fn delete_group(org_id: String, group_id: String, headers: AdminHeaders, mut conn: DbConn) -> EmptyResult { + _delete_group(org_id, group_id, &headers, &mut conn).await +} + +async fn _delete_group(org_id: String, group_id: String, headers: &AdminHeaders, conn: &mut DbConn) -> EmptyResult { if !CONFIG.org_groups_enabled() { err!("Group support is disabled"); } - let group = match Group::find_by_uuid(&group_id, &mut conn).await { + let group = match Group::find_by_uuid(&group_id, conn).await { Some(group) => group, _ => err!("Group not found"), }; @@ -2385,11 +2390,30 @@ async fn delete_group(org_id: String, group_id: String, headers: AdminHeaders, m headers.user.uuid.clone(), headers.device.atype, &headers.ip.ip, - &mut conn, + conn, ) .await; - group.delete(&mut conn).await + group.delete(conn).await +} + +#[delete("/organizations/<org_id>/groups", data = "<data>")] +async fn bulk_delete_groups( + org_id: String, + data: JsonUpcase<OrgBulkIds>, + headers: AdminHeaders, + mut conn: DbConn, +) -> EmptyResult { + if !CONFIG.org_groups_enabled() { + err!("Group support is disabled"); + } + + let data: OrgBulkIds = data.into_inner().data; + + for group_id in data.Ids { + _delete_group(org_id.clone(), group_id, &headers, &mut conn).await? + } + Ok(()) } #[get("/organizations/<_org_id>/groups/<group_id>")] |