decidim-direct_verifications 0.22.1 → 1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (44) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +32 -3
  3. data/app/assets/config/direct_verifications_admin_manifest.css +3 -0
  4. data/app/assets/stylesheets/decidim/direct_verifications/authorizations.scss +17 -0
  5. data/app/commands/decidim/direct_verifications/verification/create_import.rb +50 -0
  6. data/app/controllers/decidim/direct_verifications/verification/admin/authorizations_controller.rb +40 -0
  7. data/app/controllers/decidim/direct_verifications/verification/admin/direct_verifications_controller.rb +20 -18
  8. data/app/controllers/decidim/direct_verifications/verification/admin/imports_controller.rb +55 -0
  9. data/app/forms/decidim/direct_verifications/registration_form.rb +8 -0
  10. data/app/forms/decidim/direct_verifications/verification/create_import_form.rb +43 -0
  11. data/app/jobs/decidim/direct_verifications/authorize_users_job.rb +34 -0
  12. data/app/jobs/decidim/direct_verifications/base_import_job.rb +38 -0
  13. data/app/jobs/decidim/direct_verifications/register_users_job.rb +19 -0
  14. data/app/jobs/decidim/direct_verifications/revoke_users_job.rb +17 -0
  15. data/app/mailers/decidim/direct_verifications/import_mailer.rb +27 -0
  16. data/app/mailers/decidim/direct_verifications/stats.rb +23 -0
  17. data/app/views/decidim/direct_verifications/import_mailer/finished_processing.html.erb +7 -0
  18. data/app/views/decidim/direct_verifications/import_mailer/finished_processing.text.erb +7 -0
  19. data/app/views/decidim/direct_verifications/verification/admin/authorizations/index.html.erb +42 -0
  20. data/app/views/decidim/direct_verifications/verification/admin/direct_verifications/index.html.erb +2 -1
  21. data/app/views/decidim/direct_verifications/verification/admin/imports/new.html.erb +50 -0
  22. data/config/initializers/mail_previews.rb +5 -0
  23. data/config/locales/ca.yml +20 -20
  24. data/config/locales/cs.yml +69 -0
  25. data/config/locales/en.yml +29 -2
  26. data/config/locales/es.yml +20 -20
  27. data/config/locales/fr.yml +69 -0
  28. data/lib/decidim/direct_verifications.rb +24 -1
  29. data/lib/decidim/direct_verifications/authorize_user.rb +64 -0
  30. data/lib/decidim/direct_verifications/instrumenter.rb +58 -0
  31. data/lib/decidim/direct_verifications/parsers.rb +11 -0
  32. data/lib/decidim/direct_verifications/parsers/base_parser.rb +37 -0
  33. data/lib/decidim/direct_verifications/parsers/metadata_parser.rb +54 -0
  34. data/lib/decidim/direct_verifications/parsers/name_parser.rb +40 -0
  35. data/lib/decidim/direct_verifications/register_user.rb +54 -0
  36. data/lib/decidim/direct_verifications/revoke_user.rb +45 -0
  37. data/lib/decidim/direct_verifications/tests/factories.rb +11 -0
  38. data/lib/decidim/direct_verifications/tests/verification_controller_examples.rb +8 -3
  39. data/lib/decidim/direct_verifications/user_processor.rb +17 -101
  40. data/lib/decidim/direct_verifications/user_stats.rb +5 -5
  41. data/lib/decidim/direct_verifications/verification/admin_engine.rb +6 -1
  42. data/lib/decidim/direct_verifications/version.rb +3 -3
  43. metadata +37 -9
  44. data/lib/decidim/direct_verifications/config.rb +0 -23
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "decidim/direct_verifications/instrumenter"
4
+
5
+ module Decidim
6
+ module DirectVerifications
7
+ class RegisterUsersJob < BaseImportJob
8
+ def process_users
9
+ emails.each do |email, data|
10
+ RegisterUser.new(email, data, organization, current_user, instrumenter).call
11
+ end
12
+ end
13
+
14
+ def type
15
+ :registered
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module DirectVerifications
5
+ class RevokeUsersJob < BaseImportJob
6
+ def process_users
7
+ emails.each do |email, _name|
8
+ RevokeUser.new(email, organization, instrumenter, authorization_handler).call
9
+ end
10
+ end
11
+
12
+ def type
13
+ :revoked
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module DirectVerifications
5
+ class ImportMailer < Decidim::Admin::ApplicationMailer
6
+ include LocalisedMailer
7
+
8
+ layout "decidim/mailer"
9
+
10
+ I18N_SCOPE = "decidim.direct_verifications.verification.admin.imports.mailer"
11
+
12
+ def finished_processing(user, instrumenter, type, handler)
13
+ @stats = Stats.from(instrumenter, type)
14
+ @organization = user.organization
15
+ @i18n_key = "#{I18N_SCOPE}.#{type}"
16
+ @handler = handler
17
+
18
+ with_user(user) do
19
+ mail(
20
+ to: user.email,
21
+ subject: I18n.t("#{I18N_SCOPE}.subject")
22
+ )
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module DirectVerifications
5
+ class Stats
6
+ attr_reader :count, :successful, :errors
7
+
8
+ def self.from(instrumenter, type)
9
+ new(
10
+ count: instrumenter.emails_count(type),
11
+ successful: instrumenter.processed_count(type),
12
+ errors: instrumenter.errors_count(type)
13
+ )
14
+ end
15
+
16
+ def initialize(count:, successful:, errors:)
17
+ @count = count
18
+ @successful = successful
19
+ @errors = errors
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,7 @@
1
+ <p><%= t(
2
+ @i18n_key,
3
+ count: @stats.count,
4
+ successful: @stats.successful,
5
+ errors: @stats.errors,
6
+ handler: @handler
7
+ ) %></p>
@@ -0,0 +1,7 @@
1
+ <%= t(
2
+ @i18n_key,
3
+ count: @stats.count,
4
+ successful: @stats.successful,
5
+ errors: @stats.errors,
6
+ handler: @handler
7
+ ) %>
@@ -0,0 +1,42 @@
1
+ <%= stylesheet_link_tag "decidim/direct_verifications/authorizations" %>
2
+
3
+ <div class="card">
4
+ <div class="card-divider">
5
+ <h2 class="card-title">
6
+ <%= t(".title") %>
7
+ <%= link_to t("admin.index.stats", scope: "decidim.direct_verifications.verification"), stats_path, class: "button tiny button--title" %>
8
+ <%= link_to t(".new_import"), direct_verifications_path, class: "button tiny button--title" %>
9
+ </h2>
10
+ </div>
11
+ <div class="card-section">
12
+ <div class="table-scroll">
13
+ <table class="table-list">
14
+ <thead>
15
+ <tr>
16
+ <th><%= t(".name") %></th>
17
+ <th><%= t(".metadata") %></th>
18
+ <th><%= t(".user_name") %></th>
19
+ <th><%= t(".created_at") %></th>
20
+ <th>&nbsp;</th>
21
+ </tr>
22
+ </thead>
23
+ <tbody>
24
+ <% @authorizations.each do |authorization| %>
25
+ <tr data-authorization-id="<%= authorization.id %>">
26
+ <td><%= authorization.name %></td>
27
+ <td class="metadata">
28
+ <span class="code"><%= authorization.metadata %></span>
29
+ </td>
30
+ <td><%= authorization.user.name %></td>
31
+ <td><%= authorization.created_at %></td>
32
+
33
+ <td class="table-list__actions">
34
+ <%= icon_link_to "circle-x", authorization_path(authorization), t("actions.destroy", scope: "decidim.admin"), class: "action-icon--remove", method: :delete, data: { confirm: t("actions.confirm_destroy", scope: "decidim.admin") } %>
35
+ </td>
36
+ </tr>
37
+ <% end %>
38
+ </tbody>
39
+ </table>
40
+ </div>
41
+ </div>
42
+ </div>
@@ -3,10 +3,11 @@
3
3
  <h2 class="card-title">
