diff options
author | Jesse Luehrs <doy@tozt.net> | 2019-11-25 13:46:51 -0500 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2019-11-25 13:46:51 -0500 |
commit | 64134b9e72d6d3aff19354f77d211c046bd9086b (patch) | |
tree | eb83f6a5cb0ee27e0fc0b531964935a21fe677aa /teleterm/src/web.rs | |
parent | fb08af01454c5dff7690a1cc86718d0d29d01092 (diff) | |
download | teleterm-64134b9e72d6d3aff19354f77d211c046bd9086b.tar.gz teleterm-64134b9e72d6d3aff19354f77d211c046bd9086b.zip |
make logins persistent
so if the server knows we're logged in, don't show the login page
Diffstat (limited to 'teleterm/src/web.rs')
-rw-r--r-- | teleterm/src/web.rs | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/teleterm/src/web.rs b/teleterm/src/web.rs index 07ece12..c06cb71 100644 --- a/teleterm/src/web.rs +++ b/teleterm/src/web.rs @@ -22,6 +22,26 @@ struct SessionData { username: Option<String>, } +#[derive(Debug, serde::Serialize)] +struct WebConfig<'a> { + title: &'a str, + username: Option<&'a str>, + public_address: &'a str, +} + +impl<'a> WebConfig<'a> { + fn new(config: &'a Config, session: &'a SessionData) -> Self { + Self { + title: &config.title, + username: session + .username + .as_ref() + .map(std::string::String::as_str), + public_address: &config.public_address, + } + } +} + pub struct Server { server: Box<dyn futures::Future<Item = (), Error = ()> + Send>, } @@ -116,7 +136,11 @@ fn serve_template( ) -> impl gotham::handler::Handler + Copy { move |state| { let config = Config::borrow_from(&state); - let rendered = view::HANDLEBARS.render(name, &config).unwrap(); + let session = gotham::middleware::session::SessionData::< + crate::web::SessionData, + >::borrow_from(&state); + let web_config = WebConfig::new(config, session); + let rendered = view::HANDLEBARS.render(name, &web_config).unwrap(); let response = hyper::Response::builder() .header("Content-Type", content_type) .body(hyper::Body::from(rendered)) |