From 795cd7f95206db318c58939698f63eee5abedb34 Mon Sep 17 00:00:00 2001 From: James Edwards-Jones Date: Mon, 23 Apr 2018 16:03:01 +0100 Subject: [PATCH] Replace define_method with alias_method in Omniauth Controllers --- .../ldap/omniauth_callbacks_controller.rb | 14 ++++++-------- app/controllers/omniauth_callbacks_controller.rb | 12 +++++------- lib/gitlab/auth/ldap/user.rb | 2 +- 3 files changed, 12 insertions(+), 16 deletions(-) diff --git a/app/controllers/ldap/omniauth_callbacks_controller.rb b/app/controllers/ldap/omniauth_callbacks_controller.rb index e9219274182..fb24edb8602 100644 --- a/app/controllers/ldap/omniauth_callbacks_controller.rb +++ b/app/controllers/ldap/omniauth_callbacks_controller.rb @@ -2,23 +2,21 @@ class Ldap::OmniauthCallbacksController < OmniauthCallbacksController extend ::Gitlab::Utils::Override def self.define_providers! - if Gitlab::Auth::LDAP::Config.enabled? - Gitlab::Auth::LDAP::Config.available_servers.each do |server| - define_method server['provider_name'] do - ldap - end - end + return unless Gitlab::Auth::LDAP::Config.enabled? + + Gitlab::Auth::LDAP::Config.available_servers.each do |server| + alias_method server['provider_name'], :ldap end end - define_providers! - # We only find ourselves here # if the authentication to LDAP was successful. def ldap sign_in_user_flow(Gitlab::Auth::LDAP::User) end + define_providers! + override :set_remember_me def set_remember_me(user) user.remember_me = params[:remember_me] if user.persisted? diff --git a/app/controllers/omniauth_callbacks_controller.rb b/app/controllers/omniauth_callbacks_controller.rb index f7e7f04384a..9137bc92810 100644 --- a/app/controllers/omniauth_callbacks_controller.rb +++ b/app/controllers/omniauth_callbacks_controller.rb @@ -4,10 +4,12 @@ class OmniauthCallbacksController < Devise::OmniauthCallbacksController protect_from_forgery except: [:kerberos, :saml, :cas3] + def handle_omniauth + omniauth_flow(Gitlab::Auth::OAuth) + end + Gitlab.config.omniauth.providers.each do |provider| - define_method provider['name'] do - handle_omniauth - end + alias_method provider['name'], :handle_omniauth end # Extend the standard implementation to also increment @@ -70,10 +72,6 @@ class OmniauthCallbacksController < Devise::OmniauthCallbacksController private - def handle_omniauth - omniauth_flow(Gitlab::Auth::OAuth) - end - def omniauth_flow(auth_module, identity_linker: nil) if current_user log_audit_event(current_user, with: oauth['provider']) diff --git a/lib/gitlab/auth/ldap/user.rb b/lib/gitlab/auth/ldap/user.rb index 604c2d222e9..6487f32f7b6 100644 --- a/lib/gitlab/auth/ldap/user.rb +++ b/lib/gitlab/auth/ldap/user.rb @@ -49,7 +49,7 @@ module Gitlab end def valid_sign_in? - allowed? + allowed? && super end def ldap_config