654565c9dc
This is a try for a new approach to put the access checks at the service level. Signed-off-by: Rémy Coutable <remy@rymai.me>
21 lines
515 B
Ruby
21 lines
515 B
Ruby
module Members
|
|
class DestroyService < BaseService
|
|
attr_accessor :member, :current_user
|
|
|
|
def initialize(member, user)
|
|
@member, @current_user = member, user
|
|
end
|
|
|
|
def execute
|
|
unless member && can?(current_user, "destroy_#{member.type.underscore}".to_sym, member)
|
|
raise Gitlab::Access::AccessDeniedError
|
|
end
|
|
|
|
member.destroy
|
|
|
|
if member.request? && member.user != current_user
|
|
notification_service.decline_access_request(member)
|
|
end
|
|
end
|
|
end
|
|
end
|