Class: Decidim::Verifications::AuthorizeUser

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

Overview

A command to authorize a user with an authorization handler.

Instance Method Summary collapse

Constructor Details

#initialize(handler, organization) ⇒ AuthorizeUser

Public: Initializes the command.

handler - An AuthorizationHandler object.



10
11
12
13
# File 'app/commands/decidim/verifications/authorize_user.rb', line 10

def initialize(handler, organization)
  @handler = handler
  @organization = organization
end

Instance Method Details

#callObject

Executes the command. Broadcasts these events:

  • :ok when everything is valid.
  • :invalid if the handler was not valid and we could not proceed.
  • :transferred if there is a duplicated authorization associated to other user and the authorization can be transferred.
  • :transfer_user if there is a duplicated authorization associated to an ephemeral user and the current user is also ephemeral the session is transferred to the user with the existing authorization

Returns nothing.



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'app/commands/decidim/verifications/authorize_user.rb', line 28

def call
  if !handler.unique? && handler.user_transferrable?
    handler.user = handler.duplicate.user
    Authorization.create_or_update_from(handler)
    return broadcast(:transfer_user, handler.user)
  end

  return transfer_authorization if !handler.unique? && handler.transferrable?

  if handler.invalid?
    register_conflict

    return broadcast(:invalid)
  end

  return broadcast(:invalid) unless set_tos_agreement

  Authorization.create_or_update_from(handler)

  broadcast(:ok)
end