X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/bd1420a7c51b7d1c3a64bc02756393c7ad2025f5..25510b6616261efff26763debbfc34040bd67176:/app/models/user.rb diff --git a/app/models/user.rb b/app/models/user.rb index 9cc8b7d83..26a9f33e1 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -104,6 +104,8 @@ class User < ApplicationRecord validates :preferred_editor, :inclusion => Editors::ALL_EDITORS, :allow_nil => true validates :auth_uid, :unless => proc { |u| u.auth_provider.nil? }, :uniqueness => { :scope => :auth_provider } + validates :avatar, :if => proc { |u| u.attachment_changes["avatar"] }, + :image => true validates_email_format_of :email, :if => proc { |u| u.email_changed? } validates_email_format_of :new_email, :allow_blank => true, :if => proc { |u| u.new_email_changed? } @@ -294,6 +296,15 @@ class User < ApplicationRecord digest.hexdigest end + def max_messages_per_hour + account_age_in_seconds = Time.now.utc - creation_time + account_age_in_hours = account_age_in_seconds / 3600 + recent_messages = messages.where("sent_on >= ?", Time.now.utc - 3600).count + active_reports = issues.with_status(:open).sum(:reports_count) + max_messages = account_age_in_hours.ceil + recent_messages - active_reports * 10 + max_messages.clamp(0, Settings.max_messages_per_hour) + end + private def set_defaults