mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
Don't send more pm's after a user has been blocked from making posts. This can happen if a staff member flags posts that are already hidden.
This commit is contained in:
parent
d8c2856a4c
commit
8cc49d9797
@ -48,10 +48,11 @@ class SpamRulesEnforcer
|
|||||||
|
|
||||||
def punish_user
|
def punish_user
|
||||||
Post.transaction do
|
Post.transaction do
|
||||||
UserBlocker.block(@user, nil, {message: :too_many_spam_flags})
|
if UserBlocker.block(@user, nil, {message: :too_many_spam_flags})
|
||||||
GroupMessage.create(Group[:moderators].name, :user_automatically_blocked, {user: @user, limit_once_per: false})
|
GroupMessage.create(Group[:moderators].name, :user_automatically_blocked, {user: @user, limit_once_per: false})
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
end
|
end
|
||||||
|
@ -14,10 +14,14 @@ class UserBlocker
|
|||||||
|
|
||||||
def block
|
def block
|
||||||
hide_posts
|
hide_posts
|
||||||
|
unless @user.blocked?
|
||||||
@user.blocked = true
|
@user.blocked = true
|
||||||
if @user.save
|
if @user.save
|
||||||
SystemMessage.create(@user, @opts[:message] || :blocked_by_staff)
|
SystemMessage.create(@user, @opts[:message] || :blocked_by_staff)
|
||||||
end
|
end
|
||||||
|
else
|
||||||
|
false
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def hide_posts
|
def hide_posts
|
||||||
|
@ -111,9 +111,9 @@ describe SpamRulesEnforcer do
|
|||||||
subject.stubs(:block?).returns(true)
|
subject.stubs(:block?).returns(true)
|
||||||
end
|
end
|
||||||
|
|
||||||
it "blocks the user" do
|
context 'user is not blocked' do
|
||||||
UserBlocker.expects(:block).with(user, nil, has_entries(message: :too_many_spam_flags))
|
before do
|
||||||
subject.punish_user
|
UserBlocker.expects(:block).with(user, nil, has_entries(message: :too_many_spam_flags)).returns(true)
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'prevents the user from making new posts' do
|
it 'prevents the user from making new posts' do
|
||||||
@ -130,6 +130,18 @@ describe SpamRulesEnforcer do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context 'user is already blocked' do
|
||||||
|
before do
|
||||||
|
UserBlocker.expects(:block).with(user, nil, has_entries(message: :too_many_spam_flags)).returns(false)
|
||||||
|
end
|
||||||
|
|
||||||
|
it "doesn't send a pm to moderators if the user is already blocked" do
|
||||||
|
GroupMessage.expects(:create).never
|
||||||
|
subject.punish_user
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
describe 'block?' do
|
describe 'block?' do
|
||||||
|
|
||||||
context 'never been blocked' do
|
context 'never been blocked' do
|
||||||
|
@ -53,6 +53,13 @@ describe UserBlocker do
|
|||||||
SystemMessage.expects(:create).never
|
SystemMessage.expects(:create).never
|
||||||
block_user
|
block_user
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it "doesn't send a pm if the user is already blocked" do
|
||||||
|
user.stubs(:blocked?).returns(true)
|
||||||
|
SystemMessage.unstub(:create)
|
||||||
|
SystemMessage.expects(:create).never
|
||||||
|
block_user.should == false
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe 'unblock' do
|
describe 'unblock' do
|
||||||
|
Loading…
Reference in New Issue
Block a user