Merge pull request #6002 from featheredtoast/trust-previously-staged-users

FIX: don't punish a user for being previously staged for spam flags.
This commit is contained in:
Neil Lalonde 2018-06-18 15:14:31 -04:00 committed by GitHub
commit 3725fd8345
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 10 additions and 2 deletions

View File

@ -326,7 +326,7 @@ class Post < ActiveRecord::Base
# Prevent new users from posting the same hosts too many times.
def has_host_spam?
return false if acting_user.present? && (acting_user.staged? || acting_user.has_trust_level?(TrustLevel[1]))
return false if acting_user.present? && (acting_user.staged? || acting_user.from_staged? || acting_user.has_trust_level?(TrustLevel[1]))
return false if topic&.private_message?
total_hosts_usage.values.any? { |count| count >= SiteSetting.newuser_spam_host_threshold }

View File

@ -144,7 +144,7 @@ class Validators::PostValidator < ActiveModel::Validator
private
def acting_user_is_trusted?(post, level = 1)
post.acting_user.present? && post.acting_user.has_trust_level?(TrustLevel[level])
post.acting_user.present? && (post.acting_user.has_trust_level?(TrustLevel[level]) || post.acting_user.from_staged?)
end
def private_message?(post)

View File

@ -967,6 +967,14 @@ describe Post do
expect(post.has_host_spam?).to eq(false)
end
it "doesn't punish previously staged users" do
SiteSetting.newuser_spam_host_threshold = 1
user = Fabricate(:user, staged: true, trust_level: 0)
user.unstage
post = Fabricate(:post, raw: raw, user: user)
expect(post.has_host_spam?).to eq(false)
end
it "ignores private messages" do
SiteSetting.newuser_spam_host_threshold = 1
user = Fabricate(:user, trust_level: 0)