Allow sdg_manager access to sdg management section

This commit is contained in:
taitus
2020-11-25 12:09:18 +01:00
committed by Javi Martín
parent cd7185f317
commit 65d6282b51
4 changed files with 83 additions and 3 deletions

View File

@@ -12,6 +12,6 @@ class SDGManagement::BaseController < ApplicationController
private private
def verify_sdg_manager def verify_sdg_manager
raise CanCan::AccessDenied unless current_user&.administrator? raise CanCan::AccessDenied unless current_user&.sdg_manager? || current_user&.administrator?
end end
end end

View File

@@ -51,6 +51,10 @@ module UsersHelper
current_user&.manager? current_user&.manager?
end end
def current_sdg_manager?
current_user&.sdg_manager?
end
def current_poll_officer? def current_poll_officer?
current_user&.poll_officer? current_user&.poll_officer?
end end
@@ -58,7 +62,7 @@ module UsersHelper
def show_admin_menu?(user = nil) def show_admin_menu?(user = nil)
unless namespace == "officing" unless namespace == "officing"
current_administrator? || current_moderator? || current_valuator? || current_manager? || current_administrator? || current_moderator? || current_valuator? || current_manager? ||
(user&.administrator?) || current_poll_officer? (user&.administrator?) || current_poll_officer? || current_sdg_manager?
end end
end end

View File

@@ -33,7 +33,7 @@
</li> </li>
<% end %> <% end %>
<% if feature?(:sdg) && current_user.administrator? %> <% if feature?(:sdg) && (current_user.administrator? || current_user.sdg_manager?) %>
<li> <li>
<%= link_to t("sdg_management.header.title"), sdg_management_root_path %> <%= link_to t("sdg_management.header.title"), sdg_management_root_path %>
</li> </li>

View File

@@ -0,0 +1,76 @@
require "rails_helper"
describe "SDGManagement", :js do
let(:user) { create(:user) }
before { Setting["feature.sdg"] = true }
context "Access" do
scenario "Access as regular user is not authorized" do
login_as(user)
visit root_path
expect(page).not_to have_link("Menu")
expect(page).not_to have_link("SDG content")
visit sdg_management_root_path
expect(page).not_to have_current_path(sdg_management_root_path)
expect(page).to have_current_path(root_path)
expect(page).to have_content "You do not have permission to access this page"
end
scenario "Access as manager is not authorized" do
create(:manager, user: user)
login_as(user)
visit root_path
click_on "Menu"
expect(page).not_to have_link("SDG content")
visit sdg_management_root_path
expect(page).not_to have_current_path(sdg_management_root_path)
expect(page).to have_current_path(root_path)
expect(page).to have_content "You do not have permission to access this page"
end
scenario "Access as a sdg manager is authorized" do
create(:sdg_manager, user: user)
login_as(user)
visit root_path
click_on "Menu"
click_on "SDG content"
expect(page).to have_current_path(sdg_management_root_path)
expect(page).not_to have_content "You do not have permission to access this page"
end
end
scenario "Valuation access links" do
create(:sdg_manager, user: user)
login_as(user)
visit root_path
click_on "Menu"
expect(page).to have_link("SDG content")
expect(page).not_to have_link("Administration")
expect(page).not_to have_link("Moderation")
expect(page).not_to have_link("Valuation")
end
scenario "Valuation dashboard" do
create(:sdg_manager, user: user)
login_as(user)
visit root_path
click_on "Menu"
click_on "SDG content"
expect(page).to have_current_path(sdg_management_root_path)
expect(page).to have_css(".sdg-content-menu")
expect(page).not_to have_css("#valuation_menu")
expect(page).not_to have_css("#admin_menu")
expect(page).not_to have_css("#moderation_menu")
end
end