diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-03-26 09:07:52 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-03-26 09:07:52 +0000 |
commit | 7e019504f5ac6decde690565857238e7e59aa034 (patch) | |
tree | fab8832b40e25fc9bc1ae54b9303b95ea146b5d5 /app/models/member.rb | |
parent | 116d4e56e83a1f408afe710ce070e699ba206475 (diff) | |
download | gitlab-ce-7e019504f5ac6decde690565857238e7e59aa034.tar.gz |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/models/member.rb')
-rw-r--r-- | app/models/member.rb | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/app/models/member.rb b/app/models/member.rb index 089efcb81dd..a87efdf63ff 100644 --- a/app/models/member.rb +++ b/app/models/member.rb @@ -100,6 +100,7 @@ class Member < ApplicationRecord after_destroy :destroy_notification_setting after_destroy :post_destroy_hook, unless: :pending? after_commit :refresh_member_authorized_projects + after_commit :update_highest_role default_value_for :notification_level, NotificationSetting.levels[:global] @@ -459,6 +460,22 @@ class Member < ApplicationRecord errors.add(:access_level, s_("should be greater than or equal to %{access} inherited membership from group %{group_name}") % error_parameters) end end + + # Triggers the service to schedule a Sidekiq job to update the highest role + # for a User + # + # The job will be called outside of a transaction in order to ensure the changes + # for a Member to be commited before attempting to update the highest role. + # rubocop: disable CodeReuse/ServiceClass + def update_highest_role + return unless user_id.present? + return unless previous_changes[:access_level].present? + + run_after_commit_or_now do + Members::UpdateHighestRoleService.new(user_id).execute + end + end + # rubocop: enable CodeReuse/ServiceClass end Member.prepend_if_ee('EE::Member') |