diff options
author | Harald Eilertsen <haraldei@anduin.net> | 2018-01-20 15:46:44 +0100 |
---|---|---|
committer | Harald Eilertsen <haraldei@anduin.net> | 2018-01-20 15:46:44 +0100 |
commit | 8a30e06af2359917a671b389b13194f455965b03 (patch) | |
tree | 1a7e847da1a48a7d0ff2dc64a6b060d9ecd6315d /src/controllers | |
parent | 178a9f444b5250a5b76d3d1a98297da8572a05e5 (diff) | |
download | rocket-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.rs | 38 | ||||
-rw-r--r-- | src/controllers/mod.rs | 1 |
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; |