Skip to content
Snippets Groups Projects
Commit 837c3b3d authored by Francisco Javier López's avatar Francisco Javier López Committed by Douwe Maan
Browse files

Fix User role displayed on projects dashboard

parent 83f79ced
No related branches found
No related tags found
1 merge request!10495Merge Requests - Assignee
Loading
Loading
@@ -7,7 +7,7 @@ class Dashboard::ProjectsController < Dashboard::ApplicationController
skip_cross_project_access_check :index, :starred
 
def index
@projects = load_projects(params.merge(non_public: true)).page(params[:page])
@projects = load_projects(params.merge(non_public: true))
 
respond_to do |format|
format.html
Loading
Loading
@@ -25,7 +25,7 @@ class Dashboard::ProjectsController < Dashboard::ApplicationController
 
def starred
@projects = load_projects(params.merge(starred: true))
.includes(:forked_from_project, :tags).page(params[:page])
.includes(:forked_from_project, :tags)
 
@groups = []
 
Loading
Loading
@@ -51,6 +51,7 @@ class Dashboard::ProjectsController < Dashboard::ApplicationController
.new(params: finder_params, current_user: current_user)
.execute
.includes(:route, :creator, namespace: [:route, :owner])
.page(finder_params[:page])
 
prepare_projects_for_rendering(projects)
end
Loading
Loading
Loading
Loading
@@ -177,6 +177,7 @@ module ProjectsHelper
controller.action_name,
Gitlab::CurrentSettings.cache_key,
"cross-project:#{can?(current_user, :read_cross_project)}",
max_project_member_access_cache_key(project),
'v2.6'
]
 
Loading
Loading
Loading
Loading
@@ -31,6 +31,14 @@ module UsersHelper
current_user_menu_items.include?(item)
end
 
def max_project_member_access(project)
current_user&.max_member_access_for_project(project.id) || Gitlab::Access::NO_ACCESS
end
def max_project_member_access_cache_key(project)
"access:#{max_project_member_access(project)}"
end
private
 
def get_profile_tabs
Loading
Loading
Loading
Loading
@@ -4,7 +4,7 @@
- ci = false unless local_assigns[:ci] == true
- skip_namespace = false unless local_assigns[:skip_namespace] == true
- user = local_assigns[:user]
- access = user&.max_member_access_for_project(project.id) unless user.nil?
- access = max_project_member_access(project)
- css_class = '' unless local_assigns[:css_class]
- show_last_commit_as_description = false unless local_assigns[:show_last_commit_as_description] == true && can_show_last_commit_in_list?(project)
- css_class += " no-description" if project.description.blank? && !show_last_commit_as_description
Loading
Loading
---
title: Fix wrong role badge displayed in projects dashboard
merge_request: 20374
author:
type: fixed
Loading
Loading
@@ -29,6 +29,34 @@ describe 'Dashboard Projects' do
end
end
 
context 'when user has access to the project' do
it 'shows role badge' do
visit dashboard_projects_path
page.within '.user-access-role' do
expect(page).to have_content('Developer')
end
end
context 'when role changes', :use_clean_rails_memory_store_fragment_caching do
it 'displays the right role' do
visit dashboard_projects_path
page.within '.user-access-role' do
expect(page).to have_content('Developer')
end
project.members.last.update(access_level: 40)
visit dashboard_projects_path
page.within '.user-access-role' do
expect(page).to have_content('Maintainer')
end
end
end
end
context 'when last_repository_updated_at, last_activity_at and update_at are present' do
it 'shows the last_repository_updated_at attribute as the update date' do
project.update_attributes!(last_repository_updated_at: Time.now, last_activity_at: 1.hour.ago)
Loading
Loading
Loading
Loading
@@ -80,6 +80,7 @@ describe ProjectsHelper do
before do
allow(helper).to receive(:current_user).and_return(user)
allow(helper).to receive(:can?).with(user, :read_cross_project) { true }
allow(user).to receive(:max_member_access_for_project).and_return(40)
end
 
it "includes the route" do
Loading
Loading
@@ -125,6 +126,10 @@ describe ProjectsHelper do
 
expect(helper.project_list_cache_key(project)).to include("pipeline-status/#{project.commit.sha}-success")
end
it "includes the user max member access" do
expect(helper.project_list_cache_key(project)).to include('access:40')
end
end
 
describe '#load_pipeline_status' do
Loading
Loading
Loading
Loading
@@ -170,6 +170,17 @@ RSpec.configure do |config|
redis_queues_cleanup!
end
 
config.around(:each, :use_clean_rails_memory_store_fragment_caching) do |example|
caching_store = ActionController::Base.cache_store
ActionController::Base.cache_store = ActiveSupport::Cache::MemoryStore.new
ActionController::Base.perform_caching = true
example.run
ActionController::Base.perform_caching = false
ActionController::Base.cache_store = caching_store
end
# The :each scope runs "inside" the example, so this hook ensures the DB is in the
# correct state before any examples' before hooks are called. This prevents a
# problem where `ScheduleIssuesClosedAtTypeChange` (or any migration that depends
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment