Rename/Fix revoke/restore endpoints

In web-vault v2022.9.x it seems the endpoints changed.
 - activate > restore
 - deactivate > revoke

This PR adds those endpoints and renames the functions.
It also keeps the previous endpoints for now to be compatible with
previous vault verions for now, just in case.
This commit is contained in:
BlackDex 2022-09-12 16:08:36 +02:00
parent edca4248aa
commit e47a2fd0f3
No known key found for this signature in database
GPG Key ID: 58C80A2AA6C765E1
2 changed files with 57 additions and 9 deletions

View File

@ -63,8 +63,12 @@ pub fn routes() -> Vec<Route> {
bulk_public_keys, bulk_public_keys,
deactivate_organization_user, deactivate_organization_user,
bulk_deactivate_organization_user, bulk_deactivate_organization_user,
revoke_organization_user,
bulk_revoke_organization_user,
activate_organization_user, activate_organization_user,
bulk_activate_organization_user bulk_activate_organization_user,
restore_organization_user,
bulk_restore_organization_user
] ]
} }
@ -1480,6 +1484,7 @@ async fn import(org_id: String, data: JsonUpcase<OrgImportData>, headers: Header
Ok(()) Ok(())
} }
// Pre web-vault v2022.9.x endpoint
#[put("/organizations/<org_id>/users/<org_user_id>/deactivate")] #[put("/organizations/<org_id>/users/<org_user_id>/deactivate")]
async fn deactivate_organization_user( async fn deactivate_organization_user(
org_id: String, org_id: String,
@ -1487,15 +1492,36 @@ async fn deactivate_organization_user(
headers: AdminHeaders, headers: AdminHeaders,
conn: DbConn, conn: DbConn,
) -> EmptyResult { ) -> EmptyResult {
_deactivate_organization_user(&org_id, &org_user_id, &headers, &conn).await _revoke_organization_user(&org_id, &org_user_id, &headers, &conn).await
} }
// Pre web-vault v2022.9.x endpoint
#[put("/organizations/<org_id>/users/deactivate", data = "<data>")] #[put("/organizations/<org_id>/users/deactivate", data = "<data>")]
async fn bulk_deactivate_organization_user( async fn bulk_deactivate_organization_user(
org_id: String, org_id: String,
data: JsonUpcase<Value>, data: JsonUpcase<Value>,
headers: AdminHeaders, headers: AdminHeaders,
conn: DbConn, conn: DbConn,
) -> Json<Value> {
bulk_revoke_organization_user(org_id, data, headers, conn).await
}
#[put("/organizations/<org_id>/users/<org_user_id>/revoke")]
async fn revoke_organization_user(
org_id: String,
org_user_id: String,
headers: AdminHeaders,
conn: DbConn,
) -> EmptyResult {
_revoke_organization_user(&org_id, &org_user_id, &headers, &conn).await
}
#[put("/organizations/<org_id>/users/revoke", data = "<data>")]
async fn bulk_revoke_organization_user(
org_id: String,
data: JsonUpcase<Value>,
headers: AdminHeaders,
conn: DbConn,
) -> Json<Value> { ) -> Json<Value> {
let data = data.into_inner().data; let data = data.into_inner().data;
@ -1504,7 +1530,7 @@ async fn bulk_deactivate_organization_user(
Some(org_users) => { Some(org_users) => {
for org_user_id in org_users { for org_user_id in org_users {
let org_user_id = org_user_id.as_str().unwrap_or_default(); let org_user_id = org_user_id.as_str().unwrap_or_default();
let err_msg = match _deactivate_organization_user(&org_id, org_user_id, &headers, &conn).await { let err_msg = match _revoke_organization_user(&org_id, org_user_id, &headers, &conn).await {
Ok(_) => String::from(""), Ok(_) => String::from(""),
Err(e) => format!("{:?}", e), Err(e) => format!("{:?}", e),
}; };
@ -1528,7 +1554,7 @@ async fn bulk_deactivate_organization_user(
})) }))
} }
async fn _deactivate_organization_user( async fn _revoke_organization_user(
org_id: &str, org_id: &str,
org_user_id: &str, org_user_id: &str,
headers: &AdminHeaders, headers: &AdminHeaders,
@ -1557,6 +1583,7 @@ async fn _deactivate_organization_user(
Ok(()) Ok(())
} }
// Pre web-vault v2022.9.x endpoint
#[put("/organizations/<org_id>/users/<org_user_id>/activate")] #[put("/organizations/<org_id>/users/<org_user_id>/activate")]
async fn activate_organization_user( async fn activate_organization_user(
org_id: String, org_id: String,
@ -1564,15 +1591,36 @@ async fn activate_organization_user(
headers: AdminHeaders, headers: AdminHeaders,
conn: DbConn, conn: DbConn,
) -> EmptyResult { ) -> EmptyResult {
_activate_organization_user(&org_id, &org_user_id, &headers, &conn).await _restore_organization_user(&org_id, &org_user_id, &headers, &conn).await
} }
// Pre web-vault v2022.9.x endpoint
#[put("/organizations/<org_id>/users/activate", data = "<data>")] #[put("/organizations/<org_id>/users/activate", data = "<data>")]
async fn bulk_activate_organization_user( async fn bulk_activate_organization_user(
org_id: String, org_id: String,
data: JsonUpcase<Value>, data: JsonUpcase<Value>,
headers: AdminHeaders, headers: AdminHeaders,
conn: DbConn, conn: DbConn,
) -> Json<Value> {
bulk_restore_organization_user(org_id, data, headers, conn).await
}
#[put("/organizations/<org_id>/users/<org_user_id>/restore")]
async fn restore_organization_user(
org_id: String,
org_user_id: String,
headers: AdminHeaders,
conn: DbConn,
) -> EmptyResult {
_restore_organization_user(&org_id, &org_user_id, &headers, &conn).await
}
#[put("/organizations/<org_id>/users/restore", data = "<data>")]
async fn bulk_restore_organization_user(
org_id: String,
data: JsonUpcase<Value>,
headers: AdminHeaders,
conn: DbConn,
) -> Json<Value> { ) -> Json<Value> {
let data = data.into_inner().data; let data = data.into_inner().data;
@ -1581,7 +1629,7 @@ async fn bulk_activate_organization_user(
Some(org_users) => { Some(org_users) => {
for org_user_id in org_users { for org_user_id in org_users {
let org_user_id = org_user_id.as_str().unwrap_or_default(); let org_user_id = org_user_id.as_str().unwrap_or_default();
let err_msg = match _activate_organization_user(&org_id, org_user_id, &headers, &conn).await { let err_msg = match _restore_organization_user(&org_id, org_user_id, &headers, &conn).await {
Ok(_) => String::from(""), Ok(_) => String::from(""),
Err(e) => format!("{:?}", e), Err(e) => format!("{:?}", e),
}; };
@ -1605,7 +1653,7 @@ async fn bulk_activate_organization_user(
})) }))
} }
async fn _activate_organization_user( async fn _restore_organization_user(
org_id: &str, org_id: &str,
org_user_id: &str, org_user_id: &str,
headers: &AdminHeaders, headers: &AdminHeaders,
@ -1634,7 +1682,7 @@ async fn _activate_organization_user(
} }
} }
user_org.activate(); user_org.restore();
user_org.save(conn).await?; user_org.save(conn).await?;
} }
Some(_) => err!("User is already active"), Some(_) => err!("User is already active"),

View File

@ -196,7 +196,7 @@ impl UserOrganization {
} }
} }
pub fn activate(&mut self) { pub fn restore(&mut self) {
if self.status < UserOrgStatus::Accepted as i32 { if self.status < UserOrgStatus::Accepted as i32 {
self.status += ACTIVATE_REVOKE_DIFF; self.status += ACTIVATE_REVOKE_DIFF;
} }