decidim-direct_verifications 0.20 → 0.21

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f9f466181031acf9fe03bd55ef1f1ae1e407707acc0b22a639576523eebe90ae
4
- data.tar.gz: 3071bc96c9e22c9ca06ce14f3ce81b1280a54dcb3a4478abb0ef02531c2f6c23
3
+ metadata.gz: cbf6bc3adf56db3268520dc976ecf5e24791667d27d41e43f43be7a1de122b15
4
+ data.tar.gz: 63bc2221b993503c21037f62195021967eed48f3d0d35ce1f25ceb2bd27e899a
5
5
  SHA512:
6
- metadata.gz: 490468f076bdc3f270d8f853f0c809bc6aac17f989d4984538550107e963fab25b52ae5bb30ed76856747e67740976dc3a027d49b0f916a339565b409f606751
7
- data.tar.gz: 8e9b5c8d40c075d34e41f3711d9c5740e0ecc62bd916ec6d3a4b9afa80855d1ca1c260a13eda183feca9aefa2066b5682ba9e0a80c300a36844cab79b53896d0
6
+ metadata.gz: c90a4d69fd3640640efb62102de8a218ba2f57e01725bb89f81a6c7adc384c0e937ded80f8049b2448cc2b60eedfa37c71f24bdf74288c9d4efe63c69a5dccb1
7
+ data.tar.gz: fee38887199f7a345e64a62f7389262785435d6686aef02ee39a75359314dbc9b9d43465689d122c3b539811c2fde2abce0917e08584a73be4077e33c6cdfd22
data/README.md CHANGED
@@ -2,8 +2,7 @@
2
2
 
