diff --git a/app/assets/stylesheets/account/permissions_list.scss b/app/assets/stylesheets/account/permissions_list.scss new file mode 100644 index 000000000..fbd0a5043 --- /dev/null +++ b/app/assets/stylesheets/account/permissions_list.scss @@ -0,0 +1,31 @@ +.permissions-list { + list-style-type: none; + margin-bottom: 0; + margin-left: 0; + + li { + font-size: $small-font-size; + margin-bottom: $line-height / 2; + + &::before { + font-size: 0.9em; + margin-#{$global-right}: 0.2em; + } + + &.permission-allowed { + @include has-fa-icon(check, solid); + + &::before { + color: $check; + } + } + + &.permission-denied { + @include has-fa-icon(times, solid); + + &::before { + color: $delete; + } + } + } +} diff --git a/app/assets/stylesheets/admin.scss b/app/assets/stylesheets/admin.scss index 0eae30b8b..5b2a19228 100644 --- a/app/assets/stylesheets/admin.scss +++ b/app/assets/stylesheets/admin.scss @@ -525,32 +525,6 @@ code { // 05. Management // -------------- -.user-permissions { - - ul { - list-style-type: none; - margin-left: 0; - } - - li { - font-size: rem-calc(14); - margin-bottom: rem-calc(12); - - span { - color: $text-medium; - font-size: rem-calc(12); - } - - .icon-check { - color: $check; - } - - .icon-x { - color: $delete; - } - } -} - .account-info, .login-as { background-color: $highlight; diff --git a/app/assets/stylesheets/application.scss b/app/assets/stylesheets/application.scss index 7d47c5015..de9749210 100644 --- a/app/assets/stylesheets/application.scss +++ b/app/assets/stylesheets/application.scss @@ -41,6 +41,7 @@ @import "stats"; @import "sticky_overrides"; @import "tags"; +@import "account/**/*"; @import "admin/**/*"; @import "budgets/**/*"; @import "debates/**/*"; diff --git a/app/assets/stylesheets/layout.scss b/app/assets/stylesheets/layout.scss index 83a9f6cd6..0197288f4 100644 --- a/app/assets/stylesheets/layout.scss +++ b/app/assets/stylesheets/layout.scss @@ -1278,30 +1278,6 @@ form { font-size: rem-calc(12); } } - - ul { - list-style-type: none; - margin-bottom: 0; - margin-left: 0; - } - - li { - font-size: $small-font-size; - margin-bottom: $line-height / 2; - - span { - color: $text-medium; - font-size: rem-calc(12); - } - - .icon-check { - color: $check; - } - - .icon-x { - color: $delete; - } - } } .notifications-list { diff --git a/app/components/account/permissions_list_component.html.erb b/app/components/account/permissions_list_component.html.erb new file mode 100644 index 000000000..028976b03 --- /dev/null +++ b/app/components/account/permissions_list_component.html.erb @@ -0,0 +1,11 @@ + diff --git a/app/components/account/permissions_list_component.rb b/app/components/account/permissions_list_component.rb new file mode 100644 index 000000000..619ef8b5f --- /dev/null +++ b/app/components/account/permissions_list_component.rb @@ -0,0 +1,26 @@ +class Account::PermissionsListComponent < ApplicationComponent + attr_reader :user + + def initialize(user) + @user = user + end + + private + + def permissions + { + t("verification.user_permission_debates") => true, + t("verification.user_permission_proposal") => true, + t("verification.user_permission_support_proposal") => user.level_two_or_three_verified?, + t("verification.user_permission_votes") => user.level_three_verified? + } + end + + def allowed_class(allowed) + if allowed + "permission-allowed" + else + "permission-denied" + end + end +end diff --git a/app/controllers/management/users_controller.rb b/app/controllers/management/users_controller.rb index 75a76d2aa..43f23f40e 100644 --- a/app/controllers/management/users_controller.rb +++ b/app/controllers/management/users_controller.rb @@ -1,6 +1,6 @@ class Management::UsersController < Management::BaseController def new - @user = User.new(user_params) + @user = User.new(user_params.merge(verified_at: Time.current)) end def create diff --git a/app/views/account/show.html.erb b/app/views/account/show.html.erb index 22a1462cd..34c9d104c 100644 --- a/app/views/account/show.html.erb +++ b/app/views/account/show.html.erb @@ -93,26 +93,7 @@

<%= t("account.show.user_permission_info") %>

- + <%= render Account::PermissionsListComponent.new(current_user) %>

<%= t("account.show.user_permission_verify") %> diff --git a/app/views/management/_user_permissions.html.erb b/app/views/management/_user_permissions.html.erb index 37556f138..d1ab68171 100644 --- a/app/views/management/_user_permissions.html.erb +++ b/app/views/management/_user_permissions.html.erb @@ -1,18 +1,5 @@ -<%# # Parameters: - # message: A string explaining the permissions - # permissions: An array of symbols containing the permissions - # (can be :debates, :proposal, :support_proposal, :votes) %>

-

<%= message %>

- - + <%= render Account::PermissionsListComponent.new(user) %>
diff --git a/app/views/management/document_verifications/invalid_document.html.erb b/app/views/management/document_verifications/invalid_document.html.erb index 8de89d6f9..086145d98 100644 --- a/app/views/management/document_verifications/invalid_document.html.erb +++ b/app/views/management/document_verifications/invalid_document.html.erb @@ -8,7 +8,7 @@ <%= render "management/user_permissions", message: t("management.document_verifications.not_in_census_info"), - permissions: [:debates, :proposal] %> + user: User.new %>

<%= sanitize(t("management.document_verifications.has_no_account", diff --git a/app/views/management/document_verifications/new.html.erb b/app/views/management/document_verifications/new.html.erb index a816520c5..ee9cd1267 100644 --- a/app/views/management/document_verifications/new.html.erb +++ b/app/views/management/document_verifications/new.html.erb @@ -4,7 +4,7 @@ <%= render "management/user_permissions", message: t("management.document_verifications.in_census_has_following_permissions"), - permissions: [:debates, :proposal, :support_proposal] %> + user: @document_verification.user %> <%= form_for @document_verification, as: :document_verification, diff --git a/app/views/management/document_verifications/verified.html.erb b/app/views/management/document_verifications/verified.html.erb index b20af33d3..1365c9910 100644 --- a/app/views/management/document_verifications/verified.html.erb +++ b/app/views/management/document_verifications/verified.html.erb @@ -4,6 +4,6 @@ <%= render "management/user_permissions", message: t("management.document_verifications.in_census_has_following_permissions"), - permissions: [:debates, :proposal, :support_proposal, :votes] %> + user: @document_verification.user %> <%= t("management.print_info") %> diff --git a/app/views/management/email_verifications/sent.html.erb b/app/views/management/email_verifications/sent.html.erb index 9eae46bff..7e7ca2e60 100644 --- a/app/views/management/email_verifications/sent.html.erb +++ b/app/views/management/email_verifications/sent.html.erb @@ -4,7 +4,7 @@ <%= render "management/user_permissions", message: t("management.email_verifications.document_found_in_census"), - permissions: [:debates, :proposal, :support_proposal, :votes] %> + user: @email_verification.user %>

<%= t("management.print_info") %> diff --git a/app/views/management/users/new.html.erb b/app/views/management/users/new.html.erb index 632ce1cf7..6c7baad7d 100644 --- a/app/views/management/users/new.html.erb +++ b/app/views/management/users/new.html.erb @@ -25,6 +25,6 @@

<%= render "management/user_permissions", message: t("management.document_verifications.in_census_has_following_permissions"), - permissions: [:debates, :proposal, :support_proposal, :votes] %> + user: @user %>
diff --git a/app/views/management/users/show.html.erb b/app/views/management/users/show.html.erb index 89bf3bba5..86bc4a377 100644 --- a/app/views/management/users/show.html.erb +++ b/app/views/management/users/show.html.erb @@ -6,6 +6,6 @@ <%= render "management/user_permissions", message: t("management.document_verifications.in_census_has_following_permissions"), - permissions: [:debates, :proposal, :support_proposal, :votes] %> + user: @user %> <%= t("management.print_info") %> diff --git a/app/views/verification/letter/new.html.erb b/app/views/verification/letter/new.html.erb index a60a762d7..60b38f9ae 100644 --- a/app/views/verification/letter/new.html.erb +++ b/app/views/verification/letter/new.html.erb @@ -24,15 +24,9 @@

<%= t("verification.letter.new.title") %>

-

<%= t("verification.letter.new.user_permission_info") %>

- + <%= render Account::PermissionsListComponent.new(current_user) %>
<%= link_to t("verification.letter.new.go_to_index"), root_path, class: "button warning" %> diff --git a/app/views/verification/residence/new.html.erb b/app/views/verification/residence/new.html.erb index 817408bc6..8cc5c745a 100644 --- a/app/views/verification/residence/new.html.erb +++ b/app/views/verification/residence/new.html.erb @@ -24,12 +24,7 @@

<%= t("verification.user_permission_info") %>

- + <%= render Account::PermissionsListComponent.new(User.new(level_two_verified_at: Time.current)) %>
<%= form_for @residence, as: "residence", url: residence_path do |f| %> diff --git a/config/locales/en/verification.yml b/config/locales/en/verification.yml index 276d23791..7b6ac56ee 100644 --- a/config/locales/en/verification.yml +++ b/config/locales/en/verification.yml @@ -92,6 +92,7 @@ en: user_permission_proposal: Create new proposals user_permission_support_proposal: Support proposals user_permission_votes: Vote for budget projects + verification_needed: Additional verification needed verified_user: form: submit_button: Send code diff --git a/config/locales/es/verification.yml b/config/locales/es/verification.yml index c3620df4c..4f52a3d5a 100644 --- a/config/locales/es/verification.yml +++ b/config/locales/es/verification.yml @@ -92,6 +92,7 @@ es: user_permission_proposal: Crear nuevas propuestas user_permission_support_proposal: Apoyar propuestas user_permission_votes: Votar proyectos en los presupuestos participativos + verification_needed: Verificación adicional necesaria verified_user: form: submit_button: Enviar código diff --git a/spec/components/account/permissions_list_component_spec.rb b/spec/components/account/permissions_list_component_spec.rb new file mode 100644 index 000000000..c8d30f5a7 --- /dev/null +++ b/spec/components/account/permissions_list_component_spec.rb @@ -0,0 +1,17 @@ +require "rails_helper" + +describe Account::PermissionsListComponent do + it "adds different classes for actions that can and cannot be performed" do + render_inline Account::PermissionsListComponent.new(User.new) + + expect(page).to have_css "li.permission-allowed", text: "Participate in debates" + expect(page).to have_css "li.permission-denied", text: "Support proposals" + end + + it "adds a hint when an action cannot be performed" do + render_inline Account::PermissionsListComponent.new(User.new) + + expect(page).to have_css "li", exact_text: "Additional verification needed Support proposals", normalize_ws: true + expect(page).to have_css "li", exact_text: "Participate in debates", normalize_ws: true + end +end