diff --git a/src/server/gpodder/advanced/auth.rs b/src/server/gpodder/advanced/auth.rs index b0bccaf..242082a 100644 --- a/src/server/gpodder/advanced/auth.rs +++ b/src/server/gpodder/advanced/auth.rs @@ -10,13 +10,10 @@ use axum_extra::{ }; use cookie::time::Duration; -use crate::{ - gpodder, - server::{ - error::{AppError, AppResult}, - gpodder::SESSION_ID_COOKIE, - Context, - }, +use crate::server::{ + error::{AppError, AppResult}, + gpodder::SESSION_ID_COOKIE, + Context, }; pub fn router() -> Router { @@ -36,31 +33,6 @@ async fn post_login( return Err(AppError::BadRequest); } - // If a session token is present, we check if it's valid first and do nothing if it is - if let Some(session_id) = jar - .get(SESSION_ID_COOKIE) - .and_then(|c| c.value().parse::().ok()) - { - let ctx = ctx.clone(); - match tokio::task::spawn_blocking(move || { - let session = ctx.store.get_session(session_id)?; - ctx.store.refresh_session(&session)?; - - Ok(session) - }) - .await - .unwrap() - { - Ok(_) => { - return Ok(jar); - } - Err(gpodder::AuthErr::UnknownSession) => {} - Err(err) => { - return Err(AppError::from(err)); - } - } - } - let session = tokio::task::spawn_blocking(move || { let user = ctx .store @@ -71,12 +43,7 @@ async fn post_login( .unwrap()?; Ok(jar.add( - Cookie::build((SESSION_ID_COOKIE, session.id.to_string())) - .secure(false) - .same_site(cookie::SameSite::Strict) - .http_only(true) - .path("/api") - .max_age(Duration::days(365)), + Cookie::build((SESSION_ID_COOKIE, session.id.to_string())).max_age(Duration::days(365)), )) } diff --git a/src/server/gpodder/models.rs b/src/server/gpodder/models.rs index 6098a9f..b2268af 100644 --- a/src/server/gpodder/models.rs +++ b/src/server/gpodder/models.rs @@ -1,4 +1,4 @@ -use chrono::{DateTime, NaiveDateTime, Utc}; +use chrono::{DateTime, Utc}; use serde::{Deserialize, Serialize}; use crate::gpodder; @@ -66,7 +66,7 @@ pub enum EpisodeActionType { pub struct EpisodeAction { pub podcast: String, pub episode: String, - pub timestamp: Option, + pub timestamp: Option, #[serde(default)] pub device: Option, #[serde(flatten)] @@ -160,7 +160,7 @@ impl From for EpisodeAction { Self { podcast: value.podcast, episode: value.episode, - timestamp: value.timestamp.map(|ts| ts.naive_utc()), + timestamp: value.timestamp.map(|ts| ts.timestamp()), device: value.device, action: value.action.into(), } @@ -173,7 +173,9 @@ impl From for gpodder::EpisodeAction { podcast: value.podcast, episode: value.episode, // TODO remove this unwrap - timestamp: value.timestamp.map(|ts| ts.and_utc()), + timestamp: value + .timestamp + .map(|ts| DateTime::from_timestamp(ts, 0).unwrap()), device: value.device, action: value.action.into(), time_changed: DateTime::::MIN_UTC,