diff --git a/lib/guardian/post_guardian.rb b/lib/guardian/post_guardian.rb index ee72eaf465b..9b8f8ab0c16 100644 --- a/lib/guardian/post_guardian.rb +++ b/lib/guardian/post_guardian.rb @@ -106,7 +106,7 @@ module PostGuardian end if post.wiki && (@user.trust_level >= SiteSetting.min_trust_to_edit_wiki_post.to_i) - return true + return can_create_post?(post.topic) end if @user.trust_level < SiteSetting.min_trust_to_edit_post diff --git a/spec/components/guardian_spec.rb b/spec/components/guardian_spec.rb index 702344884ae..209b71108bd 100644 --- a/spec/components/guardian_spec.rb +++ b/spec/components/guardian_spec.rb @@ -1050,6 +1050,19 @@ describe Guardian do expect(Guardian.new(coding_horror).can_edit?(post)).to be_truthy end + it "returns false if a wiki but the user can't create a post" do + c = Fabricate(:category) + c.set_permissions(:everyone => :readonly) + c.save + + topic = Fabricate(:topic, category: c) + post = Fabricate(:post, topic: topic) + post.wiki = true + + user = Fabricate(:user) + expect(Guardian.new(user).can_edit?(post)).to eq(false) + end + it 'returns true as a moderator' do expect(Guardian.new(moderator).can_edit?(post)).to be_truthy end