From 651bfc36a8aa5a83c9143e62859623ef35f31c7f Mon Sep 17 00:00:00 2001 From: Kjetil Orbekk Date: Sat, 17 Jun 2017 16:55:09 -0400 Subject: Add login page (not done). --- src/render/mod.rs | 14 ++++++++++++++ src/server.rs | 24 +++++++++++++++++------- 2 files changed, 31 insertions(+), 7 deletions(-) diff --git a/src/render/mod.rs b/src/render/mod.rs index 3b63a68..a824bd6 100644 --- a/src/render/mod.rs +++ b/src/render/mod.rs @@ -32,6 +32,20 @@ fn render_in_page<'a>(content: Box) -> String { }).into_string().unwrap() } +pub fn login_page() -> String { + render_in_page(box_html! { + h1 { : "Log in" } + form(method="post") { + p { : "Username" } + input(type="text", name="username") {} + p { : "Password" } + input(type="text", name="password") {} + p {} + input(type="submit", value="Log in") {} + } + }) +} + fn unit_table<'a>(units: &'a [&unit::Unit]) -> Box { fn render_unit<'a>(unit: &'a unit::Unit) -> Box { box_html! { diff --git a/src/server.rs b/src/server.rs index 9e63cb3..f34489f 100644 --- a/src/server.rs +++ b/src/server.rs @@ -5,7 +5,7 @@ use iron_sessionstorage::backends::SignedCookieBackend; use iron::status; use iron::modifiers::Header; use iron::headers::ContentType; -use iron::{Iron, Request, IronResult, Response, Chain, Listening}; +use iron::{Iron, IronError, Request, IronResult, Response, Chain, Listening}; use iron::error::{HttpResult}; use router::Router; use systemd::unit; @@ -33,12 +33,6 @@ impl iron_sessionstorage::Value for Login { fn overview(r: &mut Request) -> IronResult { let mut _value = try!(r.session().get::()); - let name = r.extensions - .get::() - .unwrap() - .find("name") - .unwrap_or("World").to_owned(); - let units = unit::get_units("*").unwrap(); let sections = ["service", "timer", "socket", "target", "slice", "mount", @@ -98,10 +92,26 @@ fn unit_status(r: &mut Request) -> IronResult { render::unit_status(&unit, &log)))) } +fn login(r: &mut Request) -> IronResult { + Ok(Response::with((status::Ok, + Header(ContentType::html()), + render::login_page()))) +} + +fn login_submit(r: &mut Request) -> IronResult { + Ok(Response::with((status::Ok, + Header(ContentType::plaintext()), + "login"))) + // TODO: Need this to get params: + // https://github.com/iron/params +} + pub fn serve(port: u16) -> HttpResult { let secret = b"secret2".to_vec(); let router = router!( root: get "/" => overview, + login: get "/login" => login, + login_submit: post "/login" => login_submit, details: get "/status/:unit" => unit_status, journal: get "/journal/:unit" => journal, css: get "/static/main.css" => Static::new(""), -- cgit v1.2.3