From 2e25c505325f6fe45be9774bb17be9de2ef6cb90 Mon Sep 17 00:00:00 2001 From: Araozu Date: Fri, 9 Feb 2024 20:37:11 -0500 Subject: [PATCH] Minimal htmx form --- src/controller/user.rs | 23 ++++++++++++++++++----- src/view/mod.rs | 24 +++++++++++++++++------- static/img/favicon.png | Bin 0 -> 4987 bytes tailwind.config.js | 7 ++++++- 4 files changed, 41 insertions(+), 13 deletions(-) create mode 100644 static/img/favicon.png diff --git a/src/controller/user.rs b/src/controller/user.rs index 8b5d3c3..c2dbb3c 100644 --- a/src/controller/user.rs +++ b/src/controller/user.rs @@ -1,5 +1,5 @@ use maud::{Markup, html}; -use rocket::form::Form; +use rocket::{form::Form, http::Status}; #[derive(FromForm, Debug)] pub struct UserCreate { @@ -10,10 +10,23 @@ pub struct UserCreate { } #[post("/user", data = "")] -pub async fn create_user(user: Form) -> Markup { - println!("Got a user: {:?}", user); +pub async fn create_user(user: Form) -> (Status, Markup) { + // Email domain must be eegsac.com + let email_domain = user.user_email.split('@').collect::>()[1]; - html! { - ":D" + if email_domain != "eegsac.com" { + return (Status::BadRequest, html! { + div id="user_create_response" class="bg-red-500 text-white p-2 rounded" { + "El dominio del correo electrónico debe ser eegsac.com" + } + }); } + + + + (Status::Ok, html! { + div id="user_create_response" class="bg-green-700 text-white p-2 rounded" { + "Registrado con éxito" + } + }) } diff --git a/src/view/mod.rs b/src/view/mod.rs index 45800dd..85fcd5e 100644 --- a/src/view/mod.rs +++ b/src/view/mod.rs @@ -8,24 +8,34 @@ pub fn index() -> Markup { head { title { "EEGSAC" } link rel="stylesheet" type="text/css" href="/static/css/output.css"; + link rel="icon" type="image/png" href="/static/img/favicon.png"; script defer src="https://unpkg.com/htmx.org@1.9.10" crossorigin="anonymous" {} + script defer src="https://unpkg.com/htmx.org/dist/ext/response-targets.js" {} } - body { + body hx-ext="response-targets" { h1 { "Registrar nuevo usuario" } form - action="/f/user" - method="post" + hx-post="/f/user" + hx-target="#user_create_response" + hx-target-400="#user_create_response" + hx-swap="outerHTML" { - input type="text" name="user_names" placeholder="Nombres"; + input class="bg-c-bg text-c-on-bg border border-c-on-bg" + required type="text" name="user_names" placeholder="Nombres"; br; - input type="text" name="user_surnames" placeholder="Apellidos"; + input class="bg-c-bg text-c-on-bg border border-c-on-bg" + required type="text" name="user_surnames" placeholder="Apellidos"; br; - input type="email" name="user_email" placeholder="Correo electrónico"; + input class="bg-c-bg text-c-on-bg border border-c-on-bg" + required type="email" name="user_email" placeholder="Correo electrónico"; br; - input type="password" name="user_password" placeholder="Contraseña"; + input class="bg-c-bg text-c-on-bg border border-c-on-bg" + required type="password" name="user_password" placeholder="Contraseña"; br; input type="submit" value="Registrar"; } + br; + div id="user_create_response" {} } } } diff --git a/static/img/favicon.png b/static/img/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..48a4534c07fbc34506ceea85611d6ed96f0ee71e GIT binary patch literal 4987 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 literal 0 HcmV?d00001 diff --git a/tailwind.config.js b/tailwind.config.js index 76320e9..e9c97ae 100644 --- a/tailwind.config.js +++ b/tailwind.config.js @@ -4,7 +4,12 @@ module.exports = { "./src/**/*.{html,rs}", ], theme: { - extend: {}, + extend: { + colors: { + "c-bg": "var(--c-bg)", + "c-on-bg": "var(--c-on-bg)", + } + }, }, plugins: [], }