Commit 6089966b authored by Robert Speicher's avatar Robert Speicher

Merge branch 'rs-issue-229' into 'master'

Assign `@user` to the GitLab User object during LDAP login

Prior, we assigned it to the `Gitlab::LDAP::User` object which delegated
_some_ methods to the internal `gl_user` object, but not everything,
which caused a 500 error when a view expected it to behave the same, for
example by responding to `avatar_url`.

Closes https://gitlab.com/gitlab-org/gitlab-ee/issues/229

See merge request !146
parents 707f6abd f0d7c293
......@@ -22,18 +22,19 @@ class OmniauthCallbacksController < Devise::OmniauthCallbacksController
# We only find ourselves here
# if the authentication to LDAP was successful.
def ldap
@user = Gitlab::LDAP::User.new(oauth)
@user.save if @user.changed? # will also save new users
gl_user = @user.gl_user
gl_user.remember_me = params[:remember_me] if @user.persisted?
ldap_user = Gitlab::LDAP::User.new(oauth)
ldap_user.save if ldap_user.changed? # will also save new users
@user = ldap_user.gl_user
@user.remember_me = params[:remember_me] if ldap_user.persisted?
# Do additional LDAP checks for the user filter and EE features
if @user.allowed?
if ldap_user.allowed?
if @user.otp_required_for_login?
prompt_for_two_factor(gl_user)
prompt_for_two_factor(@user)
else
log_audit_event(gl_user, with: :ldap)
sign_in_and_redirect(gl_user)
log_audit_event(@user, with: :ldap)
sign_in_and_redirect(@user)
end
else
flash[:alert] = "Access denied for your LDAP account."
......
......@@ -24,9 +24,6 @@ module Gitlab
update_user_attributes
end
delegate :otp_required_for_login?, :otp_backup_codes, :otp_attempt,
to: :gl_user
def gl_user
@gl_user ||= find_by_uid_and_provider || find_by_email || build_new_user
end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment