aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--teleterm/src/protocol.rs4
-rw-r--r--teleterm/src/web.rs12
-rw-r--r--teleterm/src/web/list.rs4
-rw-r--r--teleterm/src/web/login.rs5
-rw-r--r--teleterm/src/web/watch.rs4
5 files changed, 20 insertions, 9 deletions
diff --git a/teleterm/src/protocol.rs b/teleterm/src/protocol.rs
index 5633b8e..85aee31 100644
--- a/teleterm/src/protocol.rs
+++ b/teleterm/src/protocol.rs
@@ -185,7 +185,9 @@ impl std::convert::TryFrom<&str> for AuthType {
}
}
-#[derive(Debug, Clone, PartialEq, Eq, serde::Serialize)]
+#[derive(
+ Debug, Clone, PartialEq, Eq, serde::Deserialize, serde::Serialize,
+)]
pub enum Auth {
Plain {
username: String,
diff --git a/teleterm/src/web.rs b/teleterm/src/web.rs
index cfd33c5..48c8c3c 100644
--- a/teleterm/src/web.rs
+++ b/teleterm/src/web.rs
@@ -34,9 +34,15 @@ impl Config {
}
}
+#[derive(Debug, serde::Deserialize, serde::Serialize)]
+pub(crate) struct LoginState {
+ auth: crate::protocol::Auth,
+ username: String,
+}
+
#[derive(Default, serde::Deserialize, serde::Serialize)]
struct SessionData {
- username: Option<String>,
+ login: Option<LoginState>,
}
#[derive(Debug, serde::Serialize)]
@@ -62,9 +68,9 @@ impl<'a> WebConfig<'a> {
}
Ok(Self {
username: session
- .username
+ .login
.as_ref()
- .map(std::string::String::as_str),
+ .map(|login| login.username.as_str()),
public_address: &config.public_address,
allowed_login_methods: &config.allowed_login_methods,
oauth_login_urls,
diff --git a/teleterm/src/web/list.rs b/teleterm/src/web/list.rs
index 2acc9e5..e35efac 100644
--- a/teleterm/src/web/list.rs
+++ b/teleterm/src/web/list.rs
@@ -8,8 +8,8 @@ pub fn run(
let session = gotham::middleware::session::SessionData::<
crate::web::SessionData,
>::borrow_from(&state);
- let auth = if let Some(username) = &session.username {
- crate::protocol::Auth::plain(username)
+ let auth = if let Some(login) = &session.login {
+ &login.auth
} else {
return (
state,
diff --git a/teleterm/src/web/login.rs b/teleterm/src/web/login.rs
index decc972..876cebe 100644
--- a/teleterm/src/web/login.rs
+++ b/teleterm/src/web/login.rs
@@ -25,7 +25,10 @@ pub fn run(
crate::web::SessionData,
>::borrow_mut_from(&mut state);
- session.username = username.clone();
+ session.login = username.clone().map(|username| super::LoginState {
+ username: username.clone(),
+ auth: crate::protocol::Auth::plain(&username),
+ });
(
state,
diff --git a/teleterm/src/web/watch.rs b/teleterm/src/web/watch.rs
index 8f59704..bb44639 100644
--- a/teleterm/src/web/watch.rs
+++ b/teleterm/src/web/watch.rs
@@ -18,8 +18,8 @@ pub fn run(
let session = gotham::middleware::session::SessionData::<
crate::web::SessionData,
>::borrow_from(&state);
- let auth = if let Some(username) = &session.username {
- crate::protocol::Auth::plain(username)
+ let auth = if let Some(login) = &session.login {
+ login.auth.clone()
} else {
return (
state,