mirror of
https://github.com/juspay/hyperswitch.git
synced 2025-10-30 01:27:31 +08:00
feat(users): add some checks for prod-intent send to biz email (#3631)
Co-authored-by: hyperswitch-bot[bot] <148525504+hyperswitch-bot[bot]@users.noreply.github.com>
This commit is contained in:
committed by
GitHub
parent
8853a60bf4
commit
774a0322aa
@ -4,10 +4,10 @@ use diesel_models::{
|
||||
};
|
||||
use error_stack::ResultExt;
|
||||
#[cfg(feature = "email")]
|
||||
use masking::ExposeInterface;
|
||||
#[cfg(feature = "email")]
|
||||
use router_env::logger;
|
||||
|
||||
#[cfg(feature = "email")]
|
||||
use crate::services::email::types as email_types;
|
||||
use crate::{
|
||||
core::errors::{UserErrors, UserResponse, UserResult},
|
||||
routes::AppState,
|
||||
@ -15,6 +15,8 @@ use crate::{
|
||||
types::domain::{user::dashboard_metadata as types, MerchantKeyStore},
|
||||
utils::user::dashboard_metadata as utils,
|
||||
};
|
||||
#[cfg(feature = "email")]
|
||||
use crate::{services::email::types as email_types, types::domain};
|
||||
|
||||
pub async fn set_metadata(
|
||||
state: AppState,
|
||||
@ -446,8 +448,8 @@ async fn insert_metadata(
|
||||
metadata = utils::update_user_scoped_metadata(
|
||||
state,
|
||||
user.user_id.clone(),
|
||||
user.merchant_id,
|
||||
user.org_id,
|
||||
user.merchant_id.clone(),
|
||||
user.org_id.clone(),
|
||||
metadata_key,
|
||||
data.clone(),
|
||||
)
|
||||
@ -457,7 +459,13 @@ async fn insert_metadata(
|
||||
|
||||
#[cfg(feature = "email")]
|
||||
{
|
||||
if utils::is_prod_email_required(&data) {
|
||||
let user_data = user.get_user(state).await?;
|
||||
let user_email = domain::UserEmail::from_pii_email(user_data.email.clone())
|
||||
.change_context(UserErrors::InternalServerError)?
|
||||
.get_secret()
|
||||
.expose();
|
||||
|
||||
if utils::is_prod_email_required(&data, user_email) {
|
||||
let email_contents = email_types::BizEmailProd::new(state, data)?;
|
||||
let send_email_result = state
|
||||
.email_client
|
||||
|
||||
@ -279,9 +279,15 @@ pub fn parse_string_to_enums(query: String) -> UserResult<GetMultipleMetaDataPay
|
||||
})
|
||||
}
|
||||
|
||||
pub fn is_prod_email_required(data: &ProdIntent) -> bool {
|
||||
!(data
|
||||
.poc_email
|
||||
fn not_contains_string(value: &Option<String>, value_to_be_checked: &str) -> bool {
|
||||
value
|
||||
.as_ref()
|
||||
.map_or(true, |mail| mail.contains("juspay")))
|
||||
.map_or(false, |mail| !mail.contains(value_to_be_checked))
|
||||
}
|
||||
|
||||
pub fn is_prod_email_required(data: &ProdIntent, user_email: String) -> bool {
|
||||
not_contains_string(&data.poc_email, "juspay")
|
||||
&& not_contains_string(&data.business_website, "juspay")
|
||||
&& not_contains_string(&data.business_website, "hyperswitch")
|
||||
&& not_contains_string(&Some(user_email), "juspay")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user