Class: Decidim::Verifications::Adapter

Inherits:
Object
  • Object
show all
Defined in:
lib/decidim/verifications/adapter.rb

Overview

Provides a unified interface for direct and deferred authorizations, so they can be used transparently

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(manifest) ⇒ Adapter



39
40
41
# File 'lib/decidim/verifications/adapter.rb', line 39

def initialize(manifest)
  @manifest = manifest
end

Class Method Details

.from_collection(collection) ⇒ Object



27
28
29
# File 'lib/decidim/verifications/adapter.rb', line 27

def self.from_collection(collection)
  collection.map { |e| from_element(e) }
end

.from_element(element) ⇒ Object



31
32
33
34
35
36
37
# File 'lib/decidim/verifications/adapter.rb', line 31

def self.from_element(element)
  manifest = Verifications.find_workflow_manifest(element)

  raise UnregisteredVerificationManifest unless manifest

  new(manifest)
end

Instance Method Details

#admin_root_pathObject

Administrational entry point for the verification engine



71
72
73
74
75
76
77
# File 'lib/decidim/verifications/adapter.rb', line 71

def admin_root_path
  if manifest.type == "direct"
    raise InvalidDirectVerificationROute.new(route: "admin_route_path")
  end

  public_send(:"decidim_admin_#{name}").send(:root_path)
end

#resume_authorization_path(redirect_url: nil) ⇒ Object

In the case of deferred authorizations, route to resume an authorization process. Otherwise it rises



60
61
62
63
64
65
66
# File 'lib/decidim/verifications/adapter.rb', line 60

def resume_authorization_path(redirect_url: nil)
  if manifest.type == "direct"
    raise InvalidDirectVerificationRoute.new(route: "edit_authorization_path")
  end

  main_engine.send(:edit_authorization_path, redirect_url: redirect_url)
end

#root_path(redirect_url: nil) ⇒ Object

Main entry point for the verification engine



48
49
50
51
52
53
54
# File 'lib/decidim/verifications/adapter.rb', line 48

def root_path(redirect_url: nil)
  if manifest.type == "direct"
    decidim_verifications.new_authorization_path(handler: name, redirect_url: redirect_url)
  else
    main_engine.send(:root_path, redirect_url: redirect_url)
  end
end