9362a10
ZhenYi
refactor: remove OAuth-related modules and update references for identity service integration
9362a10
use config::jwt::JwtConfig;
use config::session::SameSite;
pub fn read_cookie<'a>(cookie_header: &'a str, name: &str) -> Option<&'a str> {
cookie_header.split(';').find_map(|pair| {
let (key, value) = pair.split_once('=')?;
if key.trim() == name {
Some(value.trim())
} else {
None
}
})
}
pub fn session_cookie(config: &JwtConfig, token: &str, max_age_secs: i64) -> String {
build(
&config.session_cookie,
token,
max_age_secs,
&config.cookie_path,
&config.cookie_domain,
config.cookie_secure,
config.cookie_same_site,
)
}
pub fn clear_session_cookie(config: &JwtConfig) -> String {
session_cookie(config, "", 0)
}
fn build(
name: &str,
value: &str,
max_age_secs: i64,
path: &str,
domain: &str,
secure: bool,
same_site: SameSite,
) -> String {
let mut cookie = format!("{name}={value}; Path={path}; Max-Age={max_age_secs}; HttpOnly");
if !domain.is_empty() {
cookie.push_str("; Domain=");
cookie.push_str(domain);
}
if secure {
cookie.push_str("; Secure");
}
cookie.push_str("; SameSite=");
cookie.push_str(match same_site {
SameSite::Strict => "Strict",
SameSite::Lax => "Lax",
SameSite::None => "None",
});
cookie
}