~jonn/social.doma.dev

c9efb400b429696d1ee5464931f7f62e38edf1d6 — Eugen Rochko 4 years ago eea0cd8
Add rate limit for reporting (#13390)

3 files changed, 8 insertions(+), 3 deletions(-)

M app/controllers/api/v1/reports_controller.rb
M app/lib/rate_limiter.rb
M app/models/report.rb
M app/controllers/api/v1/reports_controller.rb => app/controllers/api/v1/reports_controller.rb +2 -0
@@ 4,6 4,8 @@ class Api::V1::ReportsController < Api::BaseController
  before_action -> { doorkeeper_authorize! :write, :'write:reports' }, only: [:create]
  before_action :require_user!

  override_rate_limit_headers :create, family: :reports

  def create
    @report = ReportService.new.call(
      current_account,

M app/lib/rate_limiter.rb => app/lib/rate_limiter.rb +3 -3
@@ 14,9 14,9 @@ class RateLimiter
      period: 3.hours.freeze,
    }.freeze,

    media: {
      limit: 30,
      period: 30.minutes.freeze,
    reports: {
      limit: 400,
      period: 24.hours.freeze,
    }.freeze,
  }.freeze


M app/models/report.rb => app/models/report.rb +3 -0
@@ 18,6 18,9 @@

class Report < ApplicationRecord
  include Paginable
  include RateLimitable

  rate_limit by: :account, family: :reports

  belongs_to :account
  belongs_to :target_account, class_name: 'Account'