diff --git a/app/serializers/user_serializer.rb b/app/serializers/user_serializer.rb index b93aa2ee78d..f7b56ebf4bf 100644 --- a/app/serializers/user_serializer.rb +++ b/app/serializers/user_serializer.rb @@ -339,22 +339,36 @@ class UserSerializer < BasicUserSerializer User.system_avatar_template(object.username) end + def include_gravatar_avatar_upload_id? + object.user_avatar&.gravatar_upload_id + end + def gravatar_avatar_upload_id - object.user_avatar.try(:gravatar_upload_id) + object.user_avatar.gravatar_upload_id + end + + def include_gravatar_avatar_template? + include_gravatar_avatar_upload_id? end def gravatar_avatar_template - return unless gravatar_upload_id = object.user_avatar.try(:gravatar_upload_id) - User.avatar_template(object.username, gravatar_upload_id) + User.avatar_template(object.username, object.user_avatar.gravatar_upload_id) + end + + def include_custom_avatar_upload_id? + object.user_avatar&.custom_upload_id end def custom_avatar_upload_id - object.user_avatar.try(:custom_upload_id) + object.user_avatar.custom_upload_id + end + + def include_custom_avatar_template? + include_custom_avatar_upload_id? end def custom_avatar_template - return unless custom_upload_id = object.user_avatar.try(:custom_upload_id) - User.avatar_template(object.username, custom_upload_id) + User.avatar_template(object.username, object.user_avatar.custom_upload_id) end def has_title_badges diff --git a/app/serializers/web_hook_user_serializer.rb b/app/serializers/web_hook_user_serializer.rb index e964174bad8..d715e4b0252 100644 --- a/app/serializers/web_hook_user_serializer.rb +++ b/app/serializers/web_hook_user_serializer.rb @@ -5,6 +5,31 @@ class WebHookUserSerializer < UserSerializer def staff_attributes(*attrs) end + %i{ + can_edit + can_edit_username + can_edit_email + can_edit_name + can_send_private_messages + can_send_private_message_to_user + uploaded_avatar_id + has_title_badges + bio_cooked + custom_fields + can_be_deleted + can_delete_all_posts + system_avatar_upload_id + gravatar_avatar_upload_id + custom_avatar_upload_id + can_change_bio + user_api_keys + group_users + }.each do |attr| + define_method("include_#{attr}?") do + false + end + end + def include_email? scope.is_admin? end diff --git a/spec/serializers/web_hook_user_serializer_spec.rb b/spec/serializers/web_hook_user_serializer_spec.rb index 3734587bb30..eb5e417b14f 100644 --- a/spec/serializers/web_hook_user_serializer_spec.rb +++ b/spec/serializers/web_hook_user_serializer_spec.rb @@ -18,4 +18,21 @@ RSpec.describe WebHookUserSerializer do expect(payload[:email]).to eq(user.email) expect(payload[:external_id]).to eq('12345') end + + it 'should only include the required keys' do + count = serializer.as_json.keys.count + difference = count - 42 + + expect(difference).to eq(0), lambda { + message = "" + + if difference < 0 + message << "#{difference * -1} key(s) have been removed from this serializer." + else + message << "#{difference} key(s) have been added to this serializer." + end + + message << "\nPlease verify if those key(s) are required as part of the web hook's payload." + } + end end