mirror of
https://github.com/CloudNebulaProject/barycenter.git
synced 2026-04-10 21:20:41 +00:00
Fix code formatting issues identified by cargo fmt: - Reorder imports alphabetically - Break long lines and function calls - Add proper line breaks in struct initialization - Format conditional statements consistently Update CI workflow to be less strict: - Make security audit job informational (continue-on-error) - Remove resource-intensive coverage job for now - Security audit will still run but won't block PRs due to dependency vulnerabilities we can't directly fix The rsa crate vulnerability (RUSTSEC-2023-0071) is a transitive dependency from openidconnect and has no available fix yet. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
53 lines
1.5 KiB
Rust
53 lines
1.5 KiB
Rust
use crate::settings::Settings;
|
|
use axum::http::HeaderMap;
|
|
|
|
pub const SESSION_COOKIE_NAME: &str = "barycenter_session";
|
|
|
|
#[derive(Clone, Debug)]
|
|
pub struct SessionCookie {
|
|
pub session_id: String,
|
|
}
|
|
|
|
impl SessionCookie {
|
|
pub fn new(session_id: String) -> Self {
|
|
Self { session_id }
|
|
}
|
|
|
|
pub fn from_headers(headers: &HeaderMap) -> Option<Self> {
|
|
let cookie_header = headers.get(axum::http::header::COOKIE)?.to_str().ok()?;
|
|
|
|
// Parse cookie header for our session cookie
|
|
for cookie in cookie_header.split(';') {
|
|
let cookie = cookie.trim();
|
|
if let Some(value) = cookie
|
|
.strip_prefix(SESSION_COOKIE_NAME)
|
|
.and_then(|s| s.strip_prefix('='))
|
|
{
|
|
return Some(Self {
|
|
session_id: value.to_string(),
|
|
});
|
|
}
|
|
}
|
|
None
|
|
}
|
|
|
|
pub fn to_cookie_header(&self, settings: &Settings) -> String {
|
|
let secure = settings.issuer().starts_with("https://");
|
|
let max_age = 3600; // 1 hour default
|
|
|
|
format!(
|
|
"{}={}; HttpOnly; {}SameSite=Lax; Path=/; Max-Age={}",
|
|
SESSION_COOKIE_NAME,
|
|
self.session_id,
|
|
if secure { "Secure; " } else { "" },
|
|
max_age
|
|
)
|
|
}
|
|
|
|
pub fn delete_cookie_header() -> String {
|
|
format!(
|
|
"{}=; HttpOnly; SameSite=Lax; Path=/; Max-Age=0",
|
|
SESSION_COOKIE_NAME
|
|
)
|
|
}
|
|
}
|