19880: Password based login fix
authorPeter Amstutz <peter.amstutz@curii.com>
Fri, 16 Dec 2022 19:36:50 +0000 (14:36 -0500)
committerPeter Amstutz <peter.amstutz@curii.com>
Fri, 16 Dec 2022 19:36:50 +0000 (14:36 -0500)
Now sends user to wb1 front page instead of controller login endpoint
that returns an error.

Arvados-DCO-1.1-Signed-off-by: Peter Amstutz <peter.amstutz@curii.com>

apps/workbench/app/models/arvados_api_client.rb
apps/workbench/app/views/users/welcome.html.erb

index 47fcc4ce51ffe1aafb288453b9d9c6a0b777bd0d..25a4e74b70ca405fd8f3b8e760897ba8197d53ca 100644 (file)
@@ -235,19 +235,35 @@ class ArvadosApiClient
   end
 
   def arvados_login_url(params={})
+    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)
+      if Rails.configuration.testing_override_login_url
+        uri = URI(Rails.configuration.testing_override_login_url)
+      end
+      uri.path = "/login"
+      uri.query = URI.encode_www_form(params)
+    end
+    uri.to_s
+  end
+
+  def arvados_logout_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)
     end
-    uri.path = "/login"
+    uri.path = "/logout"
     uri.query = URI.encode_www_form(params)
     uri.to_s
   end
 
-  def arvados_logout_url(params={})
-    arvados_login_url(params).sub('/login','/logout')
-  end
-
   def arvados_v1_base
     # workaround Ruby 2.3 bug, can't duplicate URI objects
     # https://github.com/httprb/http/issues/388
index 92fd6dad4615c1e618663c08e237e786c3f659fd..69009a03d43288fe1bfe2f172cd2008a3e5817bf 100644 (file)
@@ -57,7 +57,7 @@ SPDX-License-Identifier: AGPL-3.0 %>
           <p>password <input type="password" class="form-control" name="login-password" value=""
                             id="login-password" style="width: 50%"
                             oninput="clear_authenticate_error()"></input></p>
-        <input type="hidden" name="return_to" value="<%= "#{Rails.configuration.Services.Workbench1.ExternalURL}" %>" id="login-return-to">
+        <input type="hidden" name="return_to" value="<%= params[:return_to] || "#{Rails.configuration.Services.Workbench1.ExternalURL}" %>" id="login-return-to">
         <span style="color: red"><p id="login-authenticate-error"></p></span>
         <button type="submit" class="btn btn-primary">Log in</button>
         </form>