Retrospring/lib/use_case/user/ban.rb

52 lines
1.2 KiB
Ruby
Raw Normal View History

# frozen_string_literal: true
2022-07-23 06:33:35 -07:00
require "use_case/base"
module UseCase
module User
class Ban < UseCase::Base
2022-07-23 06:33:35 -07:00
REASON_SPAM = "Spam"
REASON_HARASSMENT = "Harassment"
REASON_BAN_EVASION = "Ban evasion"
option :target_user_id, type: Types::Coercible::Integer
option :expiry, types: Types::Nominal::DateTime.optional
option :source_user_id, type: Types::Coercible::Integer.optional
option :reason, type: Types::Coercible::String.optional
def call
2022-06-26 02:00:09 -07:00
ban = target_user.ban(expiry, reason, source_user)
if reason == REASON_SPAM
target_user.update!(
2021-12-29 15:20:09 -08:00
profile_picture: nil,
2022-07-23 06:33:35 -07:00
profile_header: nil
2021-12-29 15:20:09 -08:00
)
target_user.profile.update!(
display_name: nil,
2022-07-23 06:33:35 -07:00
description: "",
location: "",
website: ""
)
end
{
2022-07-23 06:33:35 -07:00
status: 201,
resource: ban,
extra: {
target_user:
}
}
end
def target_user
@target_user ||= ::User.find(target_user_id)
end
def source_user
2022-07-23 06:33:35 -07:00
@source_user ||= ::User.find(source_user_id) if source_user_id
end
end
end
end