4
4
  <%= t("admin.index.title", scope: "decidim.direct_verifications.verification") %>
5
5
  <%= link_to t("admin.index.stats", scope: "decidim.direct_verifications.verification"), stats_path, class: "button tiny button--title" %>
6
+ <%= link_to t("admin.index.authorizations", scope: "decidim.direct_verifications.verification"), authorizations_path, class: "button tiny button--title" %>
6
7
  </h2>
7
8
  </div>
8
9
  <div class="card-section">
9
- <p><%= t("decidim.direct_verifications.verification.admin.new.info") %></p>
10
+ <p><%= t("decidim.direct_verifications.verification.admin.new.info_html", link: new_import_path) %></p>
10
11
  <%= form_tag direct_verifications_path, multipart: true, class: "form" do %>
11
12
  <%= label_tag :userslist, t("admin.new.textarea", scope: "decidim.direct_verifications.verification") %>
12
13
  <%= text_area_tag :userslist, @userslist, rows: 10 %>
@@ -0,0 +1,50 @@
1
+ <div class="card">
2
+ <div class="card-divider">
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" %>
6
+ <%= link_to t("admin.index.authorizations", scope: "decidim.direct_verifications.verification"), authorizations_path, class: "button tiny button--title" %>
7
+ </h2>
8
+ </div>
9
+ <div class="card-section">
10
+ <p><%= t("decidim.direct_verifications.verification.admin.imports.new.info") %></p>
11
+ <pre class="code-block">
12
+ <strong>email, name, membership_phone, membership_type, membership_weight</strong>
13
+ ava@example.com, Ava Hawkins, +3476318371, consumer, 1
14
+ ewan@example.com, Ewan Cooper, +34653565765, worker, 1
15
+ tilly@example.com, Tilly Jones, +34653565761, collaborator, 0.67
16
+ ...
17
+ </pre>
18
+
19
+ <%= decidim_form_for(@form, url: imports_path, html: { class: "form" }) do |form| %>
20
+ <label>
21
+ <%= check_box_tag :register %>
22
+ <%= t("admin.new.register", scope: "decidim.direct_verifications.verification") %>
23
+ <div data-alert class="callout alert hide">
24
+ <%= t("admin.direct_verifications.gdpr_disclaimer", scope: "decidim.direct_verifications.verification") %>
25
+ </div>
26
+ </label>
27
+ <label>
28
+ <%= radio_button_tag :authorize, "in" %>
29
+ <%= t("admin.new.authorize", scope: "decidim.direct_verifications.verification") %>
30
+ </label>
31
+ <label>
32
+ <%= radio_button_tag :authorize, "out" %>
33
+ <%= t("admin.new.revoke", scope: "decidim.direct_verifications.verification") %>
34
+ </label>
35
+ <label>
36
+ <%= radio_button_tag :authorize, "check", true %>
37
+ <%= t("admin.new.check", scope: "decidim.direct_verifications.verification") %>
38
+ </label>
39
+
40
+ <%= label_tag :authorization_handler, t("admin.new.authorization_handler", scope: "decidim.direct_verifications.verification") %>
41
+ <%= select_tag :authorization_handler, options_for_select(workflows, current_authorization_handler) %>
42
+
43
+ <%= form.file_field :file, label: t(".file") %>
44
+ <%= form.submit t(".submit"), class: "button" %>
45
+ <% end %>
46
+
47
+ </div>
48
+ </div>
49
+
50
+ <%= javascript_include_tag "decidim/direct_verifications/verification/admin/direct_verifications_admin" %>
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ Rails.application.configure do
4
+ config.action_mailer.preview_path = Decidim::DirectVerifications::Verification::Engine.root.join("spec/mailers")
5
+ end
@@ -1,4 +1,3 @@
1
- ---
2
1
  ca:
