diff options
author | Winnie Hellmann <winnie@gitlab.com> | 2017-11-01 13:34:39 +0100 |
---|---|---|
committer | Winnie Hellmann <winnie@gitlab.com> | 2017-11-03 11:01:09 +0100 |
commit | 556a33a6ab4eb05801a96c9669074eab622e4e90 (patch) | |
tree | 209c41d921061835090d74b19616d0f0a3270c4d /app/models | |
parent | cc32b894c95ff62fcddc6f6babe4ac97894bba95 (diff) | |
download | gitlab-ce-winh-namespace-rename-hooks.tar.gz |
Add system hooks user_rename and group_renamewinh-namespace-rename-hooks
Diffstat (limited to 'app/models')
-rw-r--r-- | app/models/group.rb | 15 | ||||
-rw-r--r-- | app/models/user.rb | 9 |
2 files changed, 24 insertions, 0 deletions
diff --git a/app/models/group.rb b/app/models/group.rb index 07fb62bb249..bb1d5aacdd7 100644 --- a/app/models/group.rb +++ b/app/models/group.rb @@ -42,6 +42,7 @@ class Group < Namespace after_create :post_create_hook after_destroy :post_destroy_hook after_save :update_two_factor_requirement + after_save :path_changed_hook, if: :has_path_changed? class << self def supports_nested_groups? @@ -297,6 +298,20 @@ class Group < Namespace users.find_each(&:update_two_factor_requirement) end + def has_path_changed? + path_changed? && !path_was.nil? + end + + def full_path_was + return model.path_was unless has_parent? + + "#{parent.full_path}/#{path_was}" + end + + def path_changed_hook + system_hook_service.execute_hooks_for(self, :rename) + end + def visibility_level_allowed_by_parent return if visibility_level_allowed_by_parent? diff --git a/app/models/user.rb b/app/models/user.rb index 9459b6d4fa4..f02bacbfaa9 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -168,6 +168,7 @@ class User < ActiveRecord::Base before_save :skip_reconfirmation!, if: ->(user) { user.email_changed? && user.read_only_attribute?(:email) } before_save :check_for_verified_email, if: ->(user) { user.email_changed? && !user.new_record? } after_save :ensure_namespace_correct + after_save :username_changed_hook, if: :has_username_changed? after_destroy :post_destroy_hook after_commit :update_emails_with_primary_email, on: :update, if: -> { previous_changes.key?('email') } after_commit :update_invalid_gpg_signatures, on: :update, if: -> { previous_changes.key?('email') } @@ -873,6 +874,14 @@ class User < ActiveRecord::Base end end + def has_username_changed? + username_changed? && !username_was.nil? + end + + def username_changed_hook + system_hook_service.execute_hooks_for(self, :rename) + end + def post_destroy_hook log_info("User \"#{name}\" (#{email}) was removed") system_hook_service.execute_hooks_for(self, :destroy) |