From 3b15caade07e8fbe351fed9aceb3f435bf58368e Mon Sep 17 00:00:00 2001 From: metamuffin Date: Mon, 26 May 2025 18:24:16 +0200 Subject: move all direct database access to logic crate --- server/src/ui/account/mod.rs | 24 +++------------ server/src/ui/account/settings.rs | 64 ++++++++++++++++++++------------------- 2 files changed, 37 insertions(+), 51 deletions(-) (limited to 'server/src/ui/account') diff --git a/server/src/ui/account/mod.rs b/server/src/ui/account/mod.rs index 51da348..2a513a9 100644 --- a/server/src/ui/account/mod.rs +++ b/server/src/ui/account/mod.rs @@ -11,13 +11,8 @@ use crate::{ ui::{error::MyResult, home::rocket_uri_macro_r_home}, }; use anyhow::anyhow; -use jellycommon::user::User; use jellyimport::is_importing; -use jellylogic::{ - login::{hash_password, login_logic}, - session::Session, - Database, -}; +use jellylogic::{account::register_user, login::login_logic, session::Session}; use jellyui::{ account::{AccountLogin, AccountLogout, AccountRegister, AccountRegisterSuccess}, render_page, @@ -29,7 +24,7 @@ use rocket::{ http::{Cookie, CookieJar}, post, response::{content::RawHtml, Redirect}, - FromForm, State, + FromForm, }; use serde::{Deserialize, Serialize}; @@ -98,7 +93,6 @@ pub fn r_account_logout(session: Option>, lang: AcceptLanguage) -> Ra #[post("/account/register", data = "
")] pub fn r_account_register_post<'a>( - database: &'a State, session: Option>, form: Form>, lang: AcceptLanguage, @@ -110,16 +104,7 @@ pub fn r_account_register_post<'a>( None => return Err(MyError(anyhow!(format_form_error(form)))), }; - database.register_user( - &form.invitation, - &form.username, - User { - display_name: form.username.clone(), - name: form.username.clone(), - password: hash_password(&form.username, &form.password), - ..Default::default() - }, - )?; + register_user(&form.invitation, &form.username, &form.password)?; Ok(RawHtml(render_page( &AccountRegisterSuccess { @@ -136,7 +121,6 @@ pub fn r_account_register_post<'a>( #[post("/account/login", data = "")] pub fn r_account_login_post( - database: &State, jar: &CookieJar, form: Form>, ) -> MyResult { @@ -147,7 +131,7 @@ pub fn r_account_login_post( jar.add( Cookie::build(( "session", - login_logic(database, &form.username, &form.password, None, None)?, + login_logic(&form.username, &form.password, None, None)?, )) .permanent() .build(), diff --git a/server/src/ui/account/settings.rs b/server/src/ui/account/settings.rs index f1a367d..7d1b7af 100644 --- a/server/src/ui/account/settings.rs +++ b/server/src/ui/account/settings.rs @@ -3,14 +3,20 @@ which is licensed under the GNU Affero General Public License (version 3); see /COPYING. Copyright (C) 2025 metamuffin */ -use super::{format_form_error, hash_password}; +use super::format_form_error; use crate::{ helper::{language::AcceptLanguage, A}, ui::error::MyResult, }; use jellycommon::user::{PlayerKind, Theme}; use jellyimport::is_importing; -use jellylogic::{session::Session, Database}; +use jellylogic::{ + account::{ + update_user_display_name, update_user_native_secret, update_user_password, + update_user_player_preference, update_user_theme, + }, + session::Session, +}; use jellyui::{ account::settings::SettingsPage, locale::{tr, Language}, @@ -21,7 +27,7 @@ use rocket::{ form::{self, validate::len, Contextual, Form}, get, post, response::content::RawHtml, - FromForm, State, + FromForm, }; use std::ops::Range; @@ -70,7 +76,6 @@ pub fn r_account_settings(session: A, lang: AcceptLanguage) -> RawHtml< #[post("/account/settings", data = "")] pub fn r_account_settings_post( session: A, - database: &State, form: Form>, lang: AcceptLanguage, ) -> MyResult> { @@ -90,33 +95,30 @@ pub fn r_account_settings_post( let mut out = String::new(); - database.update_user(&session.user.name, |user| { - if let Some(password) = &form.password { - user.password = hash_password(&session.user.name, password); - out += &*tr(lang, "settings.account.password.changed"); - out += "\n"; - } - if let Some(display_name) = &form.display_name { - user.display_name = display_name.clone(); - out += &*tr(lang, "settings.account.display_name.changed"); - out += "\n"; - } - if let Some(theme) = form.theme { - user.theme = theme.0; - out += &*tr(lang, "settings.account.theme.changed"); - out += "\n"; - } - if let Some(player_preference) = form.player_preference { - user.player_preference = player_preference.0; - out += &*tr(lang, "settings.player_preference.changed"); - out += "\n"; - } - if let Some(native_secret) = &form.native_secret { - user.native_secret = native_secret.to_owned(); - out += "Native secret updated.\n"; - } - Ok(()) - })?; + if let Some(password) = &form.password { + update_user_password(&session, password)?; + out += &*tr(lang, "settings.account.password.changed"); + out += "\n"; + } + if let Some(display_name) = &form.display_name { + update_user_display_name(&session, display_name)?; + out += &*tr(lang, "settings.account.display_name.changed"); + out += "\n"; + } + if let Some(theme) = form.theme { + update_user_theme(&session, theme.0)?; + out += &*tr(lang, "settings.account.theme.changed"); + out += "\n"; + } + if let Some(player_preference) = form.player_preference { + update_user_player_preference(&session, player_preference.0)?; + out += &*tr(lang, "settings.player_preference.changed"); + out += "\n"; + } + if let Some(native_secret) = &form.native_secret { + update_user_native_secret(&session, native_secret)?; + out += "Native secret updated.\n"; + } Ok(settings_page( session, // using the old session here, results in outdated theme being displayed -- cgit v1.2.3-70-g09d2