decidim-verifications 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/README.md +101 -0
- data/Rakefile +3 -0
- data/app/commands/decidim/verifications/authorize_user.rb +61 -0
- data/app/commands/decidim/verifications/confirm_user_authorization.rb +49 -0
- data/app/commands/decidim/verifications/perform_authorization_step.rb +48 -0
- data/app/controllers/decidim/verifications/authorizations_controller.rb +91 -0
- data/app/controllers/decidim/verifications/id_documents/admin/confirmations_controller.rb +48 -0
- data/app/controllers/decidim/verifications/id_documents/admin/pending_authorizations_controller.rb +28 -0
- data/app/controllers/decidim/verifications/id_documents/admin/rejections_controller.rb +37 -0
- data/app/controllers/decidim/verifications/id_documents/authorizations_controller.rb +82 -0
- data/app/controllers/decidim/verifications/postal_letter/admin/pending_authorizations_controller.rb +27 -0
- data/app/controllers/decidim/verifications/postal_letter/admin/postages_controller.rb +41 -0
- data/app/controllers/decidim/verifications/postal_letter/authorizations_controller.rb +74 -0
- data/app/forms/decidim/verifications/id_documents/information_form.rb +50 -0
- data/app/forms/decidim/verifications/id_documents/information_rejection_form.rb +15 -0
- data/app/forms/decidim/verifications/id_documents/upload_form.rb +20 -0
- data/app/forms/decidim/verifications/postal_letter/address_form.rb +28 -0
- data/app/forms/decidim/verifications/postal_letter/confirmation_form.rb +19 -0
- data/app/forms/decidim/verifications/postal_letter/postage_form.rb +34 -0
- data/app/presenters/decidim/verifications/id_documents/authorization_presenter.rb +20 -0
- data/app/presenters/decidim/verifications/postal_letter/authorization_presenter.rb +59 -0
- data/app/queries/decidim/verifications/authorizations.rb +41 -0
- data/app/services/decidim/authorization_handler.rb +112 -0
- data/app/services/decidim/dummy_authorization_handler.rb +27 -0
- data/app/uploaders/decidim/verifications/attachment_uploader.rb +16 -0
- data/app/views/decidim/verifications/authorizations/first_login.html.erb +22 -0
- data/app/views/decidim/verifications/authorizations/index.html.erb +78 -0
- data/app/views/decidim/verifications/authorizations/new.html.erb +33 -0
- data/app/views/decidim/verifications/id_documents/admin/confirmations/new.html.erb +26 -0
- data/app/views/decidim/verifications/id_documents/admin/pending_authorizations/index.html.erb +32 -0
- data/app/views/decidim/verifications/id_documents/authorizations/edit.html.erb +53 -0
- data/app/views/decidim/verifications/id_documents/authorizations/new.html.erb +35 -0
- data/app/views/decidim/verifications/postal_letter/admin/pending_authorizations/index.html.erb +50 -0
- data/app/views/decidim/verifications/postal_letter/authorizations/edit.html.erb +37 -0
- data/app/views/decidim/verifications/postal_letter/authorizations/new.html.erb +27 -0
- data/config/locales/ca.yml +126 -0
- data/config/locales/en.yml +126 -0
- data/config/locales/es.yml +126 -0
- data/config/locales/eu.yml +125 -0
- data/config/locales/fi.yml +125 -0
- data/config/locales/fr.yml +125 -0
- data/config/locales/it.yml +125 -0
- data/config/locales/nl.yml +125 -0
- data/config/locales/pl.yml +125 -0
- data/config/locales/pt.yml +125 -0
- data/config/locales/ru.yml +5 -0
- data/config/locales/uk.yml +41 -0
- data/db/migrate/20171030133426_move_authorizations_to_new_api.rb +66 -0
- data/lib/decidim/verifications.rb +26 -0
- data/lib/decidim/verifications/adapter.rb +88 -0
- data/lib/decidim/verifications/dummy.rb +5 -0
- data/lib/decidim/verifications/engine.rb +24 -0
- data/lib/decidim/verifications/id_documents.rb +6 -0
- data/lib/decidim/verifications/id_documents/admin.rb +12 -0
- data/lib/decidim/verifications/id_documents/admin_engine.rb +21 -0
- data/lib/decidim/verifications/id_documents/engine.rb +18 -0
- data/lib/decidim/verifications/id_documents/workflow.rb +6 -0
- data/lib/decidim/verifications/postal_letter.rb +6 -0
- data/lib/decidim/verifications/postal_letter/admin.rb +12 -0
- data/lib/decidim/verifications/postal_letter/admin_engine.rb +21 -0
- data/lib/decidim/verifications/postal_letter/engine.rb +18 -0
- data/lib/decidim/verifications/postal_letter/workflow.rb +6 -0
- data/lib/decidim/verifications/registry.rb +39 -0
- data/lib/decidim/verifications/version.rb +10 -0
- data/lib/decidim/verifications/workflow_manifest.rb +56 -0
- data/lib/decidim/verifications/workflows.rb +58 -0
- metadata +152 -0
@@ -0,0 +1,56 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module Verifications
|
5
|
+
#
|
6
|
+
# This class serves as a DSL to declaratively specify a verification method.
|
7
|
+
#
|
8
|
+
# To define a direct verification method, you need to specify the `form`
|
9
|
+
# attribute as a `Rectify::Form` that will be valid if the authorization is
|
10
|
+
# valid.
|
11
|
+
#
|
12
|
+
# To define a deferred verification method, you need specify the `engine`
|
13
|
+
# attribute as a full `Rails::Engine` (and optionally another engine for the
|
14
|
+
# admin side as the `admin_engine` attribute). The verification will succeed
|
15
|
+
# once the engine creates a valid authorization for the method with the
|
16
|
+
# `granted_at` column set in DB.
|
17
|
+
#
|
18
|
+
# Note that whereas direct methods can be used for "on the fly"
|
19
|
+
# verification, deferred methods require the authorization status to be
|
20
|
+
# persisted into DB. That's the reason why only direct methods can be used
|
21
|
+
# for user impersonation, for example, since they require continuous "on the
|
22
|
+
# fly" verification by the impersonating user.
|
23
|
+
#
|
24
|
+
class WorkflowManifest
|
25
|
+
include ActiveModel::Model
|
26
|
+
include Virtus.model
|
27
|
+
|
28
|
+
attribute :engine, Rails::Engine
|
29
|
+
attribute :admin_engine, Rails::Engine
|
30
|
+
attribute :form, String
|
31
|
+
|
32
|
+
validate :engine_or_form
|
33
|
+
|
34
|
+
attribute :name, String
|
35
|
+
validates :name, presence: true
|
36
|
+
|
37
|
+
def engine_or_form
|
38
|
+
engine || form
|
39
|
+
end
|
40
|
+
|
41
|
+
def type
|
42
|
+
form ? "direct" : "multistep"
|
43
|
+
end
|
44
|
+
|
45
|
+
alias key name
|
46
|
+
|
47
|
+
def fullname
|
48
|
+
I18n.t("#{key}.name", scope: "decidim.authorization_handlers")
|
49
|
+
end
|
50
|
+
|
51
|
+
def description
|
52
|
+
"#{fullname} (#{I18n.t(type, scope: "decidim.authorization_handlers")})"
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module Verifications
|
5
|
+
autoload :Adapter, "decidim/verifications/adapter"
|
6
|
+
autoload :Registry, "decidim/verifications/registry"
|
7
|
+
|
8
|
+
#
|
9
|
+
# Provides direct access to the verification registry
|
10
|
+
#
|
11
|
+
class << self
|
12
|
+
delegate :clear_workflows, to: :registry
|
13
|
+
|
14
|
+
#
|
15
|
+
# Restores registered verification workflows to the array being passed in
|
16
|
+
#
|
17
|
+
# Useful for testing.
|
18
|
+
#
|
19
|
+
def reset_workflows(*manifests)
|
20
|
+
registry.reset_workflows(*manifests)
|
21
|
+
end
|
22
|
+
|
23
|
+
#
|
24
|
+
# Registers a new verification workflow using the workflow manifest API
|
25
|
+
#
|
26
|
+
def register_workflow(name, &block)
|
27
|
+
registry.register_workflow(name, &block)
|
28
|
+
end
|
29
|
+
|
30
|
+
#
|
31
|
+
# Finds a verification workflow by name
|
32
|
+
#
|
33
|
+
def find_workflow_manifest(name)
|
34
|
+
workflows.find { |workflow| workflow.name == name.to_s }
|
35
|
+
end
|
36
|
+
|
37
|
+
#
|
38
|
+
# Collection of registered verification workflows
|
39
|
+
#
|
40
|
+
def workflows
|
41
|
+
registry.workflow_collection
|
42
|
+
end
|
43
|
+
|
44
|
+
#
|
45
|
+
# Collection of registered verification workflows having an admin engine
|
46
|
+
#
|
47
|
+
def admin_workflows
|
48
|
+
workflows.select(&:admin_engine)
|
49
|
+
end
|
50
|
+
|
51
|
+
private
|
52
|
+
|
53
|
+
def registry
|
54
|
+
@registry ||= Registry.new
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
metadata
ADDED
@@ -0,0 +1,152 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: decidim-verifications
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.8.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- David Rodriguez
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2017-12-05 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: decidim-core
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 0.8.0
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 0.8.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: decidim-admin
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 0.8.0
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 0.8.0
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: decidim-dev
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - '='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 0.8.0
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 0.8.0
|
55
|
+
description: Several verification methods for your decidim instance
|
56
|
+
email:
|
57
|
+
- deivid.rodriguez@riseup.net
|
58
|
+
executables: []
|
59
|
+
extensions: []
|
60
|
+
extra_rdoc_files: []
|
61
|
+
files:
|
62
|
+
- README.md
|
63
|
+
- Rakefile
|
64
|
+
- app/commands/decidim/verifications/authorize_user.rb
|
65
|
+
- app/commands/decidim/verifications/confirm_user_authorization.rb
|
66
|
+
- app/commands/decidim/verifications/perform_authorization_step.rb
|
67
|
+
- app/controllers/decidim/verifications/authorizations_controller.rb
|
68
|
+
- app/controllers/decidim/verifications/id_documents/admin/confirmations_controller.rb
|
69
|
+
- app/controllers/decidim/verifications/id_documents/admin/pending_authorizations_controller.rb
|
70
|
+
- app/controllers/decidim/verifications/id_documents/admin/rejections_controller.rb
|
71
|
+
- app/controllers/decidim/verifications/id_documents/authorizations_controller.rb
|
72
|
+
- app/controllers/decidim/verifications/postal_letter/admin/pending_authorizations_controller.rb
|
73
|
+
- app/controllers/decidim/verifications/postal_letter/admin/postages_controller.rb
|
74
|
+
- app/controllers/decidim/verifications/postal_letter/authorizations_controller.rb
|
75
|
+
- app/forms/decidim/verifications/id_documents/information_form.rb
|
76
|
+
- app/forms/decidim/verifications/id_documents/information_rejection_form.rb
|
77
|
+
- app/forms/decidim/verifications/id_documents/upload_form.rb
|
78
|
+
- app/forms/decidim/verifications/postal_letter/address_form.rb
|
79
|
+
- app/forms/decidim/verifications/postal_letter/confirmation_form.rb
|
80
|
+
- app/forms/decidim/verifications/postal_letter/postage_form.rb
|
81
|
+
- app/presenters/decidim/verifications/id_documents/authorization_presenter.rb
|
82
|
+
- app/presenters/decidim/verifications/postal_letter/authorization_presenter.rb
|
83
|
+
- app/queries/decidim/verifications/authorizations.rb
|
84
|
+
- app/services/decidim/authorization_handler.rb
|
85
|
+
- app/services/decidim/dummy_authorization_handler.rb
|
86
|
+
- app/uploaders/decidim/verifications/attachment_uploader.rb
|
87
|
+
- app/views/decidim/verifications/authorizations/first_login.html.erb
|
88
|
+
- app/views/decidim/verifications/authorizations/index.html.erb
|
89
|
+
- app/views/decidim/verifications/authorizations/new.html.erb
|
90
|
+
- app/views/decidim/verifications/id_documents/admin/confirmations/new.html.erb
|
91
|
+
- app/views/decidim/verifications/id_documents/admin/pending_authorizations/index.html.erb
|
92
|
+
- app/views/decidim/verifications/id_documents/authorizations/edit.html.erb
|
93
|
+
- app/views/decidim/verifications/id_documents/authorizations/new.html.erb
|
94
|
+
- app/views/decidim/verifications/postal_letter/admin/pending_authorizations/index.html.erb
|
95
|
+
- app/views/decidim/verifications/postal_letter/authorizations/edit.html.erb
|
96
|
+
- app/views/decidim/verifications/postal_letter/authorizations/new.html.erb
|
97
|
+
- config/locales/ca.yml
|
98
|
+
- config/locales/en.yml
|
99
|
+
- config/locales/es.yml
|
100
|
+
- config/locales/eu.yml
|
101
|
+
- config/locales/fi.yml
|
102
|
+
- config/locales/fr.yml
|
103
|
+
- config/locales/it.yml
|
104
|
+
- config/locales/nl.yml
|
105
|
+
- config/locales/pl.yml
|
106
|
+
- config/locales/pt.yml
|
107
|
+
- config/locales/ru.yml
|
108
|
+
- config/locales/uk.yml
|
109
|
+
- db/migrate/20171030133426_move_authorizations_to_new_api.rb
|
110
|
+
- lib/decidim/verifications.rb
|
111
|
+
- lib/decidim/verifications/adapter.rb
|
112
|
+
- lib/decidim/verifications/dummy.rb
|
113
|
+
- lib/decidim/verifications/engine.rb
|
114
|
+
- lib/decidim/verifications/id_documents.rb
|
115
|
+
- lib/decidim/verifications/id_documents/admin.rb
|
116
|
+
- lib/decidim/verifications/id_documents/admin_engine.rb
|
117
|
+
- lib/decidim/verifications/id_documents/engine.rb
|
118
|
+
- lib/decidim/verifications/id_documents/workflow.rb
|
119
|
+
- lib/decidim/verifications/postal_letter.rb
|
120
|
+
- lib/decidim/verifications/postal_letter/admin.rb
|
121
|
+
- lib/decidim/verifications/postal_letter/admin_engine.rb
|
122
|
+
- lib/decidim/verifications/postal_letter/engine.rb
|
123
|
+
- lib/decidim/verifications/postal_letter/workflow.rb
|
124
|
+
- lib/decidim/verifications/registry.rb
|
125
|
+
- lib/decidim/verifications/version.rb
|
126
|
+
- lib/decidim/verifications/workflow_manifest.rb
|
127
|
+
- lib/decidim/verifications/workflows.rb
|
128
|
+
homepage: https://github.com/decidim/decidim
|
129
|
+
licenses:
|
130
|
+
- AGPL-3.0
|
131
|
+
metadata: {}
|
132
|
+
post_install_message:
|
133
|
+
rdoc_options: []
|
134
|
+
require_paths:
|
135
|
+
- lib
|
136
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
137
|
+
requirements:
|
138
|
+
- - ">="
|
139
|
+
- !ruby/object:Gem::Version
|
140
|
+
version: '0'
|
141
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - ">="
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '0'
|
146
|
+
requirements: []
|
147
|
+
rubyforge_project:
|
148
|
+
rubygems_version: 2.6.13
|
149
|
+
signing_key:
|
150
|
+
specification_version: 4
|
151
|
+
summary: Verifications plugin for decidim
|
152
|
+
test_files: []
|