Retrospring/lib/use_case/user/ban.rb

57 lines
1.3 KiB
Ruby

# frozen_string_literal: true
require 'use_case/base'
module UseCase
module User
class Ban < UseCase::Base
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
ban = ::UserBan.create!(
user: target_user,
expires_at: expiry,
banned_by: source_user,
reason: reason
)
if reason == REASON_SPAM
target_user.update!(
profile_picture: nil,
profile_header: nil
)
target_user.profile.update!(
display_name: nil,
description: '',
location: '',
website: '',
)
end
{
ban: ban
}
end
def target_user
@target_user ||= ::User.find(target_user_id)
end
def source_user
if source_user_id
@source_user ||= ::User.find(source_user_id)
else
nil
end
end
end
end
end