Merge pull request #2137 from wairbut-m2c/iagirre-admin-menu-in-management

Add admin menu in management view (if user is admin)
This commit is contained in:
Alberto
2018-07-27 12:35:07 +02:00
committed by GitHub
6 changed files with 62 additions and 5 deletions

View File

@@ -6,6 +6,7 @@ class Management::BaseController < ActionController::Base
helper_method :managed_user
helper_method :current_user
helper_method :manager_logged_in
private
@@ -22,7 +23,10 @@ class Management::BaseController < ActionController::Base
end
def managed_user
@managed_user ||= Verification::Management::ManagedUser.find(session[:document_type], session[:document_number])
@managed_user ||= Verification::Management::ManagedUser.find(
session[:document_type],
session[:document_number]
)
end
def check_verified_user(alert_msg)
@@ -49,4 +53,11 @@ class Management::BaseController < ActionController::Base
def clear_password
session[:new_password] = nil
end
def manager_logged_in
if current_manager
@manager_logged_in = User.find_by(id: session[:manager]["login"].last(1))
end
end
end

View File

@@ -11,7 +11,7 @@ class Users::SessionsController < Devise::SessionsController
end
def after_sign_out_path_for(resource)
request.referer.present? ? request.referer : super
request.referer.present? && !request.referer.match("management") ? request.referer : super
end
def verifying_via_email?

View File

@@ -52,8 +52,8 @@ module UsersHelper
current_user && current_user.manager?
end
def show_admin_menu?
current_administrator? || current_moderator? || current_valuator? || current_manager?
def show_admin_menu?(user = nil)
current_administrator? || current_moderator? || current_valuator? || current_manager? || (user && user.administrator?)
end
def interests_title_text(user)

View File

@@ -29,6 +29,19 @@
</li>
</ul>
</div>
<% if show_admin_menu?(manager_logged_in) %>
<div id="responsive_menu">
<div class="top-bar-right">
<ul class="menu" data-responsive-menu="medium-dropdown">
<%= render "admin/shared/admin_shortcuts", current_user: manager_logged_in %>
<%= render "shared/admin_login_items", current_user: manager_logged_in %>
<%= render "devise/menu/login_items", current_user: manager_logged_in %>
</ul>
</div>
</div>
<% end %>
</div>
</div>
</header>

View File

@@ -1,4 +1,4 @@
<% if show_admin_menu? %>
<% if show_admin_menu?(current_user) %>
<li class="has-submenu">
<%= link_to t("layouts.header.administration_menu"), "#", rel: "nofollow", class: "hide-for-small-only" %>
<ul class="submenu menu vertical" data-submenu>

View File

@@ -0,0 +1,33 @@
require 'rails_helper'
feature 'Management' do
let(:user) { create(:user) }
scenario "Should show admin menu if logged user is admin" do
create(:administrator, user: user)
login_as(user)
visit root_path
expect(page).to have_link("Management")
click_link "Management"
expect(page).to have_content("My activity")
expect(page).to have_content("My account")
expect(page).to have_content("Sign out")
end
scenario "Should not show admin menu if logged user is manager" do
create(:manager, user: user)
login_as(user)
visit root_path
expect(page).to have_link("Management")
click_link "Management"
expect(page).not_to have_content("My activity")
expect(page).not_to have_content("My account")
expect(page).not_to have_content("Sign out")
end
end