From f59c6f472d25084aa5f8a116f8cf92f81df09c50 Mon Sep 17 00:00:00 2001 From: metamuffin Date: Mon, 26 Jan 2026 20:04:40 +0100 Subject: can render login ui --- server/src/ui/account/mod.rs | 101 ++++++++++--------------------------------- 1 file changed, 22 insertions(+), 79 deletions(-) (limited to 'server/src/ui') diff --git a/server/src/ui/account/mod.rs b/server/src/ui/account/mod.rs index ec8bd49..765b6aa 100644 --- a/server/src/ui/account/mod.rs +++ b/server/src/ui/account/mod.rs @@ -6,13 +6,9 @@ // pub mod settings; use super::error::MyError; -use crate::{ - request_info::RequestInfo, - ui::{error::MyResult, home::rocket_uri_macro_r_home}, -}; +use crate::{auth::login, request_info::RequestInfo, ui::error::MyResult}; use anyhow::anyhow; -use jellycommon::{VIEW_ACCOUNT_LOGIN, jellyobject::Object}; -use jellyimport::is_importing; +use jellycommon::{VIEW_ACCOUNT_LOGIN, VIEW_ACCOUNT_LOGOUT, jellyobject::Object, routes::u_home}; use jellyui::render_view; use rocket::{ FromForm, @@ -20,7 +16,7 @@ use rocket::{ get, http::{Cookie, CookieJar}, post, - response::{Redirect, content::RawHtml}, + response::{Flash, Redirect, content::RawHtml}, }; use serde::{Deserialize, Serialize}; @@ -34,12 +30,18 @@ pub struct RegisterForm { pub password: String, } -#[get("/account/register")] -pub async fn r_account_register(ri: RequestInfo<'_>) -> RawHtml { +#[get("/account/login")] +pub async fn r_account_login(ri: RequestInfo<'_>) -> RawHtml { let ob = Object::EMPTY.insert(VIEW_ACCOUNT_LOGIN, ()); RawHtml(render_view(ri.render_info(), ob.as_object())) } +#[get("/account/logout")] +pub fn r_account_logout(ri: RequestInfo<'_>) -> RawHtml { + let ob = Object::EMPTY.insert(VIEW_ACCOUNT_LOGOUT, ()); + RawHtml(render_view(ri.render_info(), ob.as_object())) +} + #[derive(FromForm, Serialize, Deserialize)] pub struct LoginForm { #[field(validate = len(4..32))] @@ -50,66 +52,9 @@ pub struct LoginForm { pub expire: u64, } -#[get("/account/login")] -pub fn r_account_login(session: Option>, lang: AcceptLanguage) -> RawHtml { - let AcceptLanguage(lang) = lang; - let logged_in = session.is_some(); - RawHtml(render_page( - &AccountLogin { - lang: &lang, - logged_in, - }, - RenderInfo { - session: session.map(|s| SessionInfo { user: s.0.user }), - importing: is_importing(), - lang, - }, - )) -} - -#[get("/account/logout")] -pub fn r_account_logout(session: Option>, lang: AcceptLanguage) -> RawHtml { - let AcceptLanguage(lang) = lang; - RawHtml(render_page( - &AccountLogout { lang: &lang }, - RenderInfo { - session: session.map(|s| SessionInfo { user: s.0.user }), - importing: is_importing(), - lang, - }, - )) -} - -#[post("/account/register", data = "
")] -pub fn r_account_register_post<'a>( - session: Option>, - lang: AcceptLanguage, - form: Form>, -) -> MyResult> { - let AcceptLanguage(lang) = lang; - let logged_in = session.is_some(); - let form = match &form.value { - Some(v) => v, - None => return Err(MyError(anyhow!(format_form_error(form)))), - }; - - register_user(&form.invitation, &form.username, &form.password)?; - - Ok(RawHtml(render_page( - &AccountRegisterSuccess { - lang: &lang, - logged_in, - }, - RenderInfo { - session: session.map(|s| SessionInfo { user: s.0.user }), - importing: is_importing(), - lang, - }, - ))) -} - #[post("/account/login", data = "")] pub fn r_account_login_post( + ri: RequestInfo<'_>, jar: &CookieJar, form: Form>, ) -> MyResult { @@ -117,22 +62,20 @@ pub fn r_account_login_post( Some(v) => v, None => return Err(MyError(anyhow!(format_form_error(form)))), }; - jar.add( - Cookie::build(( - "session", - login_logic(&form.username, &form.password, None, None)?, - )) - .permanent() - .build(), - ); + let session = login(&ri.state, &form.username, &form.password, None)?; + jar.add(Cookie::build(("session", session)).permanent().build()); - Ok(Redirect::found(rocket::uri!(r_home()))) + Ok(Redirect::found(u_home())) } #[post("/account/logout")] -pub fn r_account_logout_post(jar: &CookieJar) -> MyResult { - jar.remove_private(Cookie::build("session")); - Ok(Redirect::found(rocket::uri!(r_home()))) +pub fn r_account_logout_post(jar: &CookieJar) -> MyResult> { + jar.remove(Cookie::build("session")); + Ok(Flash::new( + Redirect::found(u_home()), + "success", + "Logged out!", + )) } pub fn format_form_error(form: Form>) -> String { -- cgit v1.3