From 9b908d72641728457d6357ea50a4c2c191559fac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javi=20Mart=C3=ADn?= Date: Thu, 11 Aug 2022 01:24:08 +0200 Subject: [PATCH] Extract component to render account permissions We were using similar code in four different places; six, if we count the welcome pages seeds. Reducing duplication in the pages seeds is a bit tricky because administrators are supposed to edit their content and might remove the HTML class we use to define styles. However, we can share the code everywhere else. Note that there's a bug in the application since we show that level 2 users cannot vote for budget projects but we give them permission to do so in the abilities model. We're keeping the same behavior after this refactoring but we might change it in the future. --- .../stylesheets/account/permissions_list.scss | 23 ++++++++++++++++ app/assets/stylesheets/admin.scss | 26 ------------------- app/assets/stylesheets/application.scss | 1 + app/assets/stylesheets/layout.scss | 24 ----------------- .../permissions_list_component.html.erb | 20 ++++++++++++++ .../account/permissions_list_component.rb | 7 +++++ .../management/users_controller.rb | 2 +- app/views/account/show.html.erb | 21 +-------------- .../management/_user_permissions.html.erb | 15 +---------- .../invalid_document.html.erb | 2 +- .../document_verifications/new.html.erb | 2 +- .../document_verifications/verified.html.erb | 2 +- .../email_verifications/sent.html.erb | 2 +- app/views/management/users/new.html.erb | 2 +- app/views/management/users/show.html.erb | 2 +- app/views/verification/letter/new.html.erb | 8 +----- app/views/verification/residence/new.html.erb | 7 +---- 17 files changed, 62 insertions(+), 104 deletions(-) create mode 100644 app/assets/stylesheets/account/permissions_list.scss create mode 100644 app/components/account/permissions_list_component.html.erb create mode 100644 app/components/account/permissions_list_component.rb diff --git a/app/assets/stylesheets/account/permissions_list.scss b/app/assets/stylesheets/account/permissions_list.scss new file mode 100644 index 000000000..2e476d6b0 --- /dev/null +++ b/app/assets/stylesheets/account/permissions_list.scss @@ -0,0 +1,23 @@ +.permissions-list { + 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; + } + } +} 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..ed3b2fe37 --- /dev/null +++ b/app/components/account/permissions_list_component.html.erb @@ -0,0 +1,20 @@ + diff --git a/app/components/account/permissions_list_component.rb b/app/components/account/permissions_list_component.rb new file mode 100644 index 000000000..d4ce55548 --- /dev/null +++ b/app/components/account/permissions_list_component.rb @@ -0,0 +1,7 @@ +class Account::PermissionsListComponent < ApplicationComponent + attr_reader :user + + def initialize(user) + @user = user + 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| %>