From 26c362a32a0856e912e95ac5f87c0241b36d5e2b Mon Sep 17 00:00:00 2001 From: metamuffin Date: Sun, 1 Mar 2026 20:18:05 +0100 Subject: display login errors as flash --- server/src/ui/account/mod.rs | 38 ++++++++++++++++++++++++-------------- server/src/ui/admin/users.rs | 3 +-- 2 files changed, 25 insertions(+), 16 deletions(-) (limited to 'server') diff --git a/server/src/ui/account/mod.rs b/server/src/ui/account/mod.rs index 9e5fa39..df8bec5 100644 --- a/server/src/ui/account/mod.rs +++ b/server/src/ui/account/mod.rs @@ -7,13 +7,11 @@ pub mod settings; -use super::error::MyError; use crate::{ auth::{hash_password, login}, request_info::RequestInfo, ui::error::MyResult, }; -use anyhow::anyhow; use jellycommon::{ jellyobject::Path, routes::{u_account_login, u_home}, @@ -64,14 +62,25 @@ pub fn r_account_login_post( ri: RequestInfo<'_>, jar: &CookieJar, form: Form>, -) -> MyResult>> { +) -> MyResult, RawHtml>>> { let form = match &form.value { Some(v) => v, - None => return Err(MyError(anyhow!(format_form_error(form)))), + None => { + return Ok(Either::Right(Either::Left(Flash::error( + Redirect::to(u_account_login()), + format_form_error(form), + )))); + } + }; + let (session, need_pw_change) = match login(&ri.state, &form.username, &form.password, None) { + Ok(x) => x, + Err(e) => { + return Ok(Either::Right(Either::Left(Flash::error( + Redirect::to(u_account_login()), + format!("{e:#}"), + )))); + } }; - - let (session, need_pw_change) = login(&ri.state, &form.username, &form.password, None)?; - if need_pw_change { if let Some(new_password) = &form.new_password { let password_hash = hash_password(&form.username, &new_password); @@ -92,11 +101,13 @@ pub fn r_account_login_post( Ok(()) })?; } else { - return Ok(Either::Right(ri.respond_ui(&AccountSetPassword { - ri: &ri.render_info(), - password: &form.password, - username: &form.username, - }))); + return Ok(Either::Right(Either::Right(ri.respond_ui( + &AccountSetPassword { + ri: &ri.render_info(), + password: &form.password, + username: &form.username, + }, + )))); } } @@ -107,9 +118,8 @@ pub fn r_account_login_post( #[post("/account/logout")] pub fn r_account_logout_post(jar: &CookieJar) -> MyResult> { jar.remove(Cookie::build("session")); - Ok(Flash::new( + Ok(Flash::success( Redirect::found(u_account_login()), - "success", "Logged out!", )) } diff --git a/server/src/ui/admin/users.rs b/server/src/ui/admin/users.rs index 4b11279..f5fef24 100644 --- a/server/src/ui/admin/users.rs +++ b/server/src/ui/admin/users.rs @@ -71,9 +71,8 @@ pub fn r_admin_new_user(ri: RequestInfo, form: Form) -> MyResult