Class: Decidim::CreateOmniauthRegistration

Inherits:
Command
  • Object
show all
Defined in:
app/commands/decidim/create_omniauth_registration.rb

Overview

A command with all the business logic to create a user from omniauth

Instance Method Summary collapse

Methods inherited from Command

call, #evaluate, #method_missing, #respond_to_missing?, #transaction

Constructor Details

#initialize(form, verified_email = nil) ⇒ CreateOmniauthRegistration

Public: Initializes the command.

form - A form object with the params.



9
10
11
12
# File 'app/commands/decidim/create_omniauth_registration.rb', line 9

def initialize(form, verified_email = nil)
  @form = form
  @verified_email = verified_email
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class Decidim::Command

Instance Method Details

#callObject

Executes the command. Broadcasts these events:

  • :ok when everything is valid.

  • :invalid if the form wasn’t valid and we couldn’t proceed.

Returns nothing.



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'app/commands/decidim/create_omniauth_registration.rb', line 20

def call
  verify_oauth_signature!

  begin
    if existing_identity
      user = existing_identity.user
      verify_user_confirmed(user)

      return broadcast(:ok, user)
    end
    return broadcast(:invalid) if form.invalid?

    transaction do
      create_or_find_user
      @identity = create_identity
    end
    trigger_omniauth_registration

    broadcast(:ok, @user)
  rescue ActiveRecord::RecordInvalid => e
    broadcast(:error, e.record)
  end
end