summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorDouwe Maan <douwe@gitlab.com>2018-02-15 09:27:39 +0000
committerMark Fletcher <mark@gitlab.com>2018-02-19 11:13:33 +0000
commitdf81934fb0e8e6c8a959cfa3b11bc8f48774eb7e (patch)
tree317d5bde3d1c82497c08030c355324ea8ab319d5 /app
parentdcd1a43faf9654bf6e36d47d88dc914a100c4e33 (diff)
downloadgitlab-ce-df81934fb0e8e6c8a959cfa3b11bc8f48774eb7e.tar.gz
Merge branch 'fj-37528-error-after-disabling-ldap' into 'master'
Fixed user synced attributes metadata after removing current provider Closes #37528 See merge request gitlab-org/gitlab-ce!17054
Diffstat (limited to 'app')
-rw-r--r--app/models/identity.rb9
1 files changed, 9 insertions, 0 deletions
diff --git a/app/models/identity.rb b/app/models/identity.rb
index b3fa7d8176a..2b433e9b988 100644
--- a/app/models/identity.rb
+++ b/app/models/identity.rb
@@ -9,6 +9,7 @@ class Identity < ActiveRecord::Base
validates :user_id, uniqueness: { scope: :provider }
before_save :ensure_normalized_extern_uid, if: :extern_uid_changed?
+ after_destroy :clear_user_synced_attributes, if: :user_synced_attributes_metadata_from_provider?
scope :with_provider, ->(provider) { where(provider: provider) }
scope :with_extern_uid, ->(provider, extern_uid) do
@@ -34,4 +35,12 @@ class Identity < ActiveRecord::Base
self.extern_uid = Identity.normalize_uid(self.provider, self.extern_uid)
end
+
+ def user_synced_attributes_metadata_from_provider?
+ user.user_synced_attributes_metadata&.provider == provider
+ end
+
+ def clear_user_synced_attributes
+ user.user_synced_attributes_metadata&.destroy
+ end
end