aboutsummaryrefslogtreecommitdiffstats
path: root/src/controllers
diff options
context:
space:
mode:
authorHarald Eilertsen <haraldei@anduin.net>2018-01-20 15:46:44 +0100
committerHarald Eilertsen <haraldei@anduin.net>2018-01-20 15:46:44 +0100
commit8a30e06af2359917a671b389b13194f455965b03 (patch)
tree1a7e847da1a48a7d0ff2dc64a6b060d9ecd6315d /src/controllers
parent178a9f444b5250a5b76d3d1a98297da8572a05e5 (diff)
downloadrocket-blog-8a30e06af2359917a671b389b13194f455965b03.tar.gz
rocket-blog-8a30e06af2359917a671b389b13194f455965b03.tar.bz2
rocket-blog-8a30e06af2359917a671b389b13194f455965b03.zip
Add simple unfinished login controller.
It will not actually log you in yet, but will check email/password and report back if it is good or not. More tbd.
Diffstat (limited to 'src/controllers')
-rw-r--r--src/controllers/login_controller.rs38
-rw-r--r--src/controllers/mod.rs1
2 files changed, 39 insertions, 0 deletions
diff --git a/src/controllers/login_controller.rs b/src/controllers/login_controller.rs
new file mode 100644
index 0000000..35841b3
--- /dev/null
+++ b/src/controllers/login_controller.rs
@@ -0,0 +1,38 @@
+use rocket;
+use rocket::request::Form;
+use rocket::response::{Flash, Redirect};
+use models;
+use utils;
+
+#[derive(BartDisplay)]
+#[template = "templates/login.html"]
+pub struct LoginTemplate;
+
+implement_responder_for!(LoginTemplate);
+
+#[get("/", format="text/html")]
+pub fn new(flash: Option<rocket::request::FlashMessage>) -> utils::Page<LoginTemplate> {
+ utils::Page {
+ title: String::from("Log in"),
+ flash: flash.map_or(None, |f| Some(f.msg().to_string())),
+ content: LoginTemplate{}
+ }
+}
+
+#[derive(FromForm)]
+pub struct LoginForm {
+ email: String,
+ password: String,
+}
+
+#[post("/create", data="<login>")]
+pub fn create(login: Form<LoginForm>, conn: utils::DbConn) -> Flash<Redirect> {
+ let login = login.get();
+ if let Ok(user) = models::User::by_email(&login.email, conn) {
+ if user.password == login.password {
+ return Flash::success(Redirect::to("/"), format!("{} logged in successfully", user.realname.or(Some(user.username)).unwrap()));
+ }
+ }
+
+ Flash::error(Redirect::to("/login"), "Invalid email or passoword!")
+}
diff --git a/src/controllers/mod.rs b/src/controllers/mod.rs
index 401071a..4613e5f 100644
--- a/src/controllers/mod.rs
+++ b/src/controllers/mod.rs
@@ -1,3 +1,4 @@
pub mod home_controller;
+pub mod login_controller;
pub mod posts_controller;
pub mod users_controller;