From 68cdeb71d56f0a7c60efed0d70636409b9937eb8 Mon Sep 17 00:00:00 2001
From: Kamil Trzcinski <ayufan@ayufan.eu>
Date: Mon, 21 Sep 2015 20:25:02 +0200
Subject: [PATCH] Fix permissions problems

- Allow developers to retry builds
- Hide advanced project options from CI page for non-admin users
---
 app/controllers/ci/application_controller.rb |  2 +-
 app/views/layouts/ci/_nav_project.html.haml  | 83 ++++++++++----------
 2 files changed, 43 insertions(+), 42 deletions(-)

diff --git a/app/controllers/ci/application_controller.rb b/app/controllers/ci/application_controller.rb
index 8d8ff75ff72..d8227e632e4 100644
--- a/app/controllers/ci/application_controller.rb
+++ b/app/controllers/ci/application_controller.rb
@@ -38,7 +38,7 @@ module Ci
     end
 
     def authorize_manage_builds!
-      unless can?(current_user, :admin_project, gl_project)
+      unless can?(current_user, :manage_builds, gl_project)
         return page_404
       end
     end
diff --git a/app/views/layouts/ci/_nav_project.html.haml b/app/views/layouts/ci/_nav_project.html.haml
index b7e997be108..cb1dece073c 100644
--- a/app/views/layouts/ci/_nav_project.html.haml
+++ b/app/views/layouts/ci/_nav_project.html.haml
@@ -10,44 +10,45 @@
       %span
         Commits
         %span.count= @project.commits.count
-  = nav_link path: 'charts#show' do
-    = link_to ci_project_charts_path(@project) do
-      = icon('bar-chart fw')
-      %span
-        Charts
-  = nav_link path: ['runners#index', 'runners#show', 'runners#edit'] do
-    = link_to ci_project_runners_path(@project) do
-      = icon('cog fw')
-      %span
-        Runners
-  = nav_link path: 'variables#show' do
-    = link_to ci_project_variables_path(@project) do
-      = icon('code fw')
-      %span
-        Variables
-  = nav_link path: 'web_hooks#index' do
-    = link_to ci_project_web_hooks_path(@project) do
-      = icon('link fw')
-      %span
-        Web Hooks
-  = nav_link path: 'triggers#index' do
-    = link_to ci_project_triggers_path(@project) do
-      = icon('retweet fw')
-      %span
-        Triggers
-  = nav_link path: ['services#index', 'services#edit'] do
-    = link_to ci_project_services_path(@project) do
-      = icon('share fw')
-      %span
-        Services
-  = nav_link path: 'events#index' do
-    = link_to ci_project_events_path(@project) do
-      = icon('book fw')
-      %span
-        Events
-  %li.separate-item
-  = nav_link path: 'projects#edit' do
-    = link_to edit_ci_project_path(@project) do
-      = icon('cogs fw')
-      %span
-        Settings
+  - if can?(current_user, :admin_project, gl_project)
+    = nav_link path: 'charts#show' do
+      = link_to ci_project_charts_path(@project) do
+        = icon('bar-chart fw')
+        %span
+          Charts
+    = nav_link path: ['runners#index', 'runners#show', 'runners#edit'] do
+      = link_to ci_project_runners_path(@project) do
+        = icon('cog fw')
+        %span
+          Runners
+    = nav_link path: 'variables#show' do
+      = link_to ci_project_variables_path(@project) do
+        = icon('code fw')
+        %span
+          Variables
+    = nav_link path: 'web_hooks#index' do
+      = link_to ci_project_web_hooks_path(@project) do
+        = icon('link fw')
+        %span
+          Web Hooks
+    = nav_link path: 'triggers#index' do
+      = link_to ci_project_triggers_path(@project) do
+        = icon('retweet fw')
+        %span
+          Triggers
+    = nav_link path: ['services#index', 'services#edit'] do
+      = link_to ci_project_services_path(@project) do
+        = icon('share fw')
+        %span
+          Services
+    = nav_link path: 'events#index' do
+      = link_to ci_project_events_path(@project) do
+        = icon('book fw')
+        %span
+          Events
+    %li.separate-item
+    = nav_link path: 'projects#edit' do
+      = link_to edit_ci_project_path(@project) do
+        = icon('cogs fw')
+        %span
+          Settings
-- 
GitLab