mirror of
https://github.com/juspay/hyperswitch.git
synced 2025-10-30 01:27:31 +08:00
chore(router): add JWT to OLAP routes (#386)
This commit is contained in:
@ -105,6 +105,25 @@ impl AuthenticateAndFetch<storage::MerchantAccount> for PublishableKeyAuth {
|
||||
#[derive(Debug)]
|
||||
pub struct JWTAuth;
|
||||
|
||||
#[derive(serde::Deserialize)]
|
||||
struct JwtAuthPayloadFetchUnit {
|
||||
#[serde(rename(deserialize = "exp"))]
|
||||
_exp: u64,
|
||||
}
|
||||
|
||||
#[async_trait]
|
||||
impl AuthenticateAndFetch<()> for JWTAuth {
|
||||
async fn authenticate_and_fetch(
|
||||
&self,
|
||||
request_headers: &HeaderMap,
|
||||
state: &AppState,
|
||||
) -> RouterResult<()> {
|
||||
let mut token = get_jwt(request_headers)?;
|
||||
token = strip_jwt_token(token)?;
|
||||
decode_jwt::<JwtAuthPayloadFetchUnit>(token, state).map(|_| ())
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(serde::Deserialize)]
|
||||
struct JwtAuthPayloadFetchMerchantAccount {
|
||||
merchant_id: String,
|
||||
@ -144,17 +163,17 @@ impl ClientSecretFetch for ListPaymentMethodRequest {
|
||||
}
|
||||
}
|
||||
|
||||
pub fn jwt_auth_or<T>(
|
||||
pub fn jwt_auth_or<'a, T>(
|
||||
default_auth: &'a dyn AuthenticateAndFetch<T>,
|
||||
headers: &HeaderMap,
|
||||
default_auth: Box<dyn AuthenticateAndFetch<T>>,
|
||||
) -> Box<dyn AuthenticateAndFetch<T>>
|
||||
) -> Box<&'a dyn AuthenticateAndFetch<T>>
|
||||
where
|
||||
JWTAuth: AuthenticateAndFetch<T>,
|
||||
{
|
||||
if is_jwt_auth(headers) {
|
||||
return Box::new(JWTAuth);
|
||||
return Box::new(&JWTAuth);
|
||||
}
|
||||
default_auth
|
||||
Box::new(default_auth)
|
||||
}
|
||||
|
||||
pub fn get_auth_type_and_flow(
|
||||
|
||||
Reference in New Issue
Block a user