Add OMNIAUTH_ONLY environment variable to enforce externa log-in (#17288)
* Remove support for OAUTH_REDIRECT_AT_SIGN_IN Fixes #15959 Introduced in #6540, OAUTH_REDIRECT_AT_SIGN_IN allowed skipping the log-in form to instead redirect to the external OmniAuth login provider. However, it did not prevent the log-in form on /about introduced by #10232 from appearing, and completely broke with the introduction of #15228. As I restoring that previous log-in flow without introducing a security vulnerability may require extensive care and knowledge of how OmniAuth works, this commit removes support for OAUTH_REDIRECT_AT_SIGN_IN instead for the time being. * Add OMNIAUTH_ONLY environment variable to enforce external log-in only * Disable user registration when OMNIAUTH_ONLY is set to true * Replace log-in links When OMNIAUTH_ONLY is set with exactly one OmniAuth providerlocal
parent
cfa583fa71
commit
bddd9ba36d
9 changed files with 71 additions and 28 deletions
@ -1,13 +1,22 @@ |
||||
= simple_form_for(new_user, url: user_session_path, namespace: 'login') do |f| |
||||
.fields-group |
||||
- if use_seamless_external_login? |
||||
= f.input :email, placeholder: t('simple_form.labels.defaults.username_or_email'), input_html: { 'aria-label' => t('simple_form.labels.defaults.username_or_email') }, hint: false |
||||
- else |
||||
= f.input :email, placeholder: t('simple_form.labels.defaults.email'), input_html: { 'aria-label' => t('simple_form.labels.defaults.email') }, hint: false |
||||
- unless omniauth_only? |
||||
= simple_form_for(new_user, url: user_session_path, namespace: 'login') do |f| |
||||
.fields-group |
||||
- if use_seamless_external_login? |
||||
= f.input :email, placeholder: t('simple_form.labels.defaults.username_or_email'), input_html: { 'aria-label' => t('simple_form.labels.defaults.username_or_email') }, hint: false |
||||
- else |
||||
= f.input :email, placeholder: t('simple_form.labels.defaults.email'), input_html: { 'aria-label' => t('simple_form.labels.defaults.email') }, hint: false |
||||
|
||||
= f.input :password, placeholder: t('simple_form.labels.defaults.password'), input_html: { 'aria-label' => t('simple_form.labels.defaults.password') }, hint: false |
||||
= f.input :password, placeholder: t('simple_form.labels.defaults.password'), input_html: { 'aria-label' => t('simple_form.labels.defaults.password') }, hint: false |
||||
|
||||
.actions |
||||
= f.button :button, t('auth.login'), type: :submit, class: 'button button-primary' |
||||
.actions |
||||
= f.button :button, t('auth.login'), type: :submit, class: 'button button-primary' |
||||
|
||||
%p.hint.subtle-hint= link_to t('auth.trouble_logging_in'), new_user_password_path |
||||
%p.hint.subtle-hint= link_to t('auth.trouble_logging_in'), new_user_password_path |
||||
|
||||
- if Devise.mappings[:user].omniauthable? and User.omniauth_providers.any? |
||||
.simple_form.alternative-login |
||||
%h4= omniauth_only? ? t('auth.log_in_with') : t('auth.or_log_in_with') |
||||
|
||||
.actions |
||||
- User.omniauth_providers.each do |provider| |
||||
= provider_sign_in_link(provider) |
||||
|
Loading…
Reference in new issue