Fix 2.4.2 upgrade notes formatting refs #19330
[arvados.git] / apps / workbench / app / views / users / welcome.html.erb
index 05f71573debc417bc7170b89b06b752d4f48c8c0..92fd6dad4615c1e618663c08e237e786c3f659fd 100644 (file)
@@ -1,9 +1,75 @@
-<h1>Please log in to use Arvados Workbench.</h1>
-</p>
-<p style="margin-top: 1em">
-When you click on the button below you will be taken to a Google sign-in page.  After entering your information, you will be redirected back to the Arvados Workbench.  If you have never used Arvados before, logging in for the first time will also create a new user account.  Arvados uses Google services for only for identification, and will never access any personal information.
-</p>
-<p style="margin-top: 1em">
-  <a  class="btn btn-primary" href="<%= $arvados_api_client.arvados_login_url(return_to: request.url) %>">Click here to log in to Arvados Workbench with a Google account</a>
-</p>
+<%# Copyright (C) The Arvados Authors. All rights reserved.
 
+SPDX-License-Identifier: AGPL-3.0 %>
+
+<% content_for :breadcrumbs do raw '<!-- -->' end %>
+
+<%= javascript_tag do %>
+      function controller_password_authenticate(event) {
+        event.preventDefault()
+        document.getElementById('login-authenticate-error').innerHTML = '';
+        fetch('<%= "#{Rails.configuration.Services.Controller.ExternalURL}" %>arvados/v1/users/authenticate', {
+          method: 'POST',
+
+          headers: {'Content-Type': 'application/json'},
+          body: JSON.stringify({
+            username: document.getElementById('login-username').value,
+            password: document.getElementById('login-password').value,
+          }),
+        }).then(function(resp) {
+          if (!resp.ok) {
+            resp.json().then(function(respj) {
+              document.getElementById('login-authenticate-error').innerHTML = "<p>"+respj.errors[0]+"</p>";
+            });
+            return;
+           }
+
+           var redir = document.getElementById('login-return-to').value
+           if (redir.indexOf('?') > 0) {
+             redir += '&'
+           } else {
+             redir += '?'
+           }
+           resp.json().then(function(respj) {
+             document.location = redir + "api_token=v2/" + respj.uuid + "/" + respj.api_token;
+           });
+         });
+      }
+      function clear_authenticate_error() {
+        document.getElementById('login-authenticate-error').innerHTML = "";
+      }
+<% end %>
+
+<div class="row">
+  <div class="col-sm-8 col-sm-push-4" style="margin-top: 1em">
+    <div class="well clearfix">
+
+      <%= raw(Rails.configuration.Workbench.WelcomePageHTML) %>
+
+      <% case %>
+      <% when Rails.configuration.Login.PAM.Enable,
+              Rails.configuration.Login.LDAP.Enable,
+              Rails.configuration.Login.Test.Enable %>
+        <form id="login-form-tag" onsubmit="controller_password_authenticate(event)">
+          <p>username <input type="text" class="form-control" name="login-username"
+                            value="" id="login-username" style="width: 50%"
+                            oninput="clear_authenticate_error()"></input></p>
+          <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">
+        <span style="color: red"><p id="login-authenticate-error"></p></span>
+        <button type="submit" class="btn btn-primary">Log in</button>
+        </form>
+      <% else %>
+        <div class="pull-right">
+          <%= link_to arvados_api_client.arvados_login_url(return_to: request.url), class: "btn btn-primary" do %>
+          Log in to <%= Rails.configuration.Workbench.SiteName %>
+          <i class="fa fa-fw fa-arrow-circle-right"></i>
+          <% end %>
+        </div>
+      <% end %>
+
+    </div>
+  </div>
+</div>