Files
discourse/app/serializers/reviewable_user_serializer.rb
Gary Pendergast b4cdc39e51 FEATURE: Allow rejected user details to be scrubbed (#31987)
When a site has the `must_approve_users` setting enabled, new user data is stored on the Reviewable model, including username, email, and any other data that is entered during signup. If the user is rejected, that data is retained, without a clear path to deleting it.

In order to allow data that could be PII to be removed, without breaking Discourse's audit and logging trails, this change scrubs the PII from the relevant `ReviewableUser` and `UserHistory` objects, replacing that data with who scrubbed it, and why.
2025-03-31 12:40:35 +11:00

39 lines
695 B
Ruby

# frozen_string_literal: true
class ReviewableUserSerializer < ReviewableSerializer
attributes :link_admin, :user_fields, :reject_reason
payload_attributes(
:username,
:email,
:name,
:bio,
:website,
:scrubbed_by,
:scrubbed_reason,
:scrubbed_at,
)
def link_admin
scope.is_staff? && object.target.present?
end
def user_fields
object.target.user_fields
end
def include_user_fields?
object.target.present? && object.target.user_fields.present?
end
def attributes(*args)
data = super
data[:payload]&.delete("email") if !include_email?
data
end
def include_email?
scope.can_check_emails?(scope.user)
end
end