use axum::extract::State; use axum::response::{IntoResponse, Redirect, Response}; use axum_extra::extract::cookie::CookieJar; use crate::http::login::{LoginError, login_page}; use crate::http::{HttpState, OptionalHttpSession}; pub async fn logout( State(state): State, session: Option, cookies: CookieJar, ) -> Response { let Some(session) = session else { return (cookies, Redirect::to("/")).into_response(); }; let cookies = state.sessions.remove_session(&session, cookies); ( cookies, login_page(State(state), Some(LoginError::SessionInvalidated)).await, ) .into_response() }