From 0a59954c1ed6c28862d5901211f14dfd6ca7e234 Mon Sep 17 00:00:00 2001 From: Stuart Owen Date: Tue, 25 Aug 2026 14:29:35 +0100 Subject: [PATCH 1/3] Streamline login for single provider instances (#2720) Send the user straight to the provider when it is the only way to log in, rather than showing a login page containing a single button. This only applies to providers that redirect out to an external service - LDAP and the SEEK password form still need the login page to collect credentials. Registering is never skipped, as the terms and conditions have to be accepted first. /auth/:provider is POST only, so this is a self submitting form rather than a redirect, with the button left visible as a fallback. A requested strategy or a flash error suppresses it, so a failed login lands on the login page instead of bouncing straight back to the provider. Hide the Register links when registration is disabled, and enforce that on POST /users, which previously still created accounts. The login panel footer also drops the password reset link when there is no SEEK password to reset, and disappears entirely when neither link applies. --- app/controllers/users_controller.rb | 8 ++ app/helpers/sessions_helper.rb | 32 +++++-- app/views/gadgets/_sign_in.html.erb | 13 ++- app/views/homes/_home_features.html.erb | 4 +- app/views/layouts/navbar/_navbar.html.erb | 4 +- app/views/sessions/_auto_login.html.erb | 11 +++ app/views/sessions/new.html.erb | 7 +- test/functional/homes_controller_test.rb | 15 ++++ test/functional/sessions_controller_test.rb | 96 +++++++++++++++++++++ test/functional/users_controller_test.rb | 44 ++++++++++ 10 files changed, 221 insertions(+), 13 deletions(-) create mode 100644 app/views/sessions/_auto_login.html.erb diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index f823dc2024..19c6ba390c 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -1,6 +1,7 @@ class UsersController < ApplicationController before_action :is_current_user_auth, only: %i[edit update] before_action :is_user_admin_auth, only: %i[impersonate resend_activation_email destroy activate_other] + before_action :redirect_if_registration_disabled, only: :create skip_before_action :project_membership_required @@ -197,6 +198,13 @@ def user_params params.require(:user).permit(permitted_params) end + def redirect_if_registration_disabled + return unless Seek::Config.registration_disabled + + flash[:error] = Seek::Config.registration_disabled_description + redirect_to main_app.root_path + end + def check_registration if @user.save successful_registration diff --git a/app/helpers/sessions_helper.rb b/app/helpers/sessions_helper.rb index 9778ba14d5..b9b664b54d 100644 --- a/app/helpers/sessions_helper.rb +++ b/app/helpers/sessions_helper.rb @@ -1,4 +1,9 @@ module SessionsHelper + LOGIN_STRATEGIES = %i[password elixir_aai ldap github oidc].freeze + + # strategies that take the user straight to an external provider, with no form to fill in first + REDIRECTING_LOGIN_STRATEGIES = %i[elixir_aai github oidc].freeze + # a person can be logged in but not fully registered during # the registration process whilst selecting or creating a profile def logged_in_and_registered? @@ -11,13 +16,28 @@ def admin_logged_in? end def detect_default_login_strategy - return 'password' if show_standard_password_login? - return 'elixir_aai' if show_elixir_aai_login? - return 'ldap' if show_ldap_login? - return 'github' if show_github_login? - return 'oidc' if show_oidc_login? + available_login_strategies.first&.to_s + end + + # the login strategies currently available, in order of preference + def available_login_strategies + LOGIN_STRATEGIES.select do |strategy| + strategy == :password ? show_standard_password_login? : send("show_#{strategy}_login?") + end + end + + # the only way to log in, when that is a provider the user can be sent straight to + def sole_redirecting_login_strategy + strategies = available_login_strategies + strategies.first if strategies.one? && REDIRECTING_LOGIN_STRATEGIES.include?(strategies.first) + end + + # the provider to send the user straight to, skipping the login page altogether. + # the strategy and error checks stop a failed login bouncing straight back to the provider. + def auto_login_strategy + return if params[:strategy].present? || flash[:error].present? - nil + sole_redirecting_login_strategy end # returns true if there is somebody logged in and they are an project manager diff --git a/app/views/gadgets/_sign_in.html.erb b/app/views/gadgets/_sign_in.html.erb index d0a2f2b474..a636c42f1c 100644 --- a/app/views/gadgets/_sign_in.html.erb +++ b/app/views/gadgets/_sign_in.html.erb @@ -103,10 +103,15 @@ - + <% show_registration_link = !Seek::Config.registration_disabled %> + <% show_forgotten_password_link = show_standard_password_login? %> + <% if show_registration_link || show_forgotten_password_link %> + + <% end %> <% end -%> diff --git a/app/views/homes/_home_features.html.erb b/app/views/homes/_home_features.html.erb index 71a0ff62d4..0fa1b59caf 100644 --- a/app/views/homes/_home_features.html.erb +++ b/app/views/homes/_home_features.html.erb @@ -28,6 +28,8 @@
<%= link_to 'Learn more', Seek::Config.instance_link, target: '_blank', rel: 'noopener', class: 'btn btn-primary btn-lg pull-left' %> - <%= link_to 'Register', signup_path, class: 'btn btn-primary btn-lg pull-right' %> + <% unless Seek::Config.registration_disabled %> + <%= link_to 'Register', signup_path, class: 'btn btn-primary btn-lg pull-right' %> + <% end %>
\ No newline at end of file diff --git a/app/views/layouts/navbar/_navbar.html.erb b/app/views/layouts/navbar/_navbar.html.erb index d2d41b0063..4081de7051 100644 --- a/app/views/layouts/navbar/_navbar.html.erb +++ b/app/views/layouts/navbar/_navbar.html.erb @@ -33,7 +33,9 @@ <% if logged_in_and_registered? %> <%= render :partial => "layouts/navbar/user_menu" %> <% else %> -
  • <%= link_to 'Register', signup_path %>
  • + <% unless Seek::Config.registration_disabled %> +
  • <%= link_to 'Register', signup_path %>
  • + <% end %>
  • <%= link_to 'Log in', login_path(:return_to => params[:return_to] || request.original_fullpath) %>
  • <% end %> diff --git a/app/views/sessions/_auto_login.html.erb b/app/views/sessions/_auto_login.html.erb new file mode 100644 index 0000000000..46387c480a --- /dev/null +++ b/app/views/sessions/_auto_login.html.erb @@ -0,0 +1,11 @@ +<% original_path ||= request.original_fullpath %> +
    +

    Redirecting to <%= omniauth_method_name(strategy) %>…

    + <%= form_tag omniauth_authorize_path(strategy, state: "return_to:#{original_path}"), id: 'auto-login-form' do %> + <%= submit_tag "Sign in with #{omniauth_method_name(strategy)}", class: 'btn btn-primary', id: 'auto_login_button' %> + <% end %> +
    + + diff --git a/app/views/sessions/new.html.erb b/app/views/sessions/new.html.erb index 2cc48a863b..3f93134281 100644 --- a/app/views/sessions/new.html.erb +++ b/app/views/sessions/new.html.erb @@ -4,6 +4,11 @@

    <%= link_to "Sign out", logout_url %>

    <% else %>
    - <%= render :partial => "gadgets/sign_in", :locals => {:original_path => params[:return_to]} %> + <% if (auto_strategy = auto_login_strategy) %> + <%= render partial: 'sessions/auto_login', + locals: { strategy: auto_strategy, original_path: params[:return_to] } %> + <% else %> + <%= render :partial => "gadgets/sign_in", :locals => {:original_path => params[:return_to]} %> + <% end %>
    <% end %> diff --git a/test/functional/homes_controller_test.rb b/test/functional/homes_controller_test.rb index 3fd714e646..cffae57d76 100644 --- a/test/functional/homes_controller_test.rb +++ b/test/functional/homes_controller_test.rb @@ -813,4 +813,19 @@ def reddit_feed_url end end + + test 'should hide the register button when registration is disabled' do + with_config_value(:home_show_features, true) do + get :index + assert_response :success + assert_select '#home-features a[href=?]', signup_path, 1 + + with_config_value(:registration_disabled, true) do + get :index + assert_response :success + assert_select '#home-features a[href=?]', signup_path, count: 0 + end + end + end + end diff --git a/test/functional/sessions_controller_test.rb b/test/functional/sessions_controller_test.rb index dd79da7fa9..37eeb502f9 100644 --- a/test/functional/sessions_controller_test.rb +++ b/test/functional/sessions_controller_test.rb @@ -305,6 +305,102 @@ class SessionsControllerTest < ActionController::TestCase end end + test 'should skip the login page when there is a single omniauth provider' do + with_config_values(standard_login_enabled: false, omniauth_enabled: true, + omniauth_ldap_enabled: false, omniauth_github_enabled: false, + omniauth_elixir_aai_enabled: false, omniauth_oidc_enabled: true) do + get :new + assert_response :success + assert_select '#login-panel', count: 0 + assert_select 'form#auto-login-form[action^=?]', '/auth/oidc' + assert_select 'form#auto-login-form input#auto_login_button[value=?]', 'Sign in with SEEK Testing OIDC' + end + end + + test 'should not skip the login page when there is more than one login option' do + with_config_values(standard_login_enabled: true, omniauth_enabled: true, + omniauth_ldap_enabled: false, omniauth_github_enabled: false, + omniauth_elixir_aai_enabled: false, omniauth_oidc_enabled: true) do + get :new + assert_response :success + assert_select 'form#auto-login-form', count: 0 + assert_select '#login-panel', 1 + assert_select '#oidc_login a', 1 + end + end + + test 'should not skip the login page for a provider with its own form' do + with_config_values(standard_login_enabled: false, omniauth_enabled: true, + omniauth_ldap_enabled: true, omniauth_github_enabled: false, + omniauth_elixir_aai_enabled: false, omniauth_oidc_enabled: false) do + get :new + assert_response :success + assert_select 'form#auto-login-form', count: 0 + assert_select '#ldap_login input[name="username"]', 1 + end + end + + test 'should not skip the login page when a strategy is requested' do + with_config_values(standard_login_enabled: false, omniauth_enabled: true, + omniauth_ldap_enabled: false, omniauth_github_enabled: false, + omniauth_elixir_aai_enabled: false, omniauth_oidc_enabled: true) do + get :new, params: { strategy: 'oidc' } + assert_response :success + assert_select 'form#auto-login-form', count: 0 + assert_select '#oidc_login a', 1 + end + end + + test 'should not skip the login page after a failed login' do + with_config_values(standard_login_enabled: false, omniauth_enabled: true, + omniauth_ldap_enabled: false, omniauth_github_enabled: false, + omniauth_elixir_aai_enabled: false, omniauth_oidc_enabled: true) do + get :new, flash: { error: 'Something went wrong' } + assert_response :success + assert_select 'form#auto-login-form', count: 0 + assert_select '#oidc_login a', 1 + end + end + + test 'should still reach the password form when skipping the login page' do + with_config_values(standard_login_enabled: false, omniauth_enabled: true, + omniauth_ldap_enabled: false, omniauth_github_enabled: false, + omniauth_elixir_aai_enabled: false, omniauth_oidc_enabled: true) do + get :new, params: { show_standard_login: true } + assert_response :success + assert_select 'form#auto-login-form', count: 0 + assert_select 'div.tab-content div#password_login', 1 + end + end + + test 'should hide registration and password reset links when unavailable' do + FactoryBot.create(:user) + + get :new + assert_select '.panel-footer a[href=?]', signup_path, 1 + assert_select '.panel-footer a[href=?]', forgot_password_path, 1 + + with_config_value(:registration_disabled, true) do + get :new + assert_select '.panel-footer a[href=?]', signup_path, count: 0 + assert_select '.panel-footer a[href=?]', forgot_password_path, 1 + end + + # no SEEK password to reset when standard login is unavailable + with_config_values(standard_login_enabled: false, omniauth_enabled: true, + omniauth_ldap_enabled: true, omniauth_github_enabled: false, + omniauth_elixir_aai_enabled: false, omniauth_oidc_enabled: true) do + get :new + assert_select '.panel-footer a[href=?]', signup_path, 1 + assert_select '.panel-footer a[href=?]', forgot_password_path, count: 0 + + with_config_value(:registration_disabled, true) do + get :new + assert_select '.panel-footer', count: 0 + end + end + end + protected def cookie_for(user) diff --git a/test/functional/users_controller_test.rb b/test/functional/users_controller_test.rb index b2082fbdd3..e0ba9528fc 100644 --- a/test/functional/users_controller_test.rb +++ b/test/functional/users_controller_test.rb @@ -574,6 +574,50 @@ def test_update_password end end + test 'should not register when registration is disabled' do + with_config_value(:registration_disabled, true) do + assert_no_difference('User.count') do + create_user + end + assert_redirected_to root_path + assert_equal Seek::Config.registration_disabled_description, flash[:error] + end + end + + test 'should hide the register link when registration is disabled' do + get :new + assert_response :success + assert_select 'a[href=?]', signup_path + + with_config_value(:registration_disabled, true) do + get :new + assert_response :success + assert_select 'a[href=?]', signup_path, count: 0 + assert_select '#home_description', 1 + end + end + + # unlike logging in, registering is never sent straight to the provider - the terms and + # conditions have to be accepted first, and they are only presented on this page + test 'should not skip the registration page when there is a single omniauth provider' do + with_config_values(standard_login_enabled: false, omniauth_enabled: true, + omniauth_ldap_enabled: false, omniauth_github_enabled: false, + omniauth_elixir_aai_enabled: false, omniauth_oidc_enabled: true) do + get :new + assert_response :success + assert_select 'form#auto-login-form', count: 0 + assert_select '#login-panel', 1 + assert_select '#oidc_registration a[name=?]', 'commit', 1 + + with_config_value(:terms_enabled, true) do + get :new + assert_response :success + assert_select 'form#auto-login-form', count: 0 + assert_select '#oidc_registration input[name=?]', 'tc_agree', 1 + end + end + end + protected def create_user(options = {}) From 800d415d3d0ec35506b58bb5a07b24d1a3099120 Mon Sep 17 00:00:00 2001 From: Stuart Owen Date: Tue, 25 Aug 2026 14:40:56 +0100 Subject: [PATCH 2/3] Put skipping the login page behind a setting, off by default (#2720) Sending the user straight to the provider changes the login flow for everyone on an instance that has turned off the standard login, which isn't always wanted - landing on an unfamiliar site can be disorienting, and going back from the provider returns to the login page and is redirected out again. Add "omniauth_skip_login_page" so an administrator opts in, alongside the standard login setting it pairs with. --- app/controllers/admin_controller.rb | 1 + app/helpers/sessions_helper.rb | 1 + app/views/admin/_omniauth.html.erb | 4 ++++ config/initializers/seek_configuration.rb | 1 + lib/seek/config_setting_attributes.yml | 1 + test/functional/sessions_controller_test.rb | 24 +++++++++++++++------ 6 files changed, 26 insertions(+), 6 deletions(-) diff --git a/app/controllers/admin_controller.rb b/app/controllers/admin_controller.rb index 97836fb07d..fb2486e191 100644 --- a/app/controllers/admin_controller.rb +++ b/app/controllers/admin_controller.rb @@ -75,6 +75,7 @@ def update_features_enabled end Seek::Config.omniauth_enabled = string_to_boolean params[:omniauth_enabled] + Seek::Config.omniauth_skip_login_page = string_to_boolean params[:omniauth_skip_login_page] Seek::Config.standard_login_enabled = string_to_boolean params[:standard_login_enabled] Seek::Config.omniauth_user_create = string_to_boolean params[:omniauth_user_create] Seek::Config.omniauth_user_activate = string_to_boolean params[:omniauth_user_activate] diff --git a/app/helpers/sessions_helper.rb b/app/helpers/sessions_helper.rb index b9b664b54d..7c35e5068f 100644 --- a/app/helpers/sessions_helper.rb +++ b/app/helpers/sessions_helper.rb @@ -35,6 +35,7 @@ def sole_redirecting_login_strategy # the provider to send the user straight to, skipping the login page altogether. # the strategy and error checks stop a failed login bouncing straight back to the provider. def auto_login_strategy + return unless Seek::Config.omniauth_skip_login_page return if params[:strategy].present? || flash[:error].present? sole_redirecting_login_strategy diff --git a/app/views/admin/_omniauth.html.erb b/app/views/admin/_omniauth.html.erb index 140b03f198..3cc483c0d8 100644 --- a/app/views/admin/_omniauth.html.erb +++ b/app/views/admin/_omniauth.html.erb @@ -6,6 +6,10 @@ "Standard login enabled", "If disabled the standard username and password login will be hidden, forcing users to use an alternative provider. It is only hidden if an alternative provider has been configured and enabled below. WARNING:To avoid an administrator being locked out, the standard login option can always be displayed by including the special parameter show_standard_login=true, i.e: #{login_url(show_standard_login: true, host: Seek::Config.site_base_host)}") %> + <%= admin_checkbox_setting(:omniauth_skip_login_page, 1, Seek::Config.omniauth_skip_login_page, + "Skip the login page", "When a single provider is the only way to log in, send the user straight to it rather than + showing a login page containing one button. It has no effect while there is more than one option, or when the only + option needs credentials entering in #{Seek::Config.instance_name} (LDAP, or the standard login).") %> <%= admin_checkbox_setting(:omniauth_user_create, 1, Seek::Config.omniauth_user_create, "Omniauth user creation on login", "When a user logs in through an omniauth provider and does not exist as a #{Seek::Config.instance_name} user, they will be created using the information given by the provider.") %> <%= admin_checkbox_setting(:omniauth_user_activate, 1, Seek::Config.omniauth_user_activate, diff --git a/config/initializers/seek_configuration.rb b/config/initializers/seek_configuration.rb index 9f06ea50da..b4db1f0b8b 100644 --- a/config/initializers/seek_configuration.rb +++ b/config/initializers/seek_configuration.rb @@ -229,6 +229,7 @@ def load_seek_config_defaults! # omniauth settings and behaviour Seek::Config.default :omniauth_enabled, false + Seek::Config.default :omniauth_skip_login_page, false Seek::Config.default :omniauth_user_create, true Seek::Config.default :omniauth_user_activate, true Seek::Config.default :omniauth_elixir_aai_enabled, false diff --git a/lib/seek/config_setting_attributes.yml b/lib/seek/config_setting_attributes.yml index 701b7b60e6..13f3eb06a5 100644 --- a/lib/seek/config_setting_attributes.yml +++ b/lib/seek/config_setting_attributes.yml @@ -225,6 +225,7 @@ placeholders_enabled: standard_login_enabled: # Omniauth omniauth_enabled: +omniauth_skip_login_page: omniauth_user_create: omniauth_user_activate: omniauth_elixir_aai_enabled: diff --git a/test/functional/sessions_controller_test.rb b/test/functional/sessions_controller_test.rb index 37eeb502f9..bad363577d 100644 --- a/test/functional/sessions_controller_test.rb +++ b/test/functional/sessions_controller_test.rb @@ -306,7 +306,7 @@ class SessionsControllerTest < ActionController::TestCase end test 'should skip the login page when there is a single omniauth provider' do - with_config_values(standard_login_enabled: false, omniauth_enabled: true, + with_config_values(omniauth_skip_login_page: true, standard_login_enabled: false, omniauth_enabled: true, omniauth_ldap_enabled: false, omniauth_github_enabled: false, omniauth_elixir_aai_enabled: false, omniauth_oidc_enabled: true) do get :new @@ -317,8 +317,20 @@ class SessionsControllerTest < ActionController::TestCase end end + test 'should not skip the login page by default' do + with_config_values(standard_login_enabled: false, omniauth_enabled: true, + omniauth_ldap_enabled: false, omniauth_github_enabled: false, + omniauth_elixir_aai_enabled: false, omniauth_oidc_enabled: true) do + refute Seek::Config.omniauth_skip_login_page + get :new + assert_response :success + assert_select 'form#auto-login-form', count: 0 + assert_select '#oidc_login a', 1 + end + end + test 'should not skip the login page when there is more than one login option' do - with_config_values(standard_login_enabled: true, omniauth_enabled: true, + with_config_values(omniauth_skip_login_page: true, standard_login_enabled: true, omniauth_enabled: true, omniauth_ldap_enabled: false, omniauth_github_enabled: false, omniauth_elixir_aai_enabled: false, omniauth_oidc_enabled: true) do get :new @@ -330,7 +342,7 @@ class SessionsControllerTest < ActionController::TestCase end test 'should not skip the login page for a provider with its own form' do - with_config_values(standard_login_enabled: false, omniauth_enabled: true, + with_config_values(omniauth_skip_login_page: true, standard_login_enabled: false, omniauth_enabled: true, omniauth_ldap_enabled: true, omniauth_github_enabled: false, omniauth_elixir_aai_enabled: false, omniauth_oidc_enabled: false) do get :new @@ -341,7 +353,7 @@ class SessionsControllerTest < ActionController::TestCase end test 'should not skip the login page when a strategy is requested' do - with_config_values(standard_login_enabled: false, omniauth_enabled: true, + with_config_values(omniauth_skip_login_page: true, standard_login_enabled: false, omniauth_enabled: true, omniauth_ldap_enabled: false, omniauth_github_enabled: false, omniauth_elixir_aai_enabled: false, omniauth_oidc_enabled: true) do get :new, params: { strategy: 'oidc' } @@ -352,7 +364,7 @@ class SessionsControllerTest < ActionController::TestCase end test 'should not skip the login page after a failed login' do - with_config_values(standard_login_enabled: false, omniauth_enabled: true, + with_config_values(omniauth_skip_login_page: true, standard_login_enabled: false, omniauth_enabled: true, omniauth_ldap_enabled: false, omniauth_github_enabled: false, omniauth_elixir_aai_enabled: false, omniauth_oidc_enabled: true) do get :new, flash: { error: 'Something went wrong' } @@ -363,7 +375,7 @@ class SessionsControllerTest < ActionController::TestCase end test 'should still reach the password form when skipping the login page' do - with_config_values(standard_login_enabled: false, omniauth_enabled: true, + with_config_values(omniauth_skip_login_page: true, standard_login_enabled: false, omniauth_enabled: true, omniauth_ldap_enabled: false, omniauth_github_enabled: false, omniauth_elixir_aai_enabled: false, omniauth_oidc_enabled: true) do get :new, params: { show_standard_login: true } From ee9fabad95a2c14137cffce9d0d37abf8de0b1a7 Mon Sep 17 00:00:00 2001 From: Stuart Owen Date: Tue, 25 Aug 2026 16:10:04 +0100 Subject: [PATCH 3/3] Tidy up the login strategy lookup (#2720) Rename show_standard_password_login? to show_password_login? so that every strategy in LOGIN_STRATEGIES answers to show__login?, and available_login_strategies can dispatch on the name alone without special casing the password login. Derive REDIRECTING_LOGIN_STRATEGIES by taking out the two that have a form to fill in, rather than listing the rest a second time. A provider added to LOGIN_STRATEGIES is then treated as redirecting by default, which is what an omniauth provider almost always is. --- app/helpers/sessions_helper.rb | 12 ++++++------ app/views/gadgets/_sign_in.html.erb | 6 +++--- app/views/users/new.html.erb | 4 ++-- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/app/helpers/sessions_helper.rb b/app/helpers/sessions_helper.rb index 7c35e5068f..0038654c51 100644 --- a/app/helpers/sessions_helper.rb +++ b/app/helpers/sessions_helper.rb @@ -1,8 +1,10 @@ module SessionsHelper LOGIN_STRATEGIES = %i[password elixir_aai ldap github oidc].freeze - # strategies that take the user straight to an external provider, with no form to fill in first - REDIRECTING_LOGIN_STRATEGIES = %i[elixir_aai github oidc].freeze + # strategies with a form to fill in, rather than sending the user out to the provider + FORM_LOGIN_STRATEGIES = %i[password ldap].freeze + + REDIRECTING_LOGIN_STRATEGIES = (LOGIN_STRATEGIES - FORM_LOGIN_STRATEGIES).freeze # a person can be logged in but not fully registered during # the registration process whilst selecting or creating a profile @@ -21,9 +23,7 @@ def detect_default_login_strategy # the login strategies currently available, in order of preference def available_login_strategies - LOGIN_STRATEGIES.select do |strategy| - strategy == :password ? show_standard_password_login? : send("show_#{strategy}_login?") - end + LOGIN_STRATEGIES.select { |strategy| send("show_#{strategy}_login?") } end # the only way to log in, when that is a provider the user can be sent straight to @@ -63,7 +63,7 @@ def logged_in_and_member? User.logged_in_and_member? end - def show_standard_password_login? + def show_password_login? # always show if omniauth options aren't available, regardless of standard_login_enabled setting params[:show_standard_login].present? || Seek::Config.standard_login_enabled || !show_omniauth_login? end diff --git a/app/views/gadgets/_sign_in.html.erb b/app/views/gadgets/_sign_in.html.erb index a636c42f1c..50e506b9bc 100644 --- a/app/views/gadgets/_sign_in.html.erb +++ b/app/views/gadgets/_sign_in.html.erb @@ -13,7 +13,7 @@ <%# tabs if omniauth authentication with providers is enabled %> <% if show_omniauth_login? %>