From 1758e555cda04d371b202dedd1b54d794891efb5 Mon Sep 17 00:00:00 2001 From: Apoorv Dixit Date: Thu, 18 Jan 2024 18:32:17 +0530 Subject: [PATCH] add helper function --- .../src/connector/cybersource/transformers.rs | 6 +++--- crates/router/src/core/errors/user.rs | 10 +++++++++- crates/router/src/core/user.rs | 17 ++++++----------- crates/router/src/utils/user.rs | 13 +++++++++++++ 4 files changed, 31 insertions(+), 15 deletions(-) diff --git a/crates/router/src/connector/cybersource/transformers.rs b/crates/router/src/connector/cybersource/transformers.rs index a641a3b5027..e83b23603e9 100644 --- a/crates/router/src/connector/cybersource/transformers.rs +++ b/crates/router/src/connector/cybersource/transformers.rs @@ -1986,9 +1986,9 @@ impl resource_id: types::ResponseId::NoResponseId, redirection_data, mandate_reference: None, - connector_metadata: Some(serde_json::json!({ - "three_ds_data": three_ds_data - })), + connector_metadata: Some( + serde_json::json!({"three_ds_data":three_ds_data}), + ), network_txn_id: None, connector_response_reference_id, incremental_authorization_allowed: None, diff --git a/crates/router/src/core/errors/user.rs b/crates/router/src/core/errors/user.rs index f4000755b3e..f3d1a5bb899 100644 --- a/crates/router/src/core/errors/user.rs +++ b/crates/router/src/core/errors/user.rs @@ -54,6 +54,8 @@ pub enum UserErrors { MerchantIdParsingError, #[error("ChangePasswordError")] ChangePasswordError, + #[error("UserNotExist")] + UserNotExist, #[error("InvalidDeleteOperation")] InvalidDeleteOperation, } @@ -159,9 +161,15 @@ impl common_utils::errors::ErrorSwitch AER::BadRequest(ApiError::new( + Self::UserNotExist => AER::BadRequest(ApiError::new( sub_code, 30, + "User does not exist in records", + None, + )), + Self::InvalidDeleteOperation => AER::BadRequest(ApiError::new( + sub_code, + 31, "Delete Operation Not Supported", None, )), diff --git a/crates/router/src/core/user.rs b/crates/router/src/core/user.rs index 3f6fd25763d..6ef637dddb9 100644 --- a/crates/router/src/core/user.rs +++ b/crates/router/src/core/user.rs @@ -18,6 +18,7 @@ use crate::{ services::{authentication as auth, ApplicationResponse}, types::domain, utils, + utils::user::can_delete_user_role, }; pub mod dashboard_metadata; #[cfg(feature = "dummy_connector")] @@ -478,7 +479,7 @@ pub async fn delete_user( .await .map_err(|e| { if e.current_context().is_db_not_found() { - e.change_context(UserErrors::UserNotFound) + e.change_context(UserErrors::UserNotExist) } else { e.change_context(UserErrors::InternalServerError) } @@ -501,17 +502,11 @@ pub async fn delete_user( .find(|&role| role.merchant_id == user_from_token.merchant_id.as_str()) { Some(user_role) => { - if user_role.role_id == consts::user_role::ROLE_ID_INTERNAL_ADMIN - || user_role.role_id == consts::user_role::ROLE_ID_MERCHANT_ADMIN - || user_role.role_id == consts::user_role::ROLE_ID_ORGANIZATION_ADMIN - { - return Err(UserErrors::InvalidDeleteOperation.into()) - .attach_printable("Cannot delete"); - } + let _ = can_delete_user_role(&user_role.role_id); } None => { return Err(UserErrors::InvalidDeleteOperation.into()) - .attach_printable("User not found"); + .attach_printable("User role not found"); } }; @@ -526,7 +521,7 @@ pub async fn delete_user( .change_context(UserErrors::InternalServerError) .attach_printable("Error while deleting user role"); - return Ok(ApplicationResponse::StatusOk); + Ok(ApplicationResponse::StatusOk) } else { let _ = state .store @@ -545,7 +540,7 @@ pub async fn delete_user( .change_context(UserErrors::InternalServerError) .attach_printable("Error while deleting user role"); - return Ok(ApplicationResponse::StatusOk); + Ok(ApplicationResponse::StatusOk) } } diff --git a/crates/router/src/utils/user.rs b/crates/router/src/utils/user.rs index a115fa2a2d8..0467264a070 100644 --- a/crates/router/src/utils/user.rs +++ b/crates/router/src/utils/user.rs @@ -4,6 +4,7 @@ use error_stack::ResultExt; use masking::Secret; use crate::{ + consts, core::errors::{UserErrors, UserResult}, routes::AppState, services::authentication::{AuthToken, UserFromToken}, @@ -111,3 +112,15 @@ pub fn get_dashboard_entry_response( user_role: user_role.role_id, }) } + +pub fn can_delete_user_role(role_id: &str) -> UserResult<()> { + match role_id { + consts::user_role::ROLE_ID_ORGANIZATION_ADMIN + | consts::user_role::ROLE_ID_INTERNAL_ADMIN + | consts::user_role::ROLE_ID_INTERNAL_VIEW_ONLY_USER + | consts::user_role::INTERNAL_USER_MERCHANT_ID => { + Err(UserErrors::InvalidDeleteOperation.into()).attach_printable("Cannot delete") + } + _ => Ok(()), + } +}