Skip to content
Snippets Groups Projects
Unverified Commit 04cd47dd authored by Zeger-Jan van de Weg's avatar Zeger-Jan van de Weg
Browse files

Don't show references to Pages when not available

In this instance its subgroups, and given we can't deploy it, we
shouldn't allow it to be shown.

Fixes gitlab-org/gitlab-ce#34864
parent 9e7e0496
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -94,6 +94,6 @@ class Projects::ApplicationController < ApplicationController
end
 
def require_pages_enabled!
not_found unless Gitlab.config.pages.enabled
not_found unless @project.pages_available?
end
end
Loading
Loading
@@ -195,6 +195,10 @@ class Namespace < ActiveRecord::Base
parent.present?
end
 
def subgroup?
has_parent?
end
def soft_delete_without_removing_associations
# We can't use paranoia's `#destroy` since this will hard-delete projects.
# Project uses `pending_delete` instead of the acts_as_paranoia gem.
Loading
Loading
Loading
Loading
@@ -1235,6 +1235,10 @@ class Project < ActiveRecord::Base
File.join(pages_path, 'public')
end
 
def pages_available?
Gitlab.config.pages.enabled && !namespace.subgroup?
end
def remove_private_deploy_keys
exclude_keys_linked_to_other_projects = <<-SQL
NOT EXISTS (
Loading
Loading
Loading
Loading
@@ -208,7 +208,7 @@
= link_to project_settings_ci_cd_path(@project), title: 'CI / CD' do
%span
CI / CD
- if Gitlab.config.pages.enabled
- if @project.pages_available?
= nav_link(controller: :pages) do
= link_to project_pages_path(@project), title: 'Pages' do
%span
Loading
Loading
Loading
Loading
@@ -23,7 +23,7 @@
= link_to project_settings_ci_cd_path(@project), title: 'Pipelines' do
%span
Pipelines
- if Gitlab.config.pages.enabled
- if @project.pages_available?
= nav_link(controller: :pages) do
= link_to project_pages_path(@project), title: 'Pages' do
%span
Loading
Loading
---
title: Remove pages settings when not available
merge_request:
author:
type: changed
Loading
Loading
@@ -2,7 +2,7 @@ require 'spec_helper'
 
describe Projects::PagesController do
let(:user) { create(:user) }
let(:project) { create(:project, :public, :access_requestable) }
let(:project) { create(:project, :public) }
 
let(:request_params) do
{
Loading
Loading
@@ -23,6 +23,17 @@ describe Projects::PagesController do
 
expect(response).to have_http_status(200)
end
context 'when the project is in a subgroup' do
let(:group) { create(:group, :nested) }
let(:project) { create(:project, namespace: group) }
it 'returns a 404 status code' do
get :show, request_params
expect(response).to have_http_status(404)
end
end
end
 
describe 'DELETE destroy' do
Loading
Loading
Loading
Loading
@@ -2225,6 +2225,28 @@ describe Project do
end
end
 
describe '#pages_available?' do
let(:project) { create(:project, group: group) }
subject { project.pages_available? }
before do
allow(Gitlab.config.pages).to receive(:enabled).and_return(true)
end
context 'when the project is in a top level namespace' do
let(:group) { create(:group) }
it { is_expected.to be(true) }
end
context 'when the project is in a subgroup' do
let(:group) { create(:group, :nested) }
it { is_expected.to be(false) }
end
end
describe '#remove_private_deploy_keys' do
let!(:project) { create(:project) }
 
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