diff options
author | Francisco Javier López <fjlopez@gitlab.com> | 2017-11-17 14:24:25 +0000 |
---|---|---|
committer | Douwe Maan <douwe@gitlab.com> | 2017-11-17 14:24:25 +0000 |
commit | c7cf68bd6ff744e044944acad586e06badc481d4 (patch) | |
tree | 6cf6af687696012525b6cb05b336bec13f049a10 /app/models/identity.rb | |
parent | 76b2a7caa5219662a29f0eb16f0507aac1976f33 (diff) | |
download | gitlab-ce-c7cf68bd6ff744e044944acad586e06badc481d4.tar.gz |
Changing OAuth lookup to be case insensitive
Diffstat (limited to 'app/models/identity.rb')
-rw-r--r-- | app/models/identity.rb | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/app/models/identity.rb b/app/models/identity.rb index ac8094b610e..ff811e19f8a 100644 --- a/app/models/identity.rb +++ b/app/models/identity.rb @@ -1,18 +1,27 @@ class Identity < ActiveRecord::Base include Sortable include CaseSensitivity + belongs_to :user validates :provider, presence: true - validates :extern_uid, allow_blank: true, uniqueness: { scope: :provider } + validates :extern_uid, allow_blank: true, uniqueness: { scope: :provider, case_sensitive: false } validates :user_id, uniqueness: { scope: :provider } + scope :with_provider, ->(provider) { where(provider: provider) } scope :with_extern_uid, ->(provider, extern_uid) do - extern_uid = Gitlab::LDAP::Person.normalize_dn(extern_uid) if provider.starts_with?('ldap') - where(extern_uid: extern_uid, provider: provider) + iwhere(extern_uid: normalize_uid(provider, extern_uid)).with_provider(provider) end def ldap? provider.starts_with?('ldap') end + + def self.normalize_uid(provider, uid) + if provider.to_s.starts_with?('ldap') + Gitlab::LDAP::Person.normalize_dn(uid) + else + uid.to_s + end + end end |