X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/614145d096375ae18c7020e8f9205eaa2a1d0d39..4823a1b88754ef8dc3a4fe3fcb549cb4e6f34246:/services/api/app/models/api_client.rb?ds=sidebyside diff --git a/services/api/app/models/api_client.rb b/services/api/app/models/api_client.rb index c6c48a5b6b..55a4c6706c 100644 --- a/services/api/app/models/api_client.rb +++ b/services/api/app/models/api_client.rb @@ -15,24 +15,38 @@ class ApiClient < ArvadosModel end def is_trusted - (from_trusted_url && Rails.configuration.Login.TokenLifetime == 0) || super + (from_trusted_url && Rails.configuration.Login.IssueTrustedTokens) || super end protected def from_trusted_url - norm(self.url_prefix) == norm(Rails.configuration.Services.Workbench1.ExternalURL) || - norm(self.url_prefix) == norm(Rails.configuration.Services.Workbench2.ExternalURL) + norm_url_prefix = norm(self.url_prefix) + + [Rails.configuration.Services.Workbench1.ExternalURL, + Rails.configuration.Services.Workbench2.ExternalURL, + "https://controller.api.client.invalid"].each do |url| + if norm_url_prefix == norm(url) + return true + end + end + + Rails.configuration.Login.TrustedClients.keys.each do |url| + if norm_url_prefix == norm(url) + return true + end + end + + false end def norm url # normalize URL for comparison - url = URI(url) - if url.scheme == "https" - url.port == "443" - end - if url.scheme == "http" - url.port == "80" + url = URI(url.to_s) + if url.scheme == "https" && url.port == "" + url.port = "443" + elsif url.scheme == "http" && url.port == "" + url.port = "80" end url.path = "/" url