summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRémy Coutable <remy@rymai.me>2017-04-27 13:13:09 +0000
committerRémy Coutable <remy@rymai.me>2017-04-27 13:13:09 +0000
commit39ff809980efa3f4b1ddbd66f2ae2c843a6f0e9e (patch)
tree8f7aa6b961fbea1340a5fe2f14277d7ac3a05cd8
parent19a3b49f47ef68eec12663945fa9e2163179853d (diff)
parent69f584edb4738d4de82f0301bb2ac8f6b3998814 (diff)
downloadgitlab-ce-39ff809980efa3f4b1ddbd66f2ae2c843a6f0e9e.tar.gz
Merge branch 'tc-make-user-master-project-by-admin' into 'master'
Make namespace owner master of project upon creation Closes #29446 See merge request !10910
-rw-r--r--app/services/projects/create_service.rb3
-rw-r--r--changelogs/unreleased/tc-make-user-master-project-by-admin.yml4
-rw-r--r--spec/services/projects/create_service_spec.rb16
3 files changed, 22 insertions, 1 deletions
diff --git a/app/services/projects/create_service.rb b/app/services/projects/create_service.rb
index 7828c5806b0..535d93385e6 100644
--- a/app/services/projects/create_service.rb
+++ b/app/services/projects/create_service.rb
@@ -97,7 +97,8 @@ module Projects
system_hook_service.execute_hooks_for(@project, :create)
unless @project.group || @project.gitlab_project_import?
- @project.team << [current_user, :master, current_user]
+ owners = [current_user, @project.namespace.owner].compact.uniq
+ @project.add_master(owners, current_user: current_user)
end
@project.group&.refresh_members_authorized_projects
diff --git a/changelogs/unreleased/tc-make-user-master-project-by-admin.yml b/changelogs/unreleased/tc-make-user-master-project-by-admin.yml
new file mode 100644
index 00000000000..459d6178bdd
--- /dev/null
+++ b/changelogs/unreleased/tc-make-user-master-project-by-admin.yml
@@ -0,0 +1,4 @@
+---
+title: Ensure namespace owner is Master of project upon creation
+merge_request: 10910
+author:
diff --git a/spec/services/projects/create_service_spec.rb b/spec/services/projects/create_service_spec.rb
index 7a07ea618c0..033e6ecd18c 100644
--- a/spec/services/projects/create_service_spec.rb
+++ b/spec/services/projects/create_service_spec.rb
@@ -27,6 +27,22 @@ describe Projects::CreateService, '#execute', services: true do
end
end
+ context "admin creates project with other user's namespace_id" do
+ it 'sets the correct permissions' do
+ admin = create(:admin)
+ opts = {
+ name: 'GitLab',
+ namespace_id: user.namespace.id
+ }
+ project = create_project(admin, opts)
+
+ expect(project).to be_persisted
+ expect(project.owner).to eq(user)
+ expect(project.team.masters).to include(user, admin)
+ expect(project.namespace).to eq(user.namespace)
+ end
+ end
+
context 'group namespace' do
let(:group) do
create(:group).tap do |group|