diff --git a/crates/ezidam/src/page.rs b/crates/ezidam/src/page.rs index b4ee5c5..5767283 100644 --- a/crates/ezidam/src/page.rs +++ b/crates/ezidam/src/page.rs @@ -13,6 +13,7 @@ pub enum Page { Error(Error), Setup, Homepage(Homepage), + SignIn(SignIn), } impl Page { @@ -22,6 +23,7 @@ impl Page { Page::Error(_) => "pages/error", Page::Setup => "pages/setup", Page::Homepage(_) => "pages/homepage", + Page::SignIn(_) => "pages/auth/sign_in", } } @@ -31,6 +33,7 @@ impl Page { Page::Error(_) => "Error", Page::Setup => "Setup", Page::Homepage(_) => "Home", + Page::SignIn(_) => "Sign in", } } @@ -40,6 +43,7 @@ impl Page { Page::Error(_) => None, Page::Setup => None, Page::Homepage(_) => Some(Item::Home.into()), + Page::SignIn(_) => None, } } @@ -49,6 +53,7 @@ impl Page { Page::Error(error) => Box::new(error), Page::Setup => Box::new(()), Page::Homepage(homepage) => Box::new(homepage), + Page::SignIn(sig_in) => Box::new(sig_in), } } } diff --git a/crates/ezidam/src/page/content.rs b/crates/ezidam/src/page/content.rs index d719b1f..cef2738 100644 --- a/crates/ezidam/src/page/content.rs +++ b/crates/ezidam/src/page/content.rs @@ -1,2 +1,3 @@ pub use crate::error::content::*; +pub use crate::routes::auth::content::*; pub use crate::routes::root::content::*; diff --git a/crates/ezidam/src/routes.rs b/crates/ezidam/src/routes.rs index 710562c..336f1c6 100644 --- a/crates/ezidam/src/routes.rs +++ b/crates/ezidam/src/routes.rs @@ -1,5 +1,6 @@ use rocket::{Build, Rocket}; +pub mod auth; pub mod root; pub mod setup; @@ -32,4 +33,5 @@ pub fn routes(rocket_builder: Rocket) -> Rocket { .mount("/", root::routes()) // Setup .mount("/setup", setup::routes()) + .mount("/auth", auth::routes()) } diff --git a/crates/ezidam/src/routes/auth.rs b/crates/ezidam/src/routes/auth.rs new file mode 100644 index 0000000..a92705d --- /dev/null +++ b/crates/ezidam/src/routes/auth.rs @@ -0,0 +1,95 @@ +use super::prelude::*; +use rocket::{get, post}; +use settings::Settings; +use users::User; + +pub fn routes() -> Vec { + routes![sign_in_page, sign_in] +} + +pub mod content { + use rocket::serde::Serialize; + + #[derive(Serialize)] + #[serde(crate = "rocket::serde")] + #[derive(Clone)] + pub struct SignIn { + pub business_name: String, + } +} + +// TODO: default page when signed in -> redirect to home + +#[get("/sign_in", rank = 2)] +async fn sign_in_page( + mut db: Connection, + flash: Option>, +) -> Result