mirror of
https://github.com/juspay/hyperswitch.git
synced 2025-10-29 00:49:42 +08:00
feat(users): Implemented cookie parsing for auth (#4298)
Co-authored-by: hyperswitch-bot[bot] <148525504+hyperswitch-bot[bot]@users.noreply.github.com>
This commit is contained in:
@ -5,6 +5,7 @@ use common_utils::date_time;
|
||||
use error_stack::{report, ResultExt};
|
||||
use jsonwebtoken::{decode, Algorithm, DecodingKey, Validation};
|
||||
use masking::PeekInterface;
|
||||
use router_env::logger;
|
||||
use serde::Serialize;
|
||||
|
||||
use self::blacklist::BlackList;
|
||||
@ -33,7 +34,6 @@ use crate::{
|
||||
utils::OptionExt,
|
||||
};
|
||||
pub mod blacklist;
|
||||
#[cfg(feature = "olap")]
|
||||
pub mod cookies;
|
||||
|
||||
#[derive(Clone, Debug)]
|
||||
@ -598,6 +598,15 @@ where
|
||||
A: AppStateInfo + Sync,
|
||||
{
|
||||
let token = get_jwt_from_authorization_header(headers)?;
|
||||
if let Some(token_from_cookies) = get_cookie_from_header(headers)
|
||||
.ok()
|
||||
.and_then(|cookies| cookies::parse_cookie(cookies).ok())
|
||||
{
|
||||
logger::info!(
|
||||
"Cookie header and authorization header JWT comparison result: {}",
|
||||
token == token_from_cookies
|
||||
);
|
||||
}
|
||||
let payload = decode_jwt(token, state).await?;
|
||||
|
||||
Ok(payload)
|
||||
@ -959,6 +968,13 @@ pub fn get_jwt_from_authorization_header(headers: &HeaderMap) -> RouterResult<&s
|
||||
.ok_or(errors::ApiErrorResponse::InvalidJwtToken.into())
|
||||
}
|
||||
|
||||
pub fn get_cookie_from_header(headers: &HeaderMap) -> RouterResult<&str> {
|
||||
headers
|
||||
.get(cookies::get_cookie_header())
|
||||
.and_then(|header_value| header_value.to_str().ok())
|
||||
.ok_or(errors::ApiErrorResponse::InvalidCookie.into())
|
||||
}
|
||||
|
||||
pub fn strip_jwt_token(token: &str) -> RouterResult<&str> {
|
||||
token
|
||||
.strip_prefix("Bearer ")
|
||||
|
||||
Reference in New Issue
Block a user