diff options
Diffstat (limited to 'teleterm-web/src/views/login.rs')
-rw-r--r-- | teleterm-web/src/views/login.rs | 36 |
1 files changed, 35 insertions, 1 deletions
diff --git a/teleterm-web/src/views/login.rs b/teleterm-web/src/views/login.rs index a7d50c8..7f84f4d 100644 --- a/teleterm-web/src/views/login.rs +++ b/teleterm-web/src/views/login.rs @@ -1,6 +1,31 @@ use crate::prelude::*; -pub(crate) fn render(_: &crate::model::Model) -> Vec<Node<crate::Msg>> { +pub(crate) fn render(model: &crate::model::Model) -> Vec<Node<crate::Msg>> { + let plain = model.allowed_login_method(crate::protocol::AuthType::Plain); + let recurse_center_url = if model + .allowed_login_method(crate::protocol::AuthType::RecurseCenter) + { + model.oauth_login_url(crate::protocol::AuthType::RecurseCenter) + } else { + None + }; + + let mut view = vec![]; + + if plain { + view.extend(render_plain()); + } + if plain && recurse_center_url.is_some() { + view.push(seed::p!["or"]) + } + if let Some(url) = recurse_center_url { + view.extend(render_recurse_center(&url)); + } + + view +} + +fn render_plain() -> Vec<Node<crate::Msg>> { vec![seed::form![ seed::label![seed::attrs! { At::For => "username" }, "username"], seed::input![seed::attrs! { @@ -21,3 +46,12 @@ pub(crate) fn render(_: &crate::model::Model) -> Vec<Node<crate::Msg>> { }), ]] } + +fn render_recurse_center(url: &str) -> Vec<Node<crate::Msg>> { + vec![seed::a![ + seed::attrs! { + At::Href => url, + }, + "login via oauth" + ]] +} |