Add rate limiting to user friendships

This commit is contained in:
Tom Hughes 2021-05-11 12:02:05 +01:00
parent 4d164df5b8
commit 84c601460f
6 changed files with 33 additions and 8 deletions

View file

@ -305,6 +305,15 @@ class User < ApplicationRecord
max_messages.clamp(0, Settings.max_messages_per_hour)
end
def max_friends_per_hour
account_age_in_seconds = Time.now.utc - creation_time
account_age_in_hours = account_age_in_seconds / 3600
recent_friends = friendships.where("created_at >= ?", Time.now.utc - 3600).count
active_reports = issues.with_status(:open).sum(:reports_count)
max_messages = account_age_in_hours.ceil + recent_friends - active_reports * 10
max_messages.clamp(0, Settings.max_friends_per_hour)
end
private
def set_defaults