From a7ebc62a80933a73eae2282827e74dfaeb107820 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Wed, 27 Nov 2019 11:29:09 -0500 Subject: calculate the redirect_url for web oauth too a bit more complicated because it needs to use the configured public_address, etc --- teleterm/src/cmd/web.rs | 17 ++++++++++++++--- teleterm/src/config.rs | 20 +++++--------------- teleterm/src/oauth.rs | 4 ++++ 3 files changed, 23 insertions(+), 18 deletions(-) (limited to 'teleterm') diff --git a/teleterm/src/cmd/web.rs b/teleterm/src/cmd/web.rs index 889179b..a9dc830 100644 --- a/teleterm/src/cmd/web.rs +++ b/teleterm/src/cmd/web.rs @@ -38,9 +38,20 @@ impl crate::config::Config for Config { self.oauth_configs .iter() .filter_map(|(ty, configs)| { - configs - .get(&crate::protocol::AuthClient::Web) - .map(|config| (*ty, config.clone())) + configs.get(&crate::protocol::AuthClient::Web).map( + |config| { + let mut config = config.clone(); + // TODO: tls + let url = url::Url::parse(&format!( + "http://{}/oauth/{}", + self.web.public_address, + ty.name() + )) + .unwrap(); + config.set_redirect_url(url); + (*ty, config) + }, + ) }) .collect(), )) diff --git a/teleterm/src/config.rs b/teleterm/src/config.rs index 4000cb7..95d5366 100644 --- a/teleterm/src/config.rs +++ b/teleterm/src/config.rs @@ -913,22 +913,12 @@ where auth_client, }) .map_err(serde::de::Error::custom)?; + // this is wrong for Web configs, but it gets fixed up + // later since we need to calculate the real value from + // other parts of the config let redirect_url = - if auth_client == crate::protocol::AuthClient::Cli { - url::Url::parse(crate::oauth::CLI_REDIRECT_URL) - .unwrap() - } else { - config - .redirect_url - .context( - crate::error::OauthMissingConfiguration { - field: "redirect_url", - auth_type, - auth_client, - }, - ) - .map_err(serde::de::Error::custom)? - }; + url::Url::parse(crate::oauth::CLI_REDIRECT_URL) + .unwrap(); crate::oauth::RecurseCenter::config( &client_id, &client_secret, diff --git a/teleterm/src/oauth.rs b/teleterm/src/oauth.rs index 5283957..4e4ad72 100644 --- a/teleterm/src/oauth.rs +++ b/teleterm/src/oauth.rs @@ -145,6 +145,10 @@ pub struct Config { } impl Config { + pub fn set_redirect_url(&mut self, url: url::Url) { + self.redirect_url = url; + } + fn into_basic_client(self) -> oauth2::basic::BasicClient { oauth2::basic::BasicClient::new( oauth2::ClientId::new(self.client_id), -- cgit v1.2.3-54-g00ecf