FEATURE: Implement SiteSetting to Allow Anonymous Likes (#22131)

Allow anonymous users (logged-in, but set to anonymous posting) to like posts

---------

Co-authored-by: Emmett Ling <eling@zendesk.com>
Co-authored-by: Nat <natalie.tay@discourse.org>
This commit is contained in:
Emmett Ling
2023-07-21 06:21:07 -07:00
committed by GitHub
parent 8ffc274438
commit 978d52841a
7 changed files with 221 additions and 4 deletions

View File

@@ -620,10 +620,14 @@ class Guardian
private
def is_my_own?(obj)
unless anonymous?
return obj.user_id == @user.id if obj.respond_to?(:user_id) && obj.user_id && @user.id
return obj.user == @user if obj.respond_to?(:user)
if anonymous?
return(
SiteSetting.allow_anonymous_likes? && obj.class == PostAction && obj.is_like? &&
obj.user_id == @user.id
)
end
return obj.user_id == @user.id if obj.respond_to?(:user_id) && obj.user_id && @user.id
return obj.user == @user if obj.respond_to?(:user)
false
end

View File

@@ -43,7 +43,10 @@ module PostGuardian
already_did_flagging = taken.any? && (taken & PostActionType.notify_flag_types.values).any?
result =
if authenticated? && post && !@user.anonymous?
if authenticated? && post
# Allow anonymous users to like if feature is enabled and short-circuit otherwise
return SiteSetting.allow_anonymous_likes? && (action_key == :like) if @user.anonymous?
# Silenced users can't flag
return false if is_flag && @user.silenced?