X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/1a11c4dc191d93b18fcf5aa917448c8cd6d2556b..53aa7259bb0612eb48a17d0b954ad71ea37d87a4:/app/models/user.rb diff --git a/app/models/user.rb b/app/models/user.rb index 123ef3230..7a0d06992 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -87,7 +87,7 @@ class User < ApplicationRecord scope :active, -> { where(:status => %w[active confirmed]) } scope :identifiable, -> { where(:data_public => true) } - has_one_attached :avatar + has_one_attached :avatar, :service => Settings.avatar_storage validates :display_name, :presence => true, :length => 3..255, :exclusion => %w[new terms save confirm confirm-email go_public reset-password forgot-password suspended] @@ -172,8 +172,10 @@ class User < ApplicationRecord end # Used in test suite, not something that we would normally need to do. - event :deactivate do - transitions :from => :active, :to => :pending + if Rails.env.test? + event :deactivate do + transitions :from => :active, :to => :pending + end end # To confirm an account is used to override the spam scoring @@ -181,10 +183,21 @@ class User < ApplicationRecord transitions :from => [:pending, :active, :suspended], :to => :confirmed end + # To unconfirm an account is to make it subject to future spam scoring again + event :unconfirm do + transitions :from => :confirmed, :to => :active + end + + # Accounts can be automatically suspended by spam_check event :suspend do transitions :from => [:pending, :active], :to => :suspended end + # Unsuspending an account moves it back to active without overriding the spam scoring + event :unsuspend do + transitions :from => :suspended, :to => :active + end + # Mark the account as deleted but keep all data intact event :hide do transitions :from => [:pending, :active, :confirmed, :suspended], :to => :deleted