diff options
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) |