aboutsummaryrefslogtreecommitdiff
path: root/server/src/ui
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2026-01-26 20:04:40 +0100
committermetamuffin <metamuffin@disroot.org>2026-01-26 20:04:40 +0100
commitf59c6f472d25084aa5f8a116f8cf92f81df09c50 (patch)
treed3282488db81b3c09d34f2aa1ca452c2bef1451c /server/src/ui
parent783d3598753bf84756296a2016e5dab30300519b (diff)
downloadjellything-f59c6f472d25084aa5f8a116f8cf92f81df09c50.tar
jellything-f59c6f472d25084aa5f8a116f8cf92f81df09c50.tar.bz2
jellything-f59c6f472d25084aa5f8a116f8cf92f81df09c50.tar.zst
can render login ui
Diffstat (limited to 'server/src/ui')
-rw-r--r--server/src/ui/account/mod.rs101
1 files changed, 22 insertions, 79 deletions
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<String> {
+#[get("/account/login")]
+pub async fn r_account_login(ri: RequestInfo<'_>) -> RawHtml<String> {
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<String> {
+ 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<A<Session>>, lang: AcceptLanguage) -> RawHtml<String> {
- 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<A<Session>>, lang: AcceptLanguage) -> RawHtml<String> {
- 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 = "<form>")]
-pub fn r_account_register_post<'a>(
- session: Option<A<Session>>,
- lang: AcceptLanguage,
- form: Form<Contextual<'a, RegisterForm>>,
-) -> MyResult<RawHtml<String>> {
- 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 = "<form>")]
pub fn r_account_login_post(
+ ri: RequestInfo<'_>,
jar: &CookieJar,
form: Form<Contextual<LoginForm>>,
) -> MyResult<Redirect> {
@@ -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<Redirect> {
- jar.remove_private(Cookie::build("session"));
- Ok(Redirect::found(rocket::uri!(r_home())))
+pub fn r_account_logout_post(jar: &CookieJar) -> MyResult<Flash<Redirect>> {
+ jar.remove(Cookie::build("session"));
+ Ok(Flash::new(
+ Redirect::found(u_home()),
+ "success",
+ "Logged out!",
+ ))
}
pub fn format_form_error<T>(form: Form<Contextual<T>>) -> String {