diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-06-08 09:08:19 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-06-08 09:08:19 +0300 |
commit | 449287e15a3633f7a17533c2da0273e31ddf1c1f (patch) | |
tree | 965a7f4e27fe09349c79594fdbb289c49afd7dcf /app/services/spam | |
parent | 8021d3ead36edcb31431c2b7ab571715b3fdf0c6 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/services/spam')
-rw-r--r-- | app/services/spam/spam_action_service.rb | 18 | ||||
-rw-r--r-- | app/services/spam/spam_verdict_service.rb | 29 |
2 files changed, 35 insertions, 12 deletions
diff --git a/app/services/spam/spam_action_service.rb b/app/services/spam/spam_action_service.rb index 731afb631b5..b745b67f566 100644 --- a/app/services/spam/spam_action_service.rb +++ b/app/services/spam/spam_action_service.rb @@ -7,9 +7,11 @@ module Spam attr_accessor :target, :request, :options attr_reader :spam_log - def initialize(spammable:, request:) + def initialize(spammable:, request:, user:, context: {}) @target = spammable @request = request + @user = user + @context = context @options = {} if @request @@ -22,7 +24,7 @@ module Spam end end - def execute(api: false, recaptcha_verified:, spam_log_id:, user:) + def execute(api: false, recaptcha_verified:, spam_log_id:) if recaptcha_verified # If it's a request which is already verified through reCAPTCHA, # update the spam log accordingly. @@ -40,6 +42,8 @@ module Spam private + attr_reader :user, :context + def allowlisted?(user) user.respond_to?(:gitlab_employee) && user.gitlab_employee? end @@ -75,7 +79,7 @@ module Spam description: target.spam_description, source_ip: options[:ip_address], user_agent: options[:user_agent], - noteable_type: target.class.to_s, + noteable_type: notable_type, via_api: api } ) @@ -85,8 +89,14 @@ module Spam def spam_verdict_service SpamVerdictService.new(target: target, + user: user, request: @request, - options: options) + options: options, + context: context.merge(target_type: notable_type)) + end + + def notable_type + @notable_type ||= target.class.to_s end end end diff --git a/app/services/spam/spam_verdict_service.rb b/app/services/spam/spam_verdict_service.rb index cdd699c6ee9..68f1135ae28 100644 --- a/app/services/spam/spam_verdict_service.rb +++ b/app/services/spam/spam_verdict_service.rb @@ -5,11 +5,12 @@ module Spam include AkismetMethods include SpamConstants - def initialize(target:, request:, options:, verdict_params: {}) + def initialize(user:, target:, request:, options:, context: {}) @target = target @request = request + @user = user @options = options - @verdict_params = assemble_verdict_params(verdict_params) + @verdict_params = assemble_verdict_params(context) end def execute @@ -27,7 +28,7 @@ module Spam private - attr_reader :target, :request, :options, :verdict_params + attr_reader :user, :target, :request, :options, :verdict_params def akismet_verdict if akismet.spam? @@ -66,11 +67,23 @@ module Spam end end - def assemble_verdict_params(params) - return {} unless endpoint_url - - params.merge({ - user_id: target.author_id + def assemble_verdict_params(context) + return {} unless endpoint_url.present? + + project = target.try(:project) + + context.merge({ + target: { + title: target.spam_title, + description: target.spam_description, + type: target.class.to_s + }, + user: { + created_at: user.created_at, + email: user.email, + username: user.username + }, + user_in_project: user.authorized_project?(project) }) end |