Commit cc0295b789a89a3f52e83e34b08ddf17b464308a

Authored by Dmitriy Zaporozhets
1 parent 6ea6ab7c

Only owner can remove project

app/controllers/application_controller.rb
@@ -112,6 +112,10 @@ class ApplicationController < ActionController::Base @@ -112,6 +112,10 @@ class ApplicationController < ActionController::Base
112 render file: Rails.root.join("public", "404"), layout: false, status: "404" 112 render file: Rails.root.join("public", "404"), layout: false, status: "404"
113 end 113 end
114 114
  115 + def render_403
  116 + render file: Rails.root.join("public", "403"), layout: false, status: "403"
  117 + end
  118 +
115 def require_non_empty_project 119 def require_non_empty_project
116 redirect_to @project if @project.empty_repo? 120 redirect_to @project if @project.empty_repo?
117 end 121 end
app/controllers/projects_controller.rb
@@ -89,6 +89,8 @@ class ProjectsController < ProjectResourceController @@ -89,6 +89,8 @@ class ProjectsController < ProjectResourceController
89 end 89 end
90 90
91 def destroy 91 def destroy
  92 + return access_denied! unless can?(current_user, :remove_project, project)
  93 +
92 # Disable the UsersProject update_repository call, otherwise it will be 94 # Disable the UsersProject update_repository call, otherwise it will be
93 # called once for every person removed from the project 95 # called once for every person removed from the project
94 UsersProject.skip_callback(:destroy, :after, :update_repository) 96 UsersProject.skip_callback(:destroy, :after, :update_repository)
app/views/help/permissions.html.haml
@@ -66,3 +66,4 @@ @@ -66,3 +66,4 @@
66 %legend Owner 66 %legend Owner
67 %ul 67 %ul
68 %li Transfer project to another namespace 68 %li Transfer project to another namespace
  69 + %li Remove project
app/views/projects/_form.html.haml
@@ -26,7 +26,7 @@ @@ -26,7 +26,7 @@
26   26  
27 %span.cred Be careful. Changing project namespace can have unintended side effects 27 %span.cred Be careful. Changing project namespace can have unintended side effects
28 - else 28 - else
29 - %a.btn.btn-small.disabled= @project.namespace.try(:human_name) || "/" 29 + %a.btn.disabled= @project.namespace.try(:human_name) || "/"
30   30  
31 %span.cred Only owner can change project namespace. 31 %span.cred Only owner can change project namespace.
32 32
@@ -69,5 +69,6 @@ @@ -69,5 +69,6 @@
69 = f.submit 'Save', class: "btn save-btn" 69 = f.submit 'Save', class: "btn save-btn"
70 = link_to 'Cancel', @project, class: "btn" 70 = link_to 'Cancel', @project, class: "btn"
71 - unless @project.new_record? 71 - unless @project.new_record?
72 - .right  
73 - = link_to 'Remove', @project, confirm: 'Are you sure?', method: :delete, class: "btn danger" 72 + - if can?(current_user, :remove_project, @project)
  73 + .right
  74 + = link_to 'Remove', @project, confirm: 'Removed project can not be restored! Are you sure?', method: :delete, class: "btn danger"
app/views/services/_gitlab_ci.html.haml
@@ -5,7 +5,7 @@ @@ -5,7 +5,7 @@
5 - if @service.active 5 - if @service.active
6 %small.cgreen Enabled 6 %small.cgreen Enabled
7 - else 7 - else
8 - %small.btn Disabled 8 + %small.cgray Disabled
9 9
10 10
11 11
app/views/services/index.html.haml
@@ -12,7 +12,7 @@ @@ -12,7 +12,7 @@
12 - if @gitlab_ci_service.active 12 - if @gitlab_ci_service.active
13 %small.cgreen Enabled 13 %small.cgreen Enabled
14 - else 14 - else
15 - %small.btn Disabled 15 + %small.cgray Disabled
16 %li.wll 16 %li.wll
17 %h4 17 %h4
18 Jenkins CI 18 Jenkins CI