Merge branch '19954-permission-dedup-doc'
[arvados.git] / apps / workbench / app / models / arvados_api_client.rb
index 6be15c698746d0c073fe3394451ad03aedad1952..2abcf49e5742a0fb5a9c7d15a16291787fc7498e 100644 (file)
@@ -40,7 +40,7 @@ class ArvadosApiClient
     def initialize(request_url, api_response)
       @api_status = api_response.status_code
       @api_response_s = api_response.content
-      @api_response = Oj.load(@api_response_s, :symbol_keys => true)
+      @api_response = Oj.strict_load(@api_response_s, :symbol_keys => true)
       errors = @api_response[:errors]
       if errors.respond_to?(:join)
         errors = errors.join("\n\n")
@@ -61,7 +61,7 @@ class ArvadosApiClient
     404 => NotFoundException,
   }
 
-  @@profiling_enabled = Rails.configuration.profiling_enabled
+  @@profiling_enabled = Rails.configuration.Workbench.ProfilingEnabled
   @@discovery = nil
 
   # An API client object suitable for handling API requests on behalf
@@ -101,7 +101,7 @@ class ArvadosApiClient
             .select { |ca_path| File.readable?(ca_path) }
             .each { |ca_path| @api_client.ssl_config.add_trust_ca(ca_path) }
         end
-        if Rails.configuration.api_response_compression
+        if Rails.configuration.Workbench.APIResponseCompression
           @api_client.transparent_gzip_decompression = true
         end
       end
@@ -167,7 +167,7 @@ class ArvadosApiClient
     end
 
     begin
-      resp = Oj.load(msg.content, :symbol_keys => true)
+      resp = Oj.strict_load(msg.content, :symbol_keys => true)
     rescue Oj::ParseError
       resp = nil
     end
@@ -235,17 +235,37 @@ class ArvadosApiClient
   end
 
   def arvados_login_url(params={})
-    uri = URI.parse(Rails.configuration.Services.Controller.ExternalURL.to_s)
     if Rails.configuration.testing_override_login_url
       uri = URI(Rails.configuration.testing_override_login_url)
+      uri.path = "/login"
+      uri.query = URI.encode_www_form(params)
+      return uri.to_s
+    end
+
+    case
+    when Rails.configuration.Login.PAM.Enable,
+         Rails.configuration.Login.LDAP.Enable,
+         Rails.configuration.Login.Test.Enable
+
+      uri = URI.parse(Rails.configuration.Services.Workbench1.ExternalURL.to_s)
+      uri.path = "/users/welcome"
+      uri.query = URI.encode_www_form(params)
+    else
+      uri = URI.parse(Rails.configuration.Services.Controller.ExternalURL.to_s)
+      uri.path = "/login"
+      uri.query = URI.encode_www_form(params)
     end
-    uri.path = "/login"
-    uri.query = URI.encode_www_form(params)
     uri.to_s
   end
 
   def arvados_logout_url(params={})
-    arvados_login_url(params).sub('/login','/logout')
+    uri = URI.parse(Rails.configuration.Services.Controller.ExternalURL.to_s)
+    if Rails.configuration.testing_override_login_url
+      uri = URI(Rails.configuration.testing_override_login_url)
+    end
+    uri.path = "/logout"
+    uri.query = URI.encode_www_form(params)
+    uri.to_s
   end
 
   def arvados_v1_base