Commit 2a1c5cdf99e943950af7630742299222a591827c
1 parent
f6bfa095
Exists in
master
and in
4 other branches
Only owner of current namespace can change project namespace
Showing
3 changed files
with
15 additions
and
9 deletions
Show diff stats
app/contexts/project_update_context.rb
... | ... | @@ -2,7 +2,7 @@ class ProjectUpdateContext < BaseContext |
2 | 2 | def execute(role = :default) |
3 | 3 | namespace_id = params[:project].delete(:namespace_id) |
4 | 4 | |
5 | - if namespace_id.present? | |
5 | + if can?(current_user, :change_namespace, project) && namespace_id.present? | |
6 | 6 | if namespace_id == Namespace.global_id |
7 | 7 | if project.namespace.present? |
8 | 8 | # Transfer to global namespace from anyone | ... | ... |
app/models/ability.rb
... | ... | @@ -17,9 +17,7 @@ class Ability |
17 | 17 | |
18 | 18 | # Rules based on role in project |
19 | 19 | if project.master_access_for?(user) |
20 | - # TODO: replace with master rules. | |
21 | - # Only allow project administration for namespace owners | |
22 | - rules << project_admin_rules | |
20 | + rules << project_master_rules | |
23 | 21 | |
24 | 22 | elsif project.dev_access_for?(user) |
25 | 23 | rules << project_dev_rules |
... | ... | @@ -93,13 +91,15 @@ class Ability |
93 | 91 | :admin_merge_request, |
94 | 92 | :admin_note, |
95 | 93 | :accept_mr, |
96 | - :admin_wiki | |
94 | + :admin_wiki, | |
95 | + :admin_project | |
97 | 96 | ] |
98 | 97 | end |
99 | 98 | |
100 | 99 | def project_admin_rules |
101 | 100 | project_master_rules + [ |
102 | - :admin_project | |
101 | + :change_namespace, | |
102 | + :rename_project | |
103 | 103 | ] |
104 | 104 | end |
105 | 105 | ... | ... |
app/views/projects/_form.html.haml
... | ... | @@ -21,9 +21,15 @@ |
21 | 21 | = f.label :namespace_id do |
22 | 22 | %span Namespace |
23 | 23 | .controls |
24 | - = f.select :namespace_id, namespaces_options(@project.namespace_id), {prompt: 'Choose a project namespace'}, {class: 'chosen'} | |
25 | - | |
26 | - %span.cred Be careful. Changing project namespace can have unintended side effects | |
24 | + - if can? current_user, :change_namespace, @project | |
25 | + = f.select :namespace_id, namespaces_options(@project.namespace_id), {prompt: 'Choose a project namespace'}, {class: 'chosen'} | |
26 | + | |
27 | + %span.cred Be careful. Changing project namespace can have unintended side effects | |
28 | + - else | |
29 | + %a.btn.btn-small.disabled= @project.namespace.try(:human_name) || "/" | |
30 | + | |
31 | + %span.cred Only owner can change project namespace. | |
32 | + | |
27 | 33 | |
28 | 34 | - unless @project.heads.empty? |
29 | 35 | .clearfix | ... | ... |