FIX: Various fixes to support posts with no user (#8877)

* Do not grant badges for posts with no user
* Ensure instructions are correct in Change Owner modal
* Hide user-dependent actions from posts with no user
* Make PostRevisor work with posts with no user
* Ensure posts with no user can be deleted
* discourse-narrative-bot should ignore posts with no user
* Skip TopicLink creation for posts with no user
This commit is contained in:
Dan Ungureanu
2020-03-11 14:03:20 +02:00
committed by GitHub
parent 6fdb4c33a6
commit 0754c7c404
9 changed files with 19 additions and 12 deletions

View File

@@ -56,7 +56,7 @@ class CookedPostProcessor
end
def grant_badges
return unless Guardian.new.can_see?(@post)
return if @post.user.blank? || !Guardian.new.can_see?(@post)
BadgeGranter.grant(Badge.find(Badge::FirstEmoji), @post.user, post_id: @post.id) if has_emoji?
BadgeGranter.grant(Badge.find(Badge::FirstOnebox), @post.user, post_id: @post.id) if @has_oneboxes

View File

@@ -30,7 +30,7 @@ module PostGuardian
return false unless (can_see_post.nil? && can_see_post?(post)) || can_see_post
# no warnings except for staff
return false if (action_key == :notify_user && !is_staff? && opts[:is_warning].present? && opts[:is_warning] == 'true')
return false if action_key == :notify_user && (post.user.blank? || (!is_staff? && opts[:is_warning].present? && opts[:is_warning] == 'true'))
taken = opts[:taken_actions].try(:keys).to_a
is_flag = PostActionType.notify_flag_types[action_key]
@@ -71,7 +71,7 @@ module PostGuardian
not(post.trashed?) &&
# don't like your own stuff
not(action_key == :like && is_my_own?(post))
not(action_key == :like && (post.user.blank? || is_my_own?(post)))
end
!!result

View File

@@ -276,6 +276,8 @@ class PostDestroyer
end
def notify_deletion(reviewable)
return if @post.user.blank?
allowed_user = @user.human? && @user.staff?
return unless allowed_user && rs = reviewable.reviewable_scores.order('created_at DESC').first

View File

@@ -180,13 +180,13 @@ class PostRevisor
@fields.has_key?('raw') &&
@editor.staff? &&
@editor != Discourse.system_user &&
!@post.user.staff?
!@post.user&.staff?
)
PostLocker.new(@post, @editor).lock
end
# We log staff edits to posts
if @editor.staff? && @editor.id != @post.user.id && @fields.has_key?('raw') && !@opts[:skip_staff_log]
if @editor.staff? && @editor.id != @post.user_id && @fields.has_key?('raw') && !@opts[:skip_staff_log]
StaffActionLogger.new(@editor).log_post_edit(
@post,
old_raw: old_raw