3
2
  decidim:
4
3
  admin:
@@ -11,40 +10,41 @@ ca:
11
10
  admin:
12
11
  direct_verifications:
13
12
  help:
14
- - 'Permet la introducció massiva d''usuaris per tal de:'
15
- - Registrar-los directament a la organització amb l'enviament d'invitacions
16
- - Verificar-los en qualsevol mètode de verificació actiu
17
- - Revocar la verificació en qualsevol mètode de verificació actiu
13
+ - 'Permet la introducció massiva d''usuaris per tal de:'
14
+ - Registrar-los directament a la organització amb l'enviament d'invitacions
15
+ - Verificar-los en qualsevol mètode de verificació actiu
16
+ - Revocar la verificació en qualsevol mètode de verificació actiu
18
17
  direct_verifications:
19
18
  explanation: Verificació manual per par dels administradors de l'organització
20
19
  name: Verificació directa
21
20
  direct_verifications:
22
21
  verification:
23
22
  admin:
23
+ authorizations:
24
+ index:
25
+ created_at: Data de creació
26
+ metadata: Metadades
27
+ name: Nom
28
+ title: Autoritzacions
29
+ user_name: Nom d'usuari
30
+ new_import: Nova importació
24
31
  direct_verifications:
25
32
  create:
26
- authorized: S'han verificat correctament %{authorized} usuaris utilitzant
27
- [%{handler}] (%{count} detectats, %{errors} errors)
28
- info: S'han detectat %{count} usuaris, dels quals %{registered} estan
29
- registrats, %{authorized} autoritzats utilitzant [%{handler}] (%{unconfirmed}
30
- sense confirmar)
31
- registered: S'han registrat correctament %{registered} usuaris (%{count}
32
- detectats, %{errors} errors)
33
- revoked: S'ha revocat correctament la verificació de %{revoked} usuaris
34
- utilitzant [%{handler}] (%{count} detectats, %{errors} errors)
35
- gdpr_disclaimer: Feu-ho sota la vostra responsabilitat. Recordeu que heu
36
- de tenir el consentiment explícit dels vostres usuaris per registrar-los.
37
- En cas contrari, estareu infringint la regulació GDPR als països de
38
- la UE.
33
+ authorized: "S'han verificat correctament %{authorized} usuaris utilitzant [%{handler}] (%{count} detectats, %{errors} errors)"
34
+ info: "S'han detectat %{count} usuaris, dels quals %{registered} estan registrats, %{authorized} autoritzats utilitzant [%{handler}] (%{unconfirmed} sense confirmar)"
35
+ missing_header: Si us plau, proporcioneu una fila d'encapçalament
36
+ registered: "S'han registrat correctament %{registered} usuaris (%{count} detectats, %{errors} errors)"
37
+ revoked: S'ha revocat correctament la verificació de %{revoked} usuaris utilitzant [%{handler}] (%{count} detectats, %{errors} errors)
38
+ gdpr_disclaimer: Feu-ho sota la vostra responsabilitat. Recordeu que heu de tenir el consentiment explícit dels vostres usuaris per registrar-los. En cas contrari, estareu infringint la regulació GDPR als països de la UE.
39
39
  index:
