From 60c121ebc202e0de31a5a6212346128341d2766b Mon Sep 17 00:00:00 2001
From: Felipe Artur <felipefac@gmail.com>
Date: Thu, 6 Apr 2017 15:19:45 -0300
Subject: [PATCH] Backport permissions and multi-line array to CE

---
 app/policies/global_policy.rb                    | 1 +
 app/services/slash_commands/interpret_service.rb | 2 ++
 lib/gitlab/email/handler.rb                      | 6 +++++-
 3 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/app/policies/global_policy.rb b/app/policies/global_policy.rb
index cb72c2b4590..4757ba71680 100644
--- a/app/policies/global_policy.rb
+++ b/app/policies/global_policy.rb
@@ -10,6 +10,7 @@ class GlobalPolicy < BasePolicy
       can! :access_api
       can! :access_git
       can! :receive_notifications
+      can! :use_slash_commands
     end
   end
 end
diff --git a/app/services/slash_commands/interpret_service.rb b/app/services/slash_commands/interpret_service.rb
index 595653ea58a..49d45ec9dbd 100644
--- a/app/services/slash_commands/interpret_service.rb
+++ b/app/services/slash_commands/interpret_service.rb
@@ -7,6 +7,8 @@ module SlashCommands
     # Takes a text and interprets the commands that are extracted from it.
     # Returns the content without commands, and hash of changes to be applied to a record.
     def execute(content, issuable)
+      return [content, {}] unless current_user.can?(:use_slash_commands)
+
       @issuable = issuable
       @updates = {}
 
diff --git a/lib/gitlab/email/handler.rb b/lib/gitlab/email/handler.rb
index 35ea2e0ef59..b07c68d1498 100644
--- a/lib/gitlab/email/handler.rb
+++ b/lib/gitlab/email/handler.rb
@@ -5,7 +5,11 @@ require 'gitlab/email/handler/unsubscribe_handler'
 module Gitlab
   module Email
     module Handler
-      HANDLERS = [UnsubscribeHandler, CreateNoteHandler, CreateIssueHandler].freeze
+      HANDLERS = [
+        UnsubscribeHandler,
+        CreateNoteHandler,
+        CreateIssueHandler
+      ].freeze
 
       def self.for(mail, mail_key)
         HANDLERS.find do |klass|
-- 
GitLab