From 330b6bdd4fd7ba84784254d4bdeb2a720161684e Mon Sep 17 00:00:00 2001 From: Araozu Date: Sun, 23 Jun 2024 20:45:30 -0500 Subject: [PATCH] Redirect to login. Login view --- src/controller/mod.rs | 16 ++++++++++++---- src/controller/utils.rs | 5 ++--- src/main.rs | 10 +++++++++- src/view/login.rs | 37 +++++++++++++++++++++++++++++++++++++ src/view/mod.rs | 1 + 5 files changed, 61 insertions(+), 8 deletions(-) create mode 100644 src/view/login.rs diff --git a/src/controller/mod.rs b/src/controller/mod.rs index a155805..984f763 100644 --- a/src/controller/mod.rs +++ b/src/controller/mod.rs @@ -1,17 +1,25 @@ use maud::Markup; -use rocket::http::Status; +use rocket::{http::Status, response::Redirect}; mod utils; - #[get("/")] pub fn homepage() -> Markup { crate::view::homepage() } #[get("/new")] -pub fn new_definition(user: utils::User) -> (Status, Markup) { - +pub fn new_definition(_user: utils::User) -> (Status, Markup) { todo!() } +#[get("/new", rank = 2)] +pub fn new_definition_redirect() -> Redirect { + println!("carita feliz :D"); + Redirect::to("/login") +} + +#[get("/login")] +pub fn login_page() -> Markup { + crate::view::login::login() +} diff --git a/src/controller/utils.rs b/src/controller/utils.rs index f850188..614661f 100644 --- a/src/controller/utils.rs +++ b/src/controller/utils.rs @@ -6,8 +6,7 @@ use rocket::{ /// Name of the header that stores the session ID of an user const RS_SESSION_ID: &str = "x-rs-session-id"; -pub struct User { -} +pub struct User {} #[rocket::async_trait] impl<'r> FromRequest<'r> for User { @@ -18,7 +17,7 @@ impl<'r> FromRequest<'r> for User { let _session_cookie = match session_cookie { Some(cookie) => cookie.value().to_string(), - None => return Outcome::Error((Status::Unauthorized, "Unauthorized".into())), + None => return Outcome::Forward(Status::Unauthorized), }; // Check if session cookie is valid diff --git a/src/main.rs b/src/main.rs index aeae0fa..ad03074 100644 --- a/src/main.rs +++ b/src/main.rs @@ -9,6 +9,14 @@ use rocket::fs::{relative, FileServer}; #[launch] fn rocket() -> _ { rocket::build() - .mount("/", routes![controller::homepage, controller::new_definition]) + .mount( + "/", + routes![ + controller::homepage, + controller::new_definition, + controller::new_definition_redirect, + controller::login_page, + ], + ) .mount("/static", FileServer::from(relative!("static"))) } diff --git a/src/view/login.rs b/src/view/login.rs new file mode 100644 index 0000000..691ce41 --- /dev/null +++ b/src/view/login.rs @@ -0,0 +1,37 @@ +use maud::{html, Markup}; + +use super::skeleton; + +pub fn login() -> Markup { + skeleton(html! { + h1 class="text-3xl font-bold text-center my-4 fixed top-0 w-screen" { + "Jerguero" + } + div class="flex items-center h-screen w-full" { + div class="container mx-auto" { + p class="my-4 p-2 rounded bg-c-bg-2 text-c-on-bg" { + "¡Iniciá sesión para comenzar a crear definiciones!" + } + div class="my-4 py-4 px-2 rounded bg-c-bg-2 text-c-on-bg" { + div class="py-2" { + label class="text-sm opacity-85" for="login-email" {"Correo electronico:"} + br; + input class="inline-block w-full rounded bg-c-bg text-c-on-bg py-2 px-1" id="login-email"; + } + + div class="py-2" { + label class="text-sm opacity-85" for="login-password" {"Contraseña:"} + br; + input class="inline-block w-full rounded bg-c-bg text-c-on-bg py-2 px-1" id="login-password"; + } + + div class="text-center pt-2" { + button type="submit" class="py-1 px-2 rounded bg-c-primary text-c-on-primary hover:underline" { + "Iniciar sesión" + } + } + } + } + } + }) +} diff --git a/src/view/mod.rs b/src/view/mod.rs index e700fe7..779c742 100644 --- a/src/view/mod.rs +++ b/src/view/mod.rs @@ -1,6 +1,7 @@ use maud::{html, Markup, DOCTYPE}; mod icons; +pub mod login; use icons::{bird, magnifying_glass};