40
+ authorizations: Usuaris autoritzats
40
41
  stats: Estadístiques d'usuaris
41
42
  title: Inscriu i autoritza usuaris
42
43
  new:
43
44
  authorization_handler: Mètode de verificació
44
45
  authorize: Autoritza els usuaris
45
46
  check: Comprova l'estat dels usuaris
46
- info: Introdueix aquí els emails, un per línia. Si els emails estan precedits
47
- per un text, s'interpretarà com el nom de l'usuari
47
+ info: Introdueix aquí els emails, un per línia. Si els emails estan precedits per un text, s'interpretarà com el nom de l'usuari
48
48
  register: Registra els usuaris a la plataforma (si existeixen s'ignoraran)
49
49
  revoke: Revoca l'autorització dels usuaris
50
50
  submit: Envia i processa el llistat
@@ -0,0 +1,69 @@
1
+ cs:
2
+ decidim:
3
+ admin:
4
+ models:
5
+ user:
6
+ fields:
7
+ roles:
8
+ participant: Účastník
9
+ authorization_handlers:
10
+ admin:
11
+ direct_verifications:
12
+ help:
13
+ - 'Umožňuje masivní zavedení uživatelů:'
14
+ - Přímá registrace v organizaci a odeslání pozvánek
15
+ - Ověřit je pomocí jakékoliv metody aktivního ověření
16
+ - Zrušit jejich ověření pomocí jakékoli metody aktivního ověření
17
+ direct_verifications:
18
+ explanation: Ruční ověření správcem organizace
19
+ name: Přímé ověření
20
+ direct_verifications:
21
+ verification:
22
+ admin:
23
+ authorizations:
24
+ index:
25
+ created_at: Vytvořeno v
26
+ metadata: Metadata
27
+ name: Název
28
+ title: Autorizace
29
+ user_name: Uživatelské jméno
30
+ new_import: Nový import
31
+ direct_verifications:
32
+ create:
33
+ authorized: "%{authorized} uživatelů bylo úspěšně ověřeno pomocí [%{handler}] (%{count} detekováno, %{errors} chyb)"
34
+ info: "Zjištěno %{count} uživatelů, z nichž %{registered} jsou registrováni, %{authorized} autorizováni pomocí [%{handler}] (%{unconfirmed} nepotvrzeno)"
35
+ registered: "%{registered} uživatelů bylo úspěšně zaregistrováno (%{count} detekováno, %{errors} chyb) "
36
+ revoked: Ověření od %{revoked} uživatelů bylo zrušeno pomocí [%{handler}] (%{count} detekováno, %{errors} chyb)
37
+ gdpr_disclaimer: Udělejte to v rámci vaší odpovědnosti. Nezapomeňte, že potřebujete mít výslovný souhlas svých uživatelů, abyste je mohli zaregistrovat. V opačném případě můžete porušovat nařízení o GDPR v zemích EU.
38
+ index:
39
+ authorizations: Autorizovaní uživatelé
40
+ stats: Statistiky uživatelů
41
+ title: Registrovat a autorizovat uživatele
42
+ new:
43
+ authorization_handler: Ověřovací metoda
44
+ authorize: Autorizovat uživatele
45
+ check: Zkontrolovat stav uživatelů
46
+ info: Zadejte e-maily zde, jeden na řádek. Pokud e-mailům předchází text, bude interpretován jako jméno uživatele
47
+ register: Registrovat uživatele na platformě (pokud existují, budou ignorováni)
48
+ revoke: Zrušit autorizaci od uživatelů
49
+ submit: Odeslat a zpracovat seznam
50
+ textarea: Seznam e-mailů
51
+ stats:
52
+ index:
53
+ authorized: Autorizováno
54
+ authorized_unconfirmed: Autorizováno, ale nepotvrzeno
55
+ global: "- Jakákoli metoda ověřování -"
56
+ registered: Registrován
57
+ unconfirmed: Nepotvrzeno
58
+ authorizations:
59
+ new:
60
+ no_action: Tato metoda vyžaduje administrátora, který vás ověřuje
61
+ verifications:
62
+ authorizations:
63
+ first_login:
64
+ actions:
65
+ direct_verifications: Přímé ověření
66
+ devise:
67
+ mailer:
68
+ direct_invite:
69
+ subject: Pokyny pro pozvání
@@ -21,12 +21,39 @@ en:
21
21
  direct_verifications:
22
22
  verification:
23
23
  admin:
24
+ imports:
25
+ new:
26
+ info: Import a CSV file with a user entry per line copying the format from the example below
27
+ submit: Upload file
28
+ file: CSV file with users data
29
+ create:
30
+ success: File successfully uploaded. We'll email you when all users are imported.
31
+ error: There was an error importing the file
32
+ mailer:
33
+ subject: File import results
34
+ authorized: "%{successful} users have been successfully verified using
35
+ [%{handler}] (%{count} detected, %{errors} errors)"
36
+ info: "%{count} users detected, of which %{registered} are registered,
37
+ %{authorized} authorized using [%{handler}] (%{unconfirmed} unconfirmed)"
38
+ registered: "%{successful} users have been successfully registered (%{count}
39
+ detected, %{errors} errors) "
40
+ revoked: Verification from %{successful} users have been revoked using
41
+ [%{handler}] (%{count} detected, %{errors} errors)
42
+ authorizations:
43
+ index:
44
+ created_at: Created at
45
+ metadata: Metadata
46
+ name: Name
47
+ title: Authorizations
48
+ user_name: User name
49
+ new_import: New import
24
50
  direct_verifications:
