diff --git a/src/web/pages/dashboard.rs b/src/web/pages/dashboard.rs index 2f544ae..79cf8e5 100644 --- a/src/web/pages/dashboard.rs +++ b/src/web/pages/dashboard.rs @@ -1,6 +1,9 @@ -use axum::extract::{Request, State}; +use axum::{ + extract::{Request, State}, + response::{IntoResponse, Redirect, Response}, +}; use chrono::{DateTime, Utc}; -use maud::{Markup, PreEscaped, html}; +use maud::{PreEscaped, html}; use crate::{ MnemoState, @@ -21,12 +24,15 @@ const LINKS: &[(&str, &str, &str)] = &[ ("Add Person", "/persons", icons::CONTACT), ]; -pub async fn page(State(state): State, req: Request) -> Result { +pub async fn page( + State(state): State, + req: Request, +) -> Result { let mut conn = state.pool.acquire().await?; - let u = User::authenticate(&mut *conn, req.headers()) - .await - .ok() - .flatten(); + let u = match User::authenticate(&mut *conn, req.headers()).await? { + Some(u) => Some(u), + None => return Ok(Redirect::to(&format!("/login?r={}", req.uri().path())).into_response()), + }; let newest_quote = match u { Some(_) => Quote::get_newest(&mut *conn).await?, @@ -114,7 +120,7 @@ pub async fn page(State(state): State, req: Request) -> Result) -> String {