llldap/src/http/logout.rs

23 lines
678 B
Rust
Raw Normal View History

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<HttpState>,
session: Option<OptionalHttpSession>,
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()
}