Refactor Member#add_user for GitLab EE
GitLab EE extends Member#add_user by adding some LDAP specific flags. Prior to these changes, the only way this could be done was by modifying Member#add_user in place. This could lead to merge conflicts whenever a developer wants to change this method. To resolve this issue, the logic that EE extends has been moved into a separate method with the appropriate arguments. This allows EE to extend the logic by prepending the method using an EE specific module.
This commit is contained in:
parent
379ed169f7
commit
0aa386f75c
1 changed files with 19 additions and 5 deletions
|
@ -152,11 +152,13 @@ class Member < ActiveRecord::Base
|
||||||
|
|
||||||
return member unless can_update_member?(current_user, member)
|
return member unless can_update_member?(current_user, member)
|
||||||
|
|
||||||
member.attributes = {
|
set_member_attributes(
|
||||||
created_by: member.created_by || current_user,
|
member,
|
||||||
access_level: access_level,
|
access_level,
|
||||||
expires_at: expires_at
|
current_user: current_user,
|
||||||
}
|
expires_at: expires_at,
|
||||||
|
ldap: ldap
|
||||||
|
)
|
||||||
|
|
||||||
if member.request?
|
if member.request?
|
||||||
::Members::ApproveAccessRequestService.new(
|
::Members::ApproveAccessRequestService.new(
|
||||||
|
@ -175,6 +177,18 @@ class Member < ActiveRecord::Base
|
||||||
# rubocop: enable CodeReuse/ServiceClass
|
# rubocop: enable CodeReuse/ServiceClass
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Populates the attributes of a member.
|
||||||
|
#
|
||||||
|
# This logic resides in a separate method so that EE can extend this logic,
|
||||||
|
# without having to patch the `add_user` method directly.
|
||||||
|
def set_member_attributes(member, access_level, current_user: nil, expires_at: nil, ldap: false)
|
||||||
|
member.attributes = {
|
||||||
|
created_by: member.created_by || current_user,
|
||||||
|
access_level: access_level,
|
||||||
|
expires_at: expires_at
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
def add_users(source, users, access_level, current_user: nil, expires_at: nil)
|
def add_users(source, users, access_level, current_user: nil, expires_at: nil)
|
||||||
return [] unless users.present?
|
return [] unless users.present?
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue