aboutsummaryrefslogtreecommitdiffstats
path: root/teleterm/src
diff options
context:
space:
mode:
Diffstat (limited to 'teleterm/src')
-rw-r--r--teleterm/src/web.rs26
-rw-r--r--teleterm/src/web/login.rs14
2 files changed, 37 insertions, 3 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))
diff --git a/teleterm/src/web/login.rs b/teleterm/src/web/login.rs
index a678b95..decc972 100644
--- a/teleterm/src/web/login.rs
+++ b/teleterm/src/web/login.rs
@@ -9,6 +9,11 @@ pub struct QueryParams {
username: Option<String>,
}
+#[derive(serde::Serialize)]
+struct Response {
+ username: Option<String>,
+}
+
pub fn run(
mut state: gotham::state::State,
) -> (gotham::state::State, hyper::Response<hyper::Body>) {
@@ -20,7 +25,12 @@ pub fn run(
crate::web::SessionData,
>::borrow_mut_from(&mut state);
- session.username = username;
+ session.username = username.clone();
- (state, hyper::Response::new(hyper::Body::from("{}")))
+ (
+ state,
+ hyper::Response::new(hyper::Body::from(
+ serde_json::to_string(&Response { username }).unwrap(),
+ )),
+ )
}