25
51
  create:
26
52
  authorized: "%{authorized} users have been successfully verified using
27
53
  [%{handler}] (%{count} detected, %{errors} errors)"
28
54
  info: "%{count} users detected, of which %{registered} are registered,
29
55
  %{authorized} authorized using [%{handler}] (%{unconfirmed} unconfirmed)"
56
+ missing_header: Please, provide a header row
30
57
  registered: "%{registered} users have been successfully registered (%{count}
31
58
  detected, %{errors} errors) "
32
59
  revoked: Verification from %{revoked} users have been revoked using
@@ -35,14 +62,14 @@ en:
35
62
  need to have explicit consent from your users in order to register them.
36
63
  Otherwise you will be infringing the GDPR regulation in EU countries.
37
64
  index:
65
+ authorizations: Authorized users
38
66
  stats: User stats
39
67
  title: Register and authorize users
40
68
  new:
41
69
  authorization_handler: Verification method
42
70
  authorize: Authorize users
43
71
  check: Check users status
44
- info: Enter the emails here, one per line. If the emails are preceded
45
- by a text, it will be interpreted as the user's name
72
+ info_html: You can <a href=%{link}>import a CSV</a> or enter the emails here, one per line. If the emails are preceded by a text, it will be interpreted as the user's name.
46
73
  register: Register users in the platform (if they exist they will be ignored)
