Commit cdba3fe8 authored by Sean McGivern's avatar Sean McGivern

Merge branch 'issue_25682' into 'master'

Parse JIRA issue references even if Issue Tracker is disabled

Closes #25682

See merge request !8238
parents 713a1e28 f9963fe0
...@@ -173,48 +173,27 @@ module ProjectsHelper ...@@ -173,48 +173,27 @@ module ProjectsHelper
nav_tabs << :merge_requests nav_tabs << :merge_requests
end end
if can?(current_user, :read_pipeline, project)
nav_tabs << :pipelines
end
if can?(current_user, :read_build, project)
nav_tabs << :builds
end
if Gitlab.config.registry.enabled && can?(current_user, :read_container_image, project) if Gitlab.config.registry.enabled && can?(current_user, :read_container_image, project)
nav_tabs << :container_registry nav_tabs << :container_registry
end end
if can?(current_user, :read_environment, project) tab_ability_map = {
nav_tabs << :environments environments: :read_environment,
end milestones: :read_milestone,
pipelines: :read_pipeline,
if can?(current_user, :admin_project, project) snippets: :read_project_snippet,
nav_tabs << :settings settings: :admin_project,
end builds: :read_build,
labels: :read_label,
if can?(current_user, :read_project_member, project) issues: :read_issue,
nav_tabs << :team team: :read_project_member,
end wiki: :read_wiki
}
if can?(current_user, :read_issue, project)
nav_tabs << :issues
end
if can?(current_user, :read_wiki, project)
nav_tabs << :wiki
end
if can?(current_user, :read_project_snippet, project)
nav_tabs << :snippets
end
if can?(current_user, :read_label, project)
nav_tabs << :labels
end
if can?(current_user, :read_milestone, project) tab_ability_map.each do |tab, ability|
nav_tabs << :milestones if can?(current_user, ability, project)
nav_tabs << tab
end
end end
nav_tabs.flatten nav_tabs.flatten
......
...@@ -171,9 +171,7 @@ class ProjectPolicy < BasePolicy ...@@ -171,9 +171,7 @@ class ProjectPolicy < BasePolicy
def disabled_features! def disabled_features!
repository_enabled = project.feature_available?(:repository, user) repository_enabled = project.feature_available?(:repository, user)
unless project.feature_available?(:issues, user) block_issues_abilities
cannot!(*named_abilities(:issue))
end
unless project.feature_available?(:merge_requests, user) && repository_enabled unless project.feature_available?(:merge_requests, user) && repository_enabled
cannot!(*named_abilities(:merge_request)) cannot!(*named_abilities(:merge_request))
...@@ -250,6 +248,15 @@ class ProjectPolicy < BasePolicy ...@@ -250,6 +248,15 @@ class ProjectPolicy < BasePolicy
) )
end end
def block_issues_abilities
unless project.feature_available?(:issues, user)
cannot! :read_issue if project.default_issues_tracker?
cannot! :create_issue
cannot! :update_issue
cannot! :admin_issue
end
end
def named_abilities(name) def named_abilities(name)
[ [
:"read_#{name}", :"read_#{name}",
......
---
title: Parse JIRA issue references even if Issue Tracker is disabled
merge_request:
author:
...@@ -42,6 +42,17 @@ describe 'Edit Project Settings', feature: true do ...@@ -42,6 +42,17 @@ describe 'Edit Project Settings', feature: true do
end end
end end
context "When external issue tracker is enabled" do
it "does not hide issues tab" do
project.project_feature.update(issues_access_level: ProjectFeature::DISABLED)
allow_any_instance_of(Project).to receive(:external_issue_tracker).and_return(JiraService.new)
visit namespace_project_path(project.namespace, project)
expect(page).to have_selector(".shortcuts-issues")
end
end
context "pipelines subtabs" do context "pipelines subtabs" do
it "shows builds when enabled" do it "shows builds when enabled" do
visit namespace_project_pipelines_path(project.namespace, project) visit namespace_project_pipelines_path(project.namespace, project)
......
...@@ -12,7 +12,17 @@ describe Banzai::ReferenceParser::ExternalIssueParser, lib: true do ...@@ -12,7 +12,17 @@ describe Banzai::ReferenceParser::ExternalIssueParser, lib: true do
context 'when the link has a data-issue attribute' do context 'when the link has a data-issue attribute' do
before { link['data-external-issue'] = 123 } before { link['data-external-issue'] = 123 }
it_behaves_like "referenced feature visibility", "issues" levels = [ProjectFeature::DISABLED, ProjectFeature::PRIVATE, ProjectFeature::ENABLED]
levels.each do |level|
it "creates reference when the feature is #{level}" do
project.project_feature.update(issues_access_level: level)
visible_nodes = subject.nodes_visible_to_user(user, [link])
expect(visible_nodes).to include(link)
end
end
end end
end end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment