Skip to content

Commit

Permalink
fix(router): populate profile_id in for the HeaderAuth of v1 (#6936)
Browse files Browse the repository at this point in the history
Co-authored-by: hyperswitch-bot[bot] <148525504+hyperswitch-bot[bot]@users.noreply.github.com>
  • Loading branch information
ShankarSinghC and hyperswitch-bot[bot] authored Dec 26, 2024
1 parent d849403 commit 10a4337
Show file tree
Hide file tree
Showing 7 changed files with 29 additions and 11 deletions.
2 changes: 1 addition & 1 deletion config/deployments/integration_test.toml
Original file line number Diff line number Diff line change
Expand Up @@ -419,7 +419,7 @@ outgoing_enabled = true
connectors_with_webhook_source_verification_call = "paypal" # List of connectors which has additional source verification api-call

[unmasked_headers]
keys = "accept-language,user-agent"
keys = "accept-language,user-agent,x-profile-id"

[saved_payment_methods]
sdk_eligible_payment_methods = "card"
Expand Down
2 changes: 1 addition & 1 deletion config/deployments/production.toml
Original file line number Diff line number Diff line change
Expand Up @@ -435,7 +435,7 @@ outgoing_enabled = true
connectors_with_webhook_source_verification_call = "paypal" # List of connectors which has additional source verification api-call

[unmasked_headers]
keys = "accept-language,user-agent"
keys = "accept-language,user-agent,x-profile-id"

[saved_payment_methods]
sdk_eligible_payment_methods = "card"
Expand Down
2 changes: 1 addition & 1 deletion config/deployments/sandbox.toml
Original file line number Diff line number Diff line change
Expand Up @@ -437,7 +437,7 @@ outgoing_enabled = true
connectors_with_webhook_source_verification_call = "paypal" # List of connectors which has additional source verification api-call

[unmasked_headers]
keys = "accept-language,user-agent"
keys = "accept-language,user-agent,x-profile-id"

[saved_payment_methods]
sdk_eligible_payment_methods = "card"
Expand Down
2 changes: 1 addition & 1 deletion config/development.toml
Original file line number Diff line number Diff line change
Expand Up @@ -768,7 +768,7 @@ enabled = true
file_storage_backend = "file_system"

[unmasked_headers]
keys = "accept-language,user-agent"
keys = "accept-language,user-agent,x-profile-id"

[opensearch]
host = "https://localhost:9200"
Expand Down
2 changes: 1 addition & 1 deletion config/docker_compose.toml
Original file line number Diff line number Diff line change
Expand Up @@ -609,7 +609,7 @@ source = "logs"
file_storage_backend = "file_system"

[unmasked_headers]
keys = "accept-language,user-agent"
keys = "accept-language,user-agent,x-profile-id"

[opensearch]
host = "https://opensearch:9200"
Expand Down
28 changes: 23 additions & 5 deletions crates/router/src/services/authentication.rs
Original file line number Diff line number Diff line change
Expand Up @@ -666,6 +666,13 @@ where
metrics::PARTIAL_AUTH_FAILURE.add(1, &[]);
};

let profile_id = HeaderMapStruct::new(request_headers)
.get_id_type_from_header_if_present::<id_type::ProfileId>(headers::X_PROFILE_ID)
.change_context(errors::ValidationError::IncorrectValueProvided {
field_name: "X-Profile-Id",
})
.change_context(errors::ApiErrorResponse::Unauthorized)?;

let payload = ExtractedPayload::from_headers(request_headers)
.and_then(|value| {
let (algo, secret) = state.get_detached_auth()?;
Expand All @@ -687,8 +694,13 @@ where
merchant_id: Some(merchant_id),
key_id: Some(key_id),
} => {
let auth =
construct_authentication_data(state, &merchant_id, request_headers).await?;
let auth = construct_authentication_data(
state,
&merchant_id,
request_headers,
profile_id,
)
.await?;
Ok((
auth.clone(),
AuthenticationType::ApiKey {
Expand All @@ -702,8 +714,13 @@ where
merchant_id: Some(merchant_id),
key_id: None,
} => {
let auth =
construct_authentication_data(state, &merchant_id, request_headers).await?;
let auth = construct_authentication_data(
state,
&merchant_id,
request_headers,
profile_id,
)
.await?;
Ok((
auth.clone(),
AuthenticationType::PublishableKey {
Expand Down Expand Up @@ -779,6 +796,7 @@ async fn construct_authentication_data<A>(
state: &A,
merchant_id: &id_type::MerchantId,
request_headers: &HeaderMap,
profile_id: Option<id_type::ProfileId>,
) -> RouterResult<AuthenticationData>
where
A: SessionStateInfo + Sync,
Expand Down Expand Up @@ -830,7 +848,7 @@ where
merchant_account: merchant,
platform_merchant_account,
key_store,
profile_id: None,
profile_id,
};

Ok(auth)
Expand Down
2 changes: 1 addition & 1 deletion loadtest/config/development.toml
Original file line number Diff line number Diff line change
Expand Up @@ -396,7 +396,7 @@ client_secret = ""
partner_id = ""

[unmasked_headers]
keys = "accept-language,user-agent"
keys = "accept-language,user-agent,x-profile-id"

[multitenancy]
enabled = false
Expand Down

0 comments on commit 10a4337

Please sign in to comment.