47
74
  revoke: Revoke authorization from users
48
75
  submit: Send and process the list
@@ -1,4 +1,3 @@
1
- ---
2
1
  es:
3
2
  decidim:
4
3
  admin:
@@ -11,40 +10,41 @@ es:
11
10
  admin:
12
11
  direct_verifications:
13
12
  help:
14
- - 'Permite la introducción masiva d usuarios con el fin de:'
15
- - Registrarlos directamente a la organización con el envío de invitaciones
16
- - Verificarlos en cualquier método de verificación activo
17
- - Revocar la verificación en cualquier método de verificación activo
13
+ - 'Permite la introducción masiva d usuarios con el fin de:'
14
+ - Registrarlos directamente a la organización con el envío de invitaciones
15
+ - Verificarlos en cualquier método de verificación activo
16
+ - Revocar la verificación en cualquier método de verificación activo
18
17
  direct_verifications:
19
18
  explanation: Verificación manual por parte de los administradores de la organización
20
19
  name: Verificación directa
21
20
  direct_verifications:
22
21
  verification:
23
22
  admin:
23
+ authorizations:
24
+ index:
25
+ created_at: Creado el
26
+ metadata: Metadatos
27
+ name: Nombre
28
+ title: Autorizaciones
29
+ user_name: Nombre de usuario
30
+ new_import: Nueva importación
24
31
  direct_verifications:
25
32
  create:
26
- authorized: Se han verificado correctamente %{authorized} usuarios usando
27
- [%{handler}] (%{count} detectados, %{errors} errores)
28
- info: Se han detectado %{count} usuarios, de los cuales %{registered}
29
- están registrados, %{authorized} autorizados usando [%{handler}] (%{unconfirmed}
30
- sin confirmar)
31
- registered: Se han registrado correctamente %{registered} usuarios (%{count}
32
- detectados, %{errors} errores)
33
- revoked: Se ha revocado correctament la verificación de %{revoked} usuarios
34
- usando [%{handler}] (%{count} detectados, %{errors} errores)
35
- gdpr_disclaimer: Haga esto bajo su responsabilidad. Recuerde que debe
36
- contar con el consentimiento explícito de sus usuarios para poder registrarlos.
37
- De lo contrario, estará infringiendo la regulación GDPR en los países
38
- de la UE.
33
+ authorized: "Se han verificado correctamente %{authorized} usuarios usando [%{handler}] (%{count} detectados, %{errors} errores)"
34
+ info: "Se han detectado %{count} usuarios, de los cuales %{registered} están registrados, %{authorized} autorizados usando [%{handler}] (%{unconfirmed} sin confirmar)"
35
+ missing_header: Por favor, proporcionad una fila de encabezamiento
36
+ registered: "Se han registrado correctamente %{registered} usuarios (%{count} detectados, %{errors} errores)"
37
+ revoked: Se ha revocado correctament la verificación de %{revoked} usuarios usando [%{handler}] (%{count} detectados, %{errors} errores)
38
+ gdpr_disclaimer: Haga esto bajo su responsabilidad. Recuerde que debe contar con el consentimiento explícito de sus usuarios para poder registrarlos. De lo contrario, estará infringiendo la regulación GDPR en los países de la UE.
39
39
  index:
40
+ authorizations: Usuarios autorizados
40
41
  stats: Estadísticas de usuarios
41
42
  title: Inscribe y autoriza usuarios
42
43
  new:
43
44
  authorization_handler: Método de verificación
44
45
  authorize: Autoriza los usuarios
45
46
  check: Comprueba el estado de los usuarios
46
- info: Introduce aquí los emails, uno por linea. Si los emails están precedidos
47
- por un texto, se interpretará como el nombre del usuario
47
+ info: Introduce aquí los emails, uno por linea. Si los emails están precedidos por un texto, se interpretará como el nombre del usuario
48
48
  register: Registra los usuarios a la plataforma (si existen se ignorarán)
49
49
  revoke: Revoca la autorización de los usuarios
50
50
  submit: Envía y procesa el listado