Class: Decidim::SpamDetection::AbstractSpamUserCommand

Inherits:
Object
  • Object
show all
Includes:
FormFactory
Defined in:
lib/decidim/spam_detection/abstract_spam_user_command.rb

Direct Known Subclasses

BlockSpamUserCommand, ReportSpamUserCommand

Constant Summary collapse

SPAM_USER =
{
  name: ENV.fetch("SPAM_DETECTION_NAME", "spam detection bot"),
  nickname: ENV.fetch("SPAM_DETECTION_NICKNAME", "Spam_detection_bot"),
  email: ENV.fetch("SPAM_DETECTION_EMAIL", "spam_detection_bot@opensourcepolitcs.eu")
}.freeze

Instance Method Summary collapse

Constructor Details

#initialize(user, probability) ⇒ AbstractSpamUserCommand

Returns a new instance of AbstractSpamUserCommand.



17
18
19
20
21
# File 'lib/decidim/spam_detection/abstract_spam_user_command.rb', line 17

def initialize(user, probability)
  @user = user
  @probability = probability
  @moderator = moderation_user
end

Instance Method Details

#add_spam_detection_metadata!(metadata) ⇒ Object



65
66
67
68
69
70
# File 'lib/decidim/spam_detection/abstract_spam_user_command.rb', line 65

def add_spam_detection_metadata!()
  @user.extended_data = @user.extended_data
                             .dup
                             .deep_merge("spam_detection" => )
  @user.save(validate: false)
end

#callObject

Raises:

  • (NotImplementedError)


23
24
25
# File 'lib/decidim/spam_detection/abstract_spam_user_command.rb', line 23

def call
  raise NotImplementedError
end

#create_moderation_admin(params) ⇒ Object



51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/decidim/spam_detection/abstract_spam_user_command.rb', line 51

def create_moderation_admin(params)
  password = ::Devise.friendly_token(::Devise.password_length.last)
  additional_params = {
    password: password,
    password_confirmation: password,
    tos_agreement: true,
    email_on_moderations: false
  }
  moderation_admin = Decidim::User.new(params.merge(additional_params))
  moderation_admin.skip_confirmation!
  moderation_admin.save
  moderation_admin
end

#detailsObject

Raises:

  • (NotImplementedError)


31
32
33
# File 'lib/decidim/spam_detection/abstract_spam_user_command.rb', line 31

def details
  raise NotImplementedError
end

#moderation_userObject



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/decidim/spam_detection/abstract_spam_user_command.rb', line 35

def moderation_user
  moderation_admin_params = {
    name: SPAM_USER[:name],
    nickname: SPAM_USER[:nickname],
    email: SPAM_USER[:email],
    admin: true,
    organization: @user.organization
  }

  moderation_admin = Decidim::User.find_by(moderation_admin_params)

  return moderation_admin unless moderation_admin.nil?

  create_moderation_admin(moderation_admin_params)
end

#reasonObject

Raises:

  • (NotImplementedError)


27
28
29
# File 'lib/decidim/spam_detection/abstract_spam_user_command.rb', line 27

def reason
  raise NotImplementedError
end