mirror of
https://github.com/discourse/discourse.git
synced 2025-01-19 05:32:44 +08:00
New site setting trusted_users_can_edit_others
The default is true to keep with previous discourse behavior. If disabled, high trust level users cannot edit the topics or posts of other users.
This commit is contained in:
parent
ee9be65b2c
commit
69af881f7f
|
@ -1291,6 +1291,7 @@ en:
|
|||
tl3_requires_likes_given: "The minimum number of likes that must be given in the last (tl3 time period) days to qualify for promotion to trust level 3."
|
||||
tl3_requires_likes_received: "The minimum number of likes that must be received in the last (tl3 time period) days to qualify for promotion to trust level 3."
|
||||
tl3_links_no_follow: "Do not remove rel=nofollow from links posted by trust level 3 users."
|
||||
trusted_users_can_edit_others: "Allow users with high trust levels to edit content from other users"
|
||||
|
||||
min_trust_to_create_topic: "The minimum trust level required to create a new topic."
|
||||
allow_flagging_staff: "If enabled, users can flag posts from staff accounts."
|
||||
|
|
|
@ -971,6 +971,9 @@ trust:
|
|||
tl3_links_no_follow:
|
||||
default: false
|
||||
client: true
|
||||
trusted_users_can_edit_others:
|
||||
default: true
|
||||
client: false
|
||||
|
||||
security:
|
||||
force_https:
|
||||
|
|
|
@ -115,9 +115,13 @@ module PostGuardian
|
|||
# Must be staff to edit a locked post
|
||||
return false if post.locked? && !is_staff?
|
||||
|
||||
if is_staff? || @user.has_trust_level?(TrustLevel[4])
|
||||
return can_create_post?(post.topic)
|
||||
end
|
||||
return can_create_post?(post.topic) if (
|
||||
is_staff? ||
|
||||
(
|
||||
SiteSetting.trusted_users_can_edit_others? &&
|
||||
@user.has_trust_level?(TrustLevel[4])
|
||||
)
|
||||
)
|
||||
|
||||
if post.topic.archived? || post.user_deleted || post.deleted_at
|
||||
return false
|
||||
|
|
|
@ -46,10 +46,22 @@ module TopicGuardian
|
|||
return false if !can_create_topic_on_category?(topic.category)
|
||||
|
||||
# TL4 users can edit archived topics, but can not edit private messages
|
||||
return true if (topic.archived && !topic.private_message? && user.has_trust_level?(TrustLevel[4]) && can_create_post?(topic))
|
||||
return true if (
|
||||
SiteSetting.trusted_users_can_edit_others? &&
|
||||
topic.archived &&
|
||||
!topic.private_message? &&
|
||||
user.has_trust_level?(TrustLevel[4]) &&
|
||||
can_create_post?(topic)
|
||||
)
|
||||
|
||||
# TL3 users can not edit archived topics and private messages
|
||||
return true if (!topic.archived && !topic.private_message? && user.has_trust_level?(TrustLevel[3]) && can_create_post?(topic))
|
||||
return true if (
|
||||
SiteSetting.trusted_users_can_edit_others? &&
|
||||
!topic.archived &&
|
||||
!topic.private_message? &&
|
||||
user.has_trust_level?(TrustLevel[3]) &&
|
||||
can_create_post?(topic)
|
||||
)
|
||||
|
||||
return false if topic.archived
|
||||
is_my_own?(topic) && !topic.edit_time_limit_expired?
|
||||
|
|
|
@ -1225,6 +1225,11 @@ describe Guardian do
|
|||
expect(Guardian.new(trust_level_4).can_edit?(post)).to be_truthy
|
||||
end
|
||||
|
||||
it 'returns false as a TL4 user if trusted_users_can_edit_others is true' do
|
||||
SiteSetting.trusted_users_can_edit_others = false
|
||||
expect(Guardian.new(trust_level_4).can_edit?(post)).to eq(false)
|
||||
end
|
||||
|
||||
it 'returns false when trying to edit a post with no trust' do
|
||||
SiteSetting.min_trust_to_edit_post = 2
|
||||
post.user.trust_level = 1
|
||||
|
@ -1332,6 +1337,11 @@ describe Guardian do
|
|||
expect(Guardian.new(trust_level_3).can_edit?(topic)).to eq(true)
|
||||
end
|
||||
|
||||
it 'is false at TL3, if `trusted_users_can_edit_others` is false' do
|
||||
SiteSetting.trusted_users_can_edit_others = false
|
||||
expect(Guardian.new(trust_level_3).can_edit?(topic)).to eq(false)
|
||||
end
|
||||
|
||||
it "returns false when the category is read only" do
|
||||
topic.category.set_permissions(everyone: :readonly)
|
||||
topic.category.save
|
||||
|
@ -1381,6 +1391,11 @@ describe Guardian do
|
|||
expect(Guardian.new(trust_level_4).can_edit?(archived_topic)).to be_truthy
|
||||
end
|
||||
|
||||
it 'is false at TL4, if `trusted_users_can_edit_others` is false' do
|
||||
SiteSetting.trusted_users_can_edit_others = false
|
||||
expect(Guardian.new(trust_level_4).can_edit?(archived_topic)).to eq(false)
|
||||
end
|
||||
|
||||
it 'returns false at trust level 3' do
|
||||
expect(Guardian.new(trust_level_3).can_edit?(archived_topic)).to be_falsey
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue
Block a user