FIX: Reviewables should not be created for users until they are active

Conversely, if a user is deactivated the reviewable should automatically
be rejected.

Before this fix, if a user was not active they'd still show in the
review queue but without an "Approve" button which was confusing.
This commit is contained in:
Robin Ward
2019-04-03 12:04:05 -04:00
parent 974007a3cc
commit c1ea63bdc1
13 changed files with 82 additions and 17 deletions

View File

@ -116,7 +116,6 @@ class User < ActiveRecord::Base
after_create :set_random_avatar
after_create :ensure_in_trust_level_group
after_create :set_default_categories_preferences
after_create :create_reviewable
before_save :update_username_lower
before_save :ensure_password_is_hashed
@ -898,10 +897,15 @@ class User < ActiveRecord::Base
else
self.update!(active: true)
end
create_reviewable
end
def deactivate
def deactivate(performed_by)
self.update!(active: false)
if reviewable = ReviewableUser.pending.find_by(target: self)
reviewable.perform(performed_by, :reject)
end
end
def change_trust_level!(level, opts = nil)
@ -1242,14 +1246,7 @@ class User < ActiveRecord::Base
return unless SiteSetting.must_approve_users? || SiteSetting.invite_only?
return if approved?
reviewable = ReviewableUser.needs_review!(target: self, created_by: Discourse.system_user, reviewable_by_moderator: true)
reviewable.add_score(
Discourse.system_user,
ReviewableScore.types[:needs_approval],
force_review: true
)
reviewable
Jobs.enqueue(:create_user_reviewable, user_id: self.id)
end
def create_user_stat