aboutsummaryrefslogtreecommitdiffstats
path: root/teleterm-web/src/views/login.rs
diff options
context:
space:
mode:
Diffstat (limited to 'teleterm-web/src/views/login.rs')
-rw-r--r--teleterm-web/src/views/login.rs36
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"
+ ]]
+}