mirror of
				https://github.com/juspay/hyperswitch.git
				synced 2025-11-01 02:57:02 +08:00 
			
		
		
		
	fix(config): add kms decryption support for sqlx password (#3029)
This commit is contained in:
		| @ -1,10 +1,14 @@ | |||||||
| use std::sync::Arc; | use std::sync::Arc; | ||||||
|  |  | ||||||
| use actix_web::{web, Scope}; | use actix_web::{web, Scope}; | ||||||
|  | #[cfg(all(feature = "kms", feature = "olap"))] | ||||||
|  | use analytics::AnalyticsConfig; | ||||||
| #[cfg(feature = "email")] | #[cfg(feature = "email")] | ||||||
| use external_services::email::{ses::AwsSes, EmailService}; | use external_services::email::{ses::AwsSes, EmailService}; | ||||||
| #[cfg(feature = "kms")] | #[cfg(feature = "kms")] | ||||||
| use external_services::kms::{self, decrypt::KmsDecrypt}; | use external_services::kms::{self, decrypt::KmsDecrypt}; | ||||||
|  | #[cfg(all(feature = "olap", feature = "kms"))] | ||||||
|  | use masking::PeekInterface; | ||||||
| use router_env::tracing_actix_web::RequestId; | use router_env::tracing_actix_web::RequestId; | ||||||
| use scheduler::SchedulerInterface; | use scheduler::SchedulerInterface; | ||||||
| use storage_impl::MockDb; | use storage_impl::MockDb; | ||||||
| @ -123,7 +127,8 @@ impl AppState { | |||||||
|     /// |     /// | ||||||
|     /// Panics if Store can't be created or JWE decryption fails |     /// Panics if Store can't be created or JWE decryption fails | ||||||
|     pub async fn with_storage( |     pub async fn with_storage( | ||||||
|         conf: settings::Settings, |         #[cfg_attr(not(all(feature = "olap", feature = "kms")), allow(unused_mut))] | ||||||
|  |         mut conf: settings::Settings, | ||||||
|         storage_impl: StorageImpl, |         storage_impl: StorageImpl, | ||||||
|         shut_down_signal: oneshot::Sender<()>, |         shut_down_signal: oneshot::Sender<()>, | ||||||
|         api_client: Box<dyn crate::services::ApiClient>, |         api_client: Box<dyn crate::services::ApiClient>, | ||||||
| @ -165,6 +170,21 @@ impl AppState { | |||||||
|                 ), |                 ), | ||||||
|             }; |             }; | ||||||
|  |  | ||||||
|  |             #[cfg(all(feature = "kms", feature = "olap"))] | ||||||
|  |             #[allow(clippy::expect_used)] | ||||||
|  |             match conf.analytics { | ||||||
|  |                 AnalyticsConfig::Clickhouse { .. } => {} | ||||||
|  |                 AnalyticsConfig::Sqlx { ref mut sqlx } | ||||||
|  |                 | AnalyticsConfig::CombinedCkh { ref mut sqlx, .. } | ||||||
|  |                 | AnalyticsConfig::CombinedSqlx { ref mut sqlx, .. } => { | ||||||
|  |                     sqlx.password = kms_client | ||||||
|  |                         .decrypt(&sqlx.password.peek()) | ||||||
|  |                         .await | ||||||
|  |                         .expect("Failed to decrypt password") | ||||||
|  |                         .into(); | ||||||
|  |                 } | ||||||
|  |             }; | ||||||
|  |  | ||||||
|             #[cfg(feature = "olap")] |             #[cfg(feature = "olap")] | ||||||
|             let pool = crate::analytics::AnalyticsProvider::from_conf(&conf.analytics).await; |             let pool = crate::analytics::AnalyticsProvider::from_conf(&conf.analytics).await; | ||||||
|  |  | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user
	 Sampras Lopes
					Sampras Lopes