3
3
  ![[CI] Test](https://github.com/Platoniq/decidim-verifications-direct_verifications/workflows/%5BCI%5D%20Test/badge.svg)
4
4
  [![Maintainability](https://api.codeclimate.com/v1/badges/2195deb4de6c6354a6bc/maintainability)](https://codeclimate.com/github/Platoniq/decidim-verifications-direct_verifications/maintainability)
5
- [![Test Coverage](https://api.codeclimate.com/v1/badges/2195deb4de6c6354a6bc/test_coverage)](https://codeclimate.com/github/Platoniq/decidim-verifications-direct_verifications/test_coverage)
6
-
5
+ [![codecov](https://codecov.io/gh/Platoniq/decidim-verifications-direct_verifications/branch/master/graph/badge.svg?token=FR1zkV71S2)](https://codecov.io/gh/Platoniq/decidim-verifications-direct_verifications)
7
6
 
8
7
  A [Decidim](https://github.com/decidim/decidim) that provides a verification method called `Direct verification`. Works only on the admin side, final users do not intervene in the verification process.
9
8
 
@@ -6,57 +6,75 @@ module Decidim
6
6
  module Admin
7
7
  class DirectVerificationsController < Decidim::Admin::ApplicationController
8
8
  include NeedsPermission
9
+ helper_method :workflows, :current_authorization_handler
9
10
 
10
11
  layout "decidim/admin/users"
11
12
 
12
13
  def index
13
14
  enforce_permission_to :index, :authorization
14
- @authorization_handler = :direct_verifications
15
- @workflows = workflows
16
15
  end
17
16
 
18
17
  def create
19
18
  enforce_permission_to :create, :authorization
20
19
 
21
- @userlist = params[:userlist]
22
- @workflows = workflows
23
- processor = UserProcessor.new(current_organization, current_user)
24
- processor.emails = extract_emails_to_hash @userlist
25
- processor.authorization_handler = authorization_handler(params[:authorization_handler])
26
- stats = UserStats.new(current_organization)
27
- stats.authorization_handler = processor.authorization_handler
28
- if params[:register]
29
- processor.register_users
30
- flash[:warning] = t(".registered", count: processor.emails.count,
31
- registered: processor.processed[:registered].count,
32
- errors: processor.errors[:registered].count)
33
- end
34
- if params[:authorize] == "in"
35
- processor.authorize_users
36
- flash[:notice] = t(".authorized", handler: t("#{processor.authorization_handler}.name", scope: "decidim.authorization_handlers"),
37
- count: processor.emails.count,
38
- authorized: processor.processed[:authorized].count,
39
- errors: processor.errors[:authorized].count)
40
- elsif params[:authorize] == "out"
41
- processor.revoke_users
42
- flash[:notice] = t(".revoked", handler: t("#{processor.authorization_handler}.name", scope: "decidim.authorization_handlers"),
43
- count: processor.emails.count,
44
- revoked: processor.processed[:revoked].count,
45
- errors: processor.errors[:revoked].count)
46
- else
47
- stats.emails = processor.emails.keys
48
- flash[:info] = t(".info", handler: t("#{processor.authorization_handler}.name", scope: "decidim.authorization_handlers"),
49
- count: processor.emails.count,
50
- authorized: stats.authorized,
51
- unconfirmed: stats.unconfirmed,
52
- registered: stats.registered)
53
- render(action: :index) && return
54
- end
20
+ @userslist = params[:userlist]
21
+ @processor = UserProcessor.new(current_organization, current_user)
22
+ @processor.emails = extract_emails_to_hash @userslist
23
+ @processor.authorization_handler = current_authorization_handler
24
+ @stats = UserStats.new(current_organization)
25
+ @stats.authorization_handler = @processor.authorization_handler
26
+ register_users
27
+ authorize_users
28
+ revoke_users
29
+
30
+ render(action: :index) && return if show_users_info
31
+
55
32
  redirect_to direct_verifications_path
56
33
  end
57
34
 
58
35
  private
59
36
 
37
+ def register_users
38
+ return unless params[:register]
39
+
40
+ @processor.register_users
41
+ flash[:warning] = t(".registered", count: @processor.emails.count,
42
+ registered: @processor.processed[:registered].count,
43
+ errors: @processor.errors[:registered].count)
44
+ end
45
+
46
+ def authorize_users
47
+ return unless params[:authorize] == "in"
48
+
49
+ @processor.authorize_users
50
+ flash[:notice] = t(".authorized", handler: t("#{@processor.authorization_handler}.name", scope: "decidim.authorization_handlers"),
51
+ count: @processor.emails.count,
52
+ authorized: @processor.processed[:authorized].count,
53
+ errors: @processor.errors[:authorized].count)
54
+ end
55
+
56
+ def revoke_users
57
+ return unless params[:authorize] == "out"
58
+
59
+ @processor.revoke_users
60
+ flash[:notice] = t(".revoked", handler: t("#{@processor.authorization_handler}.name", scope: "decidim.authorization_handlers"),
61
+ count: @processor.emails.count,
62
+ revoked: @processor.processed[:revoked].count,
63
+ errors: @processor.errors[:revoked].count)
64
+ end
65
+
66
+ def show_users_info
67
+ return if params[:authorize]
68
+
69
+ @stats.emails = @processor.emails.keys
70
+ flash.now[:info] = t(".info", handler: t("#{@processor.authorization_handler}.name", scope: "decidim.authorization_handlers"),
71
+ count: @processor.emails.count,
72
+ authorized: @stats.authorized,
73
+ unconfirmed: @stats.unconfirmed,
74
+ registered: @stats.registered)
75
+ true
76
+ end
77
+
60
78
  def extract_emails_to_hash(txt)
61
79
  reg = /([A-Z0-9+._-]+@[A-Z0-9._-]+\.[A-Z0-9_-]+)\b/i
62
80
  emails = {}
@@ -73,6 +91,10 @@ module Decidim
73
91
  @authorization_handler = authorization_handler.presence || :direct_verifications
74
92
  end
75
93
 
94
+ def current_authorization_handler
95
+ authorization_handler(params[:authorization_handler])
96
+ end
97
+
76
98
  def configured_workflows
77
99
  return Decidim::DirectVerifications.config.manage_workflows if Decidim::DirectVerifications.config
78
100
 
@@ -1,40 +1,40 @@
1
1
  <div class="card">
2
2
  <div class="card-divider">
3
3
  <h2 class="card-title">
4
- <%= t('admin.index.title', scope: 'decidim.direct_verifications.verification') %>
5
- <%= link_to t("admin.index.stats", scope: 'decidim.direct_verifications.verification'), stats_path, class: "button tiny button--title" %>
4
+ <%= t("admin.index.title", scope: "decidim.direct_verifications.verification") %>
5
+ <%= link_to t("admin.index.stats", scope: "decidim.direct_verifications.verification"), stats_path, class: "button tiny button--title" %>
6
6
  </h2>
7
7
  </div>
8
8
  <div class="card-section">
9
- <p><%= t('decidim.direct_verifications.verification.admin.new.info') %></p>
10
- <%= form_tag direct_verifications_path, multipart: true, class: 'form' do %>
11
- <%= label_tag :userlist, t('admin.new.textarea', scope: 'decidim.direct_verifications.verification') %>
12
- <%= text_area_tag :userlist, @userlist, rows: 10 %>
9
+ <p><%= t("decidim.direct_verifications.verification.admin.new.info") %></p>
10
+ <%= form_tag direct_verifications_path, multipart: true, class: "form" do %>
11
+ <%= label_tag :userlist, t("admin.new.textarea", scope: "decidim.direct_verifications.verification") %>
12
+ <%= text_area_tag :userlist, @userslist, rows: 10 %>
13
13
  <label>
14
14
  <%= check_box_tag :register %>
15
- <%= t('admin.new.register', scope: 'decidim.direct_verifications.verification') %>
15
+ <%= t("admin.new.register", scope: "decidim.direct_verifications.verification") %>
16
16
  <div data-alert class="callout alert hide">
17
- <%= t('admin.direct_verifications.gdpr_disclaimer', scope: 'decidim.direct_verifications.verification') %>
17
+ <%= t("admin.direct_verifications.gdpr_disclaimer", scope: "decidim.direct_verifications.verification") %>
18
18
  </div>
19
19
  </label>
20
20
  <label>
21
- <%= radio_button_tag :authorize, 'in' %>
22
- <%= t('admin.new.authorize', scope: 'decidim.direct_verifications.verification') %>
21
+ <%= radio_button_tag :authorize, "in" %>
22
+ <%= t("admin.new.authorize", scope: "decidim.direct_verifications.verification") %>
23
23
  </label>
24
24
  <label>
25
- <%= radio_button_tag :authorize, 'out' %>
26
- <%= t('admin.new.revoke', scope: 'decidim.direct_verifications.verification') %>
25
+ <%= radio_button_tag :authorize, "out" %>
26
+ <%= t("admin.new.revoke", scope: "decidim.direct_verifications.verification") %>
27
27
  </label>
28
28
  <label>
29
- <%= radio_button_tag :authorize, 'check', true %>
30
- <%= t('admin.new.check', scope: 'decidim.direct_verifications.verification') %>
29
+ <%= radio_button_tag :authorize, "check", true %>
30
+ <%= t("admin.new.check", scope: "decidim.direct_verifications.verification") %>
31
31
  </label>
32
32
 
33
- <%= label_tag :authorization_handler, t('admin.new.authorization_handler', scope: 'decidim.direct_verifications.verification') %>
33
+ <%= label_tag :authorization_handler, t("admin.new.authorization_handler", scope: "decidim.direct_verifications.verification") %>
34
34
 
35
- <%= select_tag :authorization_handler, options_for_select(@workflows, @authorization_handler) %>
35
+ <%= select_tag :authorization_handler, options_for_select(workflows, current_authorization_handler) %>
36
36
 
37
- <%= submit_tag t('admin.new.submit', scope: 'decidim.direct_verifications.verification'), class: 'button' %>
37
+ <%= submit_tag t("admin.new.submit", scope: "decidim.direct_verifications.verification"), class: "button" %>
38
38
 
39
39
  <% end %>
40
40
 
@@ -1,15 +1,15 @@
1
1
  <div class="card">
2
2
  <div class="card-divider">
3
3
  <h2 class="card-title">
4
- <%= t('admin.index.stats', scope: 'decidim.direct_verifications.verification') %>
5
- <%= link_to t("admin.index.title", scope: 'decidim.direct_verifications.verification'), direct_verifications_path, class: "button tiny button--title" %>
4
+ <%= t("admin.index.stats", scope: "decidim.direct_verifications.verification") %>
5
+ <%= link_to t("admin.index.title", scope: "decidim.direct_verifications.verification"), direct_verifications_path, class: "button tiny button--title" %>
6
6
  </h2>
7
7
  </div>
8
8
  <div class="card-section">
9
9
  <table class="table-list">
10
10
  <thead>
11
11
  <tr>
12
- <th><%= t("admin.new.authorization_handler", scope: 'decidim.direct_verifications.verification') %></th>
12
+ <th><%= t("admin.new.authorization_handler", scope: "decidim.direct_verifications.verification") %></th>
13
13
  <th><%= t(".registered") %></th>
14
14
  <th><%= t(".authorized") %></th>
15
15
  <th><%= t(".unconfirmed") %></th>
@@ -4,52 +4,60 @@ shared_examples_for "checking users" do |params|
4
4
  context "when check without mails" do
5
5
  it "renders the index with info message" do
6
6
  params[:userlist] = ""
7
- post :create, params: params
8
- expect(flash[:info]).not_to be_empty
9
- expect(flash[:info]).to include("0 users detected")
10
- expect(subject).to render_template("decidim/direct_verifications/verification/admin/direct_verifications/index")
7
+ perform_enqueued_jobs do
8
+ post :create, params: params
9
+ expect(flash[:info]).not_to be_empty
10
+ expect(flash[:info]).to include("0 users detected")
11
+ expect(subject).to render_template("decidim/direct_verifications/verification/admin/direct_verifications/index")
12
+ end
11
13
  end
12
14
  end
13
15
 
14
16
  context "when check with mails" do
15
17
  it "renders the index with info message" do
16
18
  params[:userlist] = "mail@example.com"
17
- post :create, params: params
18
- expect(flash[:info]).not_to be_empty
19
- expect(flash[:info]).to include("1 users detected")
20
- expect(subject).to render_template("decidim/direct_verifications/verification/admin/direct_verifications/index")
19
+ perform_enqueued_jobs do
20
+ post :create, params: params
21
+ expect(flash[:info]).not_to be_empty
22
+ expect(flash[:info]).to include("1 users detected")
23
+ expect(subject).to render_template("decidim/direct_verifications/verification/admin/direct_verifications/index")
24
+ end
21
25
  end
22
26
  end
23
27
  end
24
28
 
25
29
  shared_examples_for "registering users" do |params|
26
- context "when send valid emails" do
30
+ context "when there are valid emails" do
27
31
  it "creates warning message" do
28
- post :create, params: params
29
- expect(flash[:warning]).not_to be_empty
30
- expect(flash[:warning]).to include("1 detected")
31
- expect(flash[:warning]).to include("0 errors")
32
- expect(flash[:warning]).to include("1 users")
33
- expect(flash[:warning]).to include("registered")
32
+ perform_enqueued_jobs do
33
+ post :create, params: params
34
+ expect(flash[:warning]).not_to be_empty
35
+ expect(flash[:warning]).to include("1 detected")
36
+ expect(flash[:warning]).to include("0 errors")
37
+ expect(flash[:warning]).to include("1 users")
38
+ expect(flash[:warning]).to include("registered")
39
+ end
34
40
  end
35
41
  end
36
42
  end
37
43
 
38
44
  shared_examples_for "authorizing users" do |params|
39
- context "when send valid emails" do
45
+ context "when there are valid emails" do
40
46
  it "creates notice message" do
41
- post :create, params: params
42
- expect(flash[:notice]).not_to be_empty
43
- expect(flash[:notice]).to include("1 detected")
44
- expect(flash[:notice]).to include("0 errors")
45
- expect(flash[:notice]).to include("1 users")
46
- expect(flash[:notice]).to include("verified")
47
+ perform_enqueued_jobs do
48
+ post :create, params: params
49
+ expect(flash[:notice]).not_to be_empty
50
+ expect(flash[:notice]).to include("1 detected")
51
+ expect(flash[:notice]).to include("0 errors")
52
+ expect(flash[:notice]).to include("1 users")
53
+ expect(flash[:notice]).to include("verified")
54
+ end
47
55
  end
48
56
  end
49
57
  end
50
58
 
51
59
  shared_examples_for "revoking users" do |params|
52
- context "when send valid emails" do
60
+ context "when there are valid emails" do
53
61
  it "creates notice message" do
54
62
  create(
55
63
  :authorization,
@@ -57,12 +65,14 @@ shared_examples_for "revoking users" do |params|
57
65
  name: verification_type,
58
66
  user: authorized_user
59
67
  )
60
- post :create, params: params
61
- expect(flash[:notice]).not_to be_empty
62
- expect(flash[:notice]).to include("1 detected")
63
- expect(flash[:notice]).to include("0 errors")
64
- expect(flash[:notice]).to include("1 users")
65
- expect(flash[:notice]).to include("revoked")
68
+ perform_enqueued_jobs do
69
+ post :create, params: params
70
+ expect(flash[:notice]).not_to be_empty
71
+ expect(flash[:notice]).to include("1 detected")
72
+ expect(flash[:notice]).to include("0 errors")
73
+ expect(flash[:notice]).to include("1 users")
74
+ expect(flash[:notice]).to include("revoked")
75
+ end
66
76
  end
67
77
  end
68
78
  end
@@ -3,8 +3,8 @@
3
3
  module Decidim
4
4
  # This holds the decidim-direct_verifications version.
5
5
  module DirectVerifications
6
- VERSION = "0.20"
7
- DECIDIM_VERSION = "0.20.0"
8
- MIN_DECIDIM_VERSION = ">= 0.17.0"
6
+ VERSION = "0.21"
7
+ DECIDIM_VERSION = "0.21"
8
+ MIN_DECIDIM_VERSION = "~> 0.21.0"
9
9
  end
10
10
  end
metadata CHANGED
@@ -1,43 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: decidim-direct_verifications
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.20'
4
+ version: '0.21'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ivan Vergés
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-04-30 00:00:00.000000000 Z
11
+ date: 2020-11-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: decidim-admin
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.17.0
19
+ version: 0.21.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 0.17.0
26
+ version: 0.21.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: decidim-core
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 0.17.0
33
+ version: 0.21.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ">="
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 0.17.0
40
+ version: 0.21.0
41
41
  description: Provides a verification method that also registers users directly in
42
42
  the platform. Can be used to mass verificate user with other verification handlers
43
43
  email: