From c7f6ce54fb0eb5612d47028699fd09db992fd3f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jarka=20Ko=C5=A1anov=C3=A1?= Date: Thu, 18 Sep 2025 11:17:56 +0200 Subject: [PATCH] Populate organization_id for abuse_events --- app/models/anti_abuse/event.rb | 2 ++ app/workers/anti_abuse/spam_abuse_events_worker.rb | 8 ++++++-- spec/factories/anti_abuse/event.rb | 4 ++++ spec/models/anti_abuse/event_spec.rb | 2 ++ spec/workers/anti_abuse/spam_abuse_events_worker_spec.rb | 3 ++- 5 files changed, 16 insertions(+), 3 deletions(-) diff --git a/app/models/anti_abuse/event.rb b/app/models/anti_abuse/event.rb index a0f4e79f491c76..e2265048342979 100644 --- a/app/models/anti_abuse/event.rb +++ b/app/models/anti_abuse/event.rb @@ -7,10 +7,12 @@ class Event < ApplicationRecord validates :category, presence: true validates :source, presence: true validates :user, presence: true, on: :create + validates :organization_id, presence: true, on: :create validates :metadata, json_schema: { filename: 'abuse_event_metadata' }, allow_blank: true belongs_to :user, inverse_of: :abuse_events belongs_to :abuse_report, class_name: '::AbuseReport', inverse_of: :abuse_events + belongs_to :organization, class_name: 'Organizations::Organization' enum :category, Enums::Abuse::Category.categories enum :source, Enums::Abuse::Source.sources diff --git a/app/workers/anti_abuse/spam_abuse_events_worker.rb b/app/workers/anti_abuse/spam_abuse_events_worker.rb index 0a90840f09b620..6d9443acfeb966 100644 --- a/app/workers/anti_abuse/spam_abuse_events_worker.rb +++ b/app/workers/anti_abuse/spam_abuse_events_worker.rb @@ -28,7 +28,6 @@ def perform(params) def report_user(params) category = 'spam' - reporter = Users::Internal.security_bot report_params = { user_id: params[:user_id], reporter: reporter, category: category, @@ -59,8 +58,13 @@ def create_abuse_event(abuse_report_id, params) user_agent: params[:user_agent], verdict: params[:verdict] }, source: :spamcheck, - user: user + user: user, + organization_id: reporter.organization_id ) end + + def reporter + @reporter ||= Users::Internal.security_bot + end end end diff --git a/spec/factories/anti_abuse/event.rb b/spec/factories/anti_abuse/event.rb index 877411769126f9..978b86f952587f 100644 --- a/spec/factories/anti_abuse/event.rb +++ b/spec/factories/anti_abuse/event.rb @@ -9,5 +9,9 @@ trait(:with_abuse_report) do abuse_report end + + after(:build) do |event, evaluator| + event.organization ||= evaluator.user.organization + end end end diff --git a/spec/models/anti_abuse/event_spec.rb b/spec/models/anti_abuse/event_spec.rb index c310308e62845d..832c9b75a0367f 100644 --- a/spec/models/anti_abuse/event_spec.rb +++ b/spec/models/anti_abuse/event_spec.rb @@ -13,12 +13,14 @@ describe "associations" do it { is_expected.to belong_to(:user).class_name("User").inverse_of(:abuse_events) } it { is_expected.to belong_to(:abuse_report).inverse_of(:abuse_events) } + it { is_expected.to belong_to(:organization) } end describe "validations" do it { is_expected.to validate_presence_of(:source) } it { is_expected.to validate_presence_of(:category) } it { is_expected.to validate_presence_of(:user).on(:create) } + it { is_expected.to validate_presence_of(:organization_id).on(:create) } end describe 'enums' do diff --git a/spec/workers/anti_abuse/spam_abuse_events_worker_spec.rb b/spec/workers/anti_abuse/spam_abuse_events_worker_spec.rb index 76d1baf4b8772b..ba38f36dc0204f 100644 --- a/spec/workers/anti_abuse/spam_abuse_events_worker_spec.rb +++ b/spec/workers/anti_abuse/spam_abuse_events_worker_spec.rb @@ -26,7 +26,8 @@ category: "spam", metadata: params.except(:user_id), source: "spamcheck", - user_id: params[:user_id] + user_id: params[:user_id], + organization_id: Users::Internal.security_bot.organization_id }.deep_stringify_keys) end end -- GitLab