diff options
-rw-r--r-- | teleterm/src/protocol.rs | 4 | ||||
-rw-r--r-- | teleterm/src/web.rs | 12 | ||||
-rw-r--r-- | teleterm/src/web/list.rs | 4 | ||||
-rw-r--r-- | teleterm/src/web/login.rs | 5 | ||||
-rw-r--r-- | teleterm/src/web/watch.rs | 4 |
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, |