redirect back to original page on logout
Some checks failed
CI / checks (push) Failing after 6m32s

This commit is contained in:
Robin Appelman 2026-07-25 22:34:48 +02:00
commit b41f5089f7

View file

@ -445,7 +445,14 @@ async fn login(
async fn logout(
State(app): State<Arc<App>>,
cookie: Option<TypedHeader<Cookie>>,
referrer: Option<TypedHeader<Referer>>,
) -> impl IntoResponse {
let referrer = referrer
.map(|TypedHeader(referrer)| referrer.to_string())
.map(|referrer| Url::parse(&referrer).ok())
.flatten();
let return_to = referrer.as_ref().map(|url| url.path()).unwrap_or("/");
if let Some(session_cookie) = cookie.as_deref().and_then(|cookie| cookie.get(COOKIE_NAME)) {
if let Ok(Some(cookie)) = app.session_store.load_session(session_cookie.into()).await {
let _ = app.session_store.destroy_session(cookie).await;
@ -462,7 +469,7 @@ async fn logout(
))
.expect("invalid cookie"),
),
(LOCATION, HeaderValue::from_str("/").unwrap()),
(LOCATION, HeaderValue::from_str(return_to).unwrap()),
],
)
}