diff options
Diffstat (limited to 'lib/gitlab/saml/user.rb')
-rw-r--r-- | lib/gitlab/saml/user.rb | 70 |
1 files changed, 0 insertions, 70 deletions
diff --git a/lib/gitlab/saml/user.rb b/lib/gitlab/saml/user.rb deleted file mode 100644 index 8a7cc690046..00000000000 --- a/lib/gitlab/saml/user.rb +++ /dev/null @@ -1,70 +0,0 @@ -# SAML extension for User model -# -# * Find GitLab user based on SAML uid and provider -# * Create new user from SAML data -# -module Gitlab - module Saml - class User < Gitlab::OAuth::User - def save - super('SAML') - end - - def gl_user - if auto_link_ldap_user? - @user ||= find_or_create_ldap_user - end - - @user ||= find_by_uid_and_provider - - if auto_link_saml_user? - @user ||= find_by_email - end - - if signup_enabled? - @user ||= build_new_user - end - - if external_users_enabled? && @user - # Check if there is overlap between the user's groups and the external groups - # setting then set user as external or internal. - @user.external = - if (auth_hash.groups & Gitlab::Saml::Config.external_groups).empty? - false - else - true - end - end - - @user - end - - def find_by_email - if auth_hash.has_email? - user = ::User.find_by(email: auth_hash.email.downcase) - user.identities.new(extern_uid: auth_hash.uid, provider: auth_hash.provider) if user - user - end - end - - def changed? - return true unless gl_user - gl_user.changed? || gl_user.identities.any?(&:changed?) - end - - protected - - def auto_link_saml_user? - Gitlab.config.omniauth.auto_link_saml_user - end - - def external_users_enabled? - !Gitlab::Saml::Config.external_groups.nil? - end - - def auth_hash=(auth_hash) - @auth_hash = Gitlab::Saml::AuthHash.new(auth_hash) - end - end - end -end |