class Decidim::DirectVerifications::AuthorizeUser

Attributes

authorization_handler[R]
data[R]
email[R]
instrumenter[R]
organization[R]
session[R]

Public Class Methods

new(email, data, session, organization, instrumenter, authorization_handler) click to toggle source

rubocop:disable Metrics/ParameterLists

# File lib/decidim/direct_verifications/authorize_user.rb, line 7
def initialize(email, data, session, organization, instrumenter, authorization_handler)
  @email = email
  @data = data
  @session = session
  @organization = organization
  @instrumenter = instrumenter
  @authorization_handler = authorization_handler
end

Public Instance Methods

call() click to toggle source

rubocop:enable Metrics/ParameterLists

# File lib/decidim/direct_verifications/authorize_user.rb, line 17
def call
  unless user
    instrumenter.add_error :authorized, email
    return
  end

  return unless valid_authorization?

  Verification::ConfirmUserAuthorization.call(authorization, form, session) do
    on(:ok) do
      instrumenter.add_processed :authorized, email
    end
    on(:invalid) do
      instrumenter.add_error :authorized, email
    end
  end
end

Private Instance Methods

authorization() click to toggle source
# File lib/decidim/direct_verifications/authorize_user.rb, line 47
def authorization
  @authorization ||=
    begin
      auth = Authorization.find_or_initialize_by(
        user: user,
        name: authorization_handler
      )
      auth.metadata = data
      auth
    end
end
form() click to toggle source
# File lib/decidim/direct_verifications/authorize_user.rb, line 59
def form
  Verification::DirectVerificationsForm.new(email: user.email, name: user.name)
end
user() click to toggle source
# File lib/decidim/direct_verifications/authorize_user.rb, line 43
def user
  @user ||= User.find_by(email: email, decidim_organization_id: organization.id)
end
valid_authorization?() click to toggle source
# File lib/decidim/direct_verifications/authorize_user.rb, line 39
def valid_authorization?
  !authorization.granted? || authorization.expired?
end