diff --git a/app/controllers/admin/projects_controller.rb b/app/controllers/admin/projects_controller.rb index ae1de06b983ce58ba5690eaa83b553eee03d56bf..8b212225b2d6f09ce27963bed9a4defa231d0376 100644 --- a/app/controllers/admin/projects_controller.rb +++ b/app/controllers/admin/projects_controller.rb @@ -1,7 +1,6 @@ class Admin::ProjectsController < Admin::ApplicationController before_action :project, only: [:show, :transfer] before_action :group, only: [:show, :transfer] - before_action :repository, only: [:show, :transfer] def index @projects = Project.all diff --git a/app/controllers/projects/application_controller.rb b/app/controllers/projects/application_controller.rb index 276f80f800a8061f8cf3e9ab7a4491c9de849cdd..9c8433c260bbc8c569a345ac85c6da87bcde5e7f 100644 --- a/app/controllers/projects/application_controller.rb +++ b/app/controllers/projects/application_controller.rb @@ -67,7 +67,7 @@ class Projects::ApplicationController < ApplicationController end def require_non_empty_project - redirect_to @project if @project.empty_repo? + redirect_to namespace_project_path(@project.namespace, @project) if @project.empty_repo? end def require_branch_head diff --git a/app/models/project.rb b/app/models/project.rb index ab31a635a821540e5190412efcb01b8291e82cc2..76dcff80bffa6c337fa25a4436e97ed8b4afd1d3 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -246,10 +246,6 @@ class Project < ActiveRecord::Base end class << self - def public_and_internal_levels - [Project::PUBLIC, Project::INTERNAL] - end - def abandoned where('projects.last_activity_at < ?', 6.months.ago) end @@ -976,11 +972,9 @@ class Project < ActiveRecord::Base end def visibility_level_allowed_as_fork?(level = self.visibility_level) - return true unless forked? && forked_project_link.forked_from_project_id.present? + return true unless forked? - from_project = self.forked_from_project - from_project ||= Project.find(forked_project_link.forked_from_project_id) - Gitlab::VisibilityLevel.allowed_fork_levels(from_project.visibility_level).include?(level) + Gitlab::VisibilityLevel.allowed_fork_levels(forked_from_project.visibility_level).include?(level) end def visibility_level_allowed_by_group?(level = self.visibility_level) diff --git a/app/views/events/event/_common.html.haml b/app/views/events/event/_common.html.haml index e9e16a7646f4abf54a28e37b954b661b182bc4d6..c994e3b997de6b85e747f6872837e2e05995bb1c 100644 --- a/app/views/events/event/_common.html.haml +++ b/app/views/events/event/_common.html.haml @@ -4,7 +4,7 @@ = event_action_name(event) - if event.target - %strong= link_to event.target.to_reference, [event.project.namespace.becomes(Namespace), event.project, event.target] + %strong= link_to event.target.reference_link_text, [event.project.namespace.becomes(Namespace), event.project, event.target] = event_preposition(event) diff --git a/db/migrate/20160320204112_index_namespaces_on_visibility_level.rb b/db/migrate/20160320204112_index_namespaces_on_visibility_level.rb new file mode 100644 index 0000000000000000000000000000000000000000..b31454434975104fc25e088bfb1340527795e60b --- /dev/null +++ b/db/migrate/20160320204112_index_namespaces_on_visibility_level.rb @@ -0,0 +1,5 @@ +class IndexNamespacesOnVisibilityLevel < ActiveRecord::Migration + def change + add_index :namespaces, :visibility_level + end +end diff --git a/db/schema.rb b/db/schema.rb index 2aa37cc590c1a347c45afedee19a3ecfbd13d999..9d1d7d9b823f548f6546b36243e9c042d16f4d08 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -601,6 +601,7 @@ ActiveRecord::Schema.define(version: 20160316204731) do add_index "namespaces", ["path"], name: "index_namespaces_on_path", unique: true, using: :btree add_index "namespaces", ["path"], name: "index_namespaces_on_path_trigram", using: :gin, opclasses: {"path"=>"gin_trgm_ops"} add_index "namespaces", ["type"], name: "index_namespaces_on_type", using: :btree + add_index "namespaces", ["visibility_level"], name: "index_namespaces_on_visibility_level", using: :btree create_table "notes", force: :cascade do |t| t.text "note" diff --git a/features/steps/shared/group.rb b/features/steps/shared/group.rb index ca32faa3159dd58578ffe0f4a3a94ec3741e7745..fe6736dacd42989ff9b1919244e2939e5fa7d114 100644 --- a/features/steps/shared/group.rb +++ b/features/steps/shared/group.rb @@ -38,7 +38,7 @@ module SharedGroup def is_member_of(username, groupname, role) @project_count ||= 0 user = User.find_by(name: username) || create(:user, name: username) - group = Group.find_by(name: groupname) || create(:group, name: groupname, visibility_level: Gitlab::VisibilityLevel::PUBLIC) + group = Group.find_by(name: groupname) || create(:group, name: groupname) group.add_user(user, role) project ||= create(:project, namespace: group, path: "project#{@project_count}") create(:closed_issue_event, project: project) @@ -47,6 +47,6 @@ module SharedGroup end def owned_group - @owned_group ||= Group.find_by(name: "Owned", visibility_level: Gitlab::VisibilityLevel::PUBLIC) + @owned_group ||= Group.find_by(name: "Owned") end end diff --git a/spec/controllers/application_controller_spec.rb b/spec/controllers/application_controller_spec.rb index 55851befc8cb362c880912d345e5a5f49d902c6f..186239d3096b6a548b41d8bf0348e446986f3380 100644 --- a/spec/controllers/application_controller_spec.rb +++ b/spec/controllers/application_controller_spec.rb @@ -30,44 +30,4 @@ describe ApplicationController do controller.send(:check_password_expiration) end end - - describe 'check labels authorization' do - let(:project) { create(:project) } - let(:user) { create(:user) } - let(:controller) { ApplicationController.new } - - before do - project.team << [user, :guest] - allow(controller).to receive(:current_user).and_return(user) - allow(controller).to receive(:project).and_return(project) - end - - it 'should succeed if issues and MRs are enabled' do - project.issues_enabled = true - project.merge_requests_enabled = true - controller.send(:authorize_read_label!) - expect(response.status).to eq(200) - end - - it 'should succeed if issues are enabled, MRs are disabled' do - project.issues_enabled = true - project.merge_requests_enabled = false - controller.send(:authorize_read_label!) - expect(response.status).to eq(200) - end - - it 'should succeed if issues are disabled, MRs are enabled' do - project.issues_enabled = false - project.merge_requests_enabled = true - controller.send(:authorize_read_label!) - expect(response.status).to eq(200) - end - - it 'should fail if issues and MRs are disabled' do - project.issues_enabled = false - project.merge_requests_enabled = false - expect(controller).to receive(:access_denied!) - controller.send(:authorize_read_label!) - end - end end diff --git a/spec/lib/banzai/filter/redactor_filter_spec.rb b/spec/lib/banzai/filter/redactor_filter_spec.rb index 9acf6304bcb19fc9b79792f7141f4850f00d0755..c2c2fd0eb6ac3403663268d66ab9fb0b941f87bb 100644 --- a/spec/lib/banzai/filter/redactor_filter_spec.rb +++ b/spec/lib/banzai/filter/redactor_filter_spec.rb @@ -119,7 +119,7 @@ describe Banzai::Filter::RedactorFilter, lib: true do context 'with data-group' do it 'removes unpermitted Group references' do user = create(:user) - group = create(:group) + group = create(:group, :private) link = reference_link(group: group.id, reference_filter: 'UserReferenceFilter') doc = filter(link, current_user: user) @@ -129,7 +129,7 @@ describe Banzai::Filter::RedactorFilter, lib: true do it 'allows permitted Group references' do user = create(:user) - group = create(:group) + group = create(:group, :private) group.add_developer(user) link = reference_link(group: group.id, reference_filter: 'UserReferenceFilter') diff --git a/spec/models/project_security_spec.rb b/spec/models/project_security_spec.rb index 3643ad1b0523e7b5d4d63b77a0922ec4551ae9a5..e12258c0874200f7ca0cf71d183d3ac7cc4ed711 100644 --- a/spec/models/project_security_spec.rb +++ b/spec/models/project_security_spec.rb @@ -18,11 +18,11 @@ describe Project, models: true do let(:report_actions) { Ability.project_report_rules } let(:dev_actions) { Ability.project_dev_rules } let(:master_actions) { Ability.project_master_rules } - let(:admin_actions) { Ability.project_admin_rules } + let(:owner_actions) { Ability.project_owner_rules } describe "Non member rules" do it "should deny for non-project users any actions" do - admin_actions.each do |action| + owner_actions.each do |action| expect(@abilities.allowed?(@u1, action, @p1)).to be_falsey end end @@ -90,20 +90,20 @@ describe Project, models: true do end end - describe "Admin Rules" do + describe "Owner Rules" do before do @p1.project_members.create(project: @p1, user: @u2, access_level: ProjectMember::DEVELOPER) @p1.project_members.create(project: @p1, user: @u3, access_level: ProjectMember::MASTER) end it "should deny for masters admin-specific actions" do - [admin_actions - master_actions].each do |action| + [owner_actions - master_actions].each do |action| expect(@abilities.allowed?(@u2, action, @p1)).to be_falsey end end it "should allow for project owner any admin actions" do - admin_actions.each do |action| + owner_actions.each do |action| expect(@abilities.allowed?(@u4, action, @p1)).to be_truthy end end diff --git a/spec/requests/api/groups_spec.rb b/spec/requests/api/groups_spec.rb index 4cfa49d15666d06deeee90d6ba0181acde3978c5..41c9cacd455d051044cde40db64db8e16ebdb793 100644 --- a/spec/requests/api/groups_spec.rb +++ b/spec/requests/api/groups_spec.rb @@ -9,7 +9,7 @@ describe API::API, api: true do let(:admin) { create(:admin) } let(:avatar_file_path) { File.join(Rails.root, 'spec', 'fixtures', 'banana_sample.gif') } let!(:group1) { create(:group, avatar: File.open(avatar_file_path)) } - let!(:group2) { create(:group) } + let!(:group2) { create(:group, :private) } let!(:project1) { create(:project, namespace: group1) } let!(:project2) { create(:project, namespace: group2) }