aboutsummaryrefslogtreecommitdiffstats
path: root/teleterm/src/web.rs
diff options
context:
space:
mode:
Diffstat (limited to 'teleterm/src/web.rs')
-rw-r--r--teleterm/src/web.rs19
1 files changed, 19 insertions, 0 deletions
diff --git a/teleterm/src/web.rs b/teleterm/src/web.rs
index 992b79d..07ece12 100644
--- a/teleterm/src/web.rs
+++ b/teleterm/src/web.rs
@@ -1,4 +1,6 @@
+mod disk_session;
mod list;
+mod login;
mod view;
mod watch;
mod ws;
@@ -15,6 +17,11 @@ struct Config {
public_address: String,
}
+#[derive(Default, serde::Deserialize, serde::Serialize)]
+struct SessionData {
+ username: Option<String>,
+}
+
pub struct Server {
server: Box<dyn futures::Future<Item = (), Error = ()> + Send>,
}
@@ -54,6 +61,14 @@ fn router(data: &Config) -> impl gotham::handler::NewHandler {
.add(gotham::middleware::state::StateMiddleware::new(
data.clone(),
))
+ .add(
+ gotham::middleware::session::NewSessionMiddleware::new(
+ disk_session::DiskSession,
+ )
+ .insecure()
+ .with_cookie_name("teleterm")
+ .with_session_type::<SessionData>(),
+ )
.build(),
);
gotham::router::builder::build_router(chain, pipeline, |route| {
@@ -75,6 +90,10 @@ fn router(data: &Config) -> impl gotham::handler::NewHandler {
.get("/watch")
.with_query_string_extractor::<watch::QueryParams>()
.to(watch::run);
+ route
+ .get("/login")
+ .with_query_string_extractor::<login::QueryParams>()
+ .to(login::run);
})
}