class Decidim::DirectVerifications::RegisterUser

Attributes

current_user[R]
email[R]
instrumenter[R]
name[R]
organization[R]

Public Class Methods

new(email, data, organization, current_user, instrumenter) click to toggle source
# File lib/decidim/direct_verifications/register_user.rb, line 6
def initialize(email, data, organization, current_user, instrumenter)
  @email = email
  @name = data.is_a?(Hash) ? data[:name] : data
  @organization = organization
  @current_user = current_user
  @instrumenter = instrumenter
end

Public Instance Methods

call() click to toggle source
# File lib/decidim/direct_verifications/register_user.rb, line 14
def call
  return if user

  InviteUser.call(form) do
    on(:ok) do
      instrumenter.track(:registered, email, user)
    end
    on(:invalid) do
      instrumenter.track(:registered, email)
    end
  end
rescue StandardError => e
  instrumenter.track(:registered, email)
  raise e if Rails.env.test? || Rails.env.development?
end

Private Instance Methods

fallback_name() click to toggle source
# File lib/decidim/direct_verifications/register_user.rb, line 49
def fallback_name
  email.split("@").first
end
form() click to toggle source
# File lib/decidim/direct_verifications/register_user.rb, line 38
def form
  RegistrationForm.new(
    name: name.presence || fallback_name,
    email: email.downcase,
    organization: organization,
    admin: false,
    invited_by: current_user,
    invitation_instructions: "direct_invite"
  )
end
user() click to toggle source
# File lib/decidim/direct_verifications/register_user.rb, line 34
def user
  @user ||= User.find_by(email: email, decidim_organization_id: organization.id)
end