mirror of
https://github.com/discourse/discourse.git
synced 2025-04-18 03:39:05 +08:00
FIX: staged users are still tl0 but do not trigger spam if 1 week old.
This commit is contained in:
parent
630b4570ef
commit
68e4e6a575
@ -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.from_staged? || acting_user.has_trust_level?(TrustLevel[1]))
|
||||
return false if acting_user.present? && (acting_user.staged? || acting_user.mature_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 }
|
||||
|
@ -1073,6 +1073,10 @@ class User < ActiveRecord::Base
|
||||
custom_fields[User::FROM_STAGED]
|
||||
end
|
||||
|
||||
def mature_staged?
|
||||
from_staged? && self.created_at && self.created_at < 1.week.ago
|
||||
end
|
||||
|
||||
protected
|
||||
|
||||
def badge_grant
|
||||
|
@ -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.from_staged?)
|
||||
post.acting_user.present? && post.acting_user.has_trust_level?(TrustLevel[level])
|
||||
end
|
||||
|
||||
def private_message?(post)
|
||||
|
@ -967,9 +967,21 @@ describe Post do
|
||||
expect(post.has_host_spam?).to eq(false)
|
||||
end
|
||||
|
||||
it "doesn't punish previously staged users" do
|
||||
it "punishes previously staged users that were created within 1 week" do
|
||||
SiteSetting.newuser_spam_host_threshold = 1
|
||||
SiteSetting.newuser_max_links = 3
|
||||
user = Fabricate(:user, staged: true, trust_level: 0)
|
||||
user.created_at = 1.hour.ago
|
||||
user.unstage
|
||||
post = Fabricate(:post, raw: raw, user: user)
|
||||
expect(post.has_host_spam?).to eq(true)
|
||||
end
|
||||
|
||||
it "doesn't punish previously staged users over 1 week old" do
|
||||
SiteSetting.newuser_spam_host_threshold = 1
|
||||
SiteSetting.newuser_max_links = 3
|
||||
user = Fabricate(:user, staged: true, trust_level: 0)
|
||||
user.created_at = 1.week.ago
|
||||
user.unstage
|
||||
post = Fabricate(:post, raw: raw, user: user)
|
||||
expect(post.has_host_spam?).to eq(false)
|
||||
|
Loading…
x
Reference in New Issue
Block a user