diff options
author | Z.J. van de Weg <git@zjvandeweg.nl> | 2016-11-17 21:27:12 +0100 |
---|---|---|
committer | Z.J. van de Weg <git@zjvandeweg.nl> | 2016-11-17 21:44:26 +0100 |
commit | 166ee0965bacc20e2ad1187321654499a9b0f825 (patch) | |
tree | 57e97bcfd0c819adbe6b3673bb45b4fc0124781c /lib/gitlab/chat_commands | |
parent | 1607efa40081702488e22e560db2c1e30cd80093 (diff) | |
download | gitlab-ce-166ee0965bacc20e2ad1187321654499a9b0f825.tar.gz |
More refactoring, push present to base command
Diffstat (limited to 'lib/gitlab/chat_commands')
-rw-r--r-- | lib/gitlab/chat_commands/base_command.rb | 18 | ||||
-rw-r--r-- | lib/gitlab/chat_commands/command.rb | 30 | ||||
-rw-r--r-- | lib/gitlab/chat_commands/issue_command.rb | 2 | ||||
-rw-r--r-- | lib/gitlab/chat_commands/issue_create.rb | 6 |
4 files changed, 31 insertions, 25 deletions
diff --git a/lib/gitlab/chat_commands/base_command.rb b/lib/gitlab/chat_commands/base_command.rb index 81b15bd1f7a..f84aca5365d 100644 --- a/lib/gitlab/chat_commands/base_command.rb +++ b/lib/gitlab/chat_commands/base_command.rb @@ -15,6 +15,14 @@ module Gitlab raise NotImplementedError end + def self.allowed?(_, _) + true + end + + def self.can?(object, action, subject) + Ability.allowed?(object, action, subject) + end + def execute(_) raise NotImplementedError end @@ -31,21 +39,11 @@ module Gitlab private - def can?(object, action, subject) - Ability.allowed?(object, action, subject) - end - def find_by_iid(iid) resource = collection.find_by(iid: iid) readable?(resource) ? resource : nil end - - def search_results(query) - collection.search(query).limit(QUERY_LIMIT).select do |resource| - readable?(resource) - end - end end end end diff --git a/lib/gitlab/chat_commands/command.rb b/lib/gitlab/chat_commands/command.rb index 43144975901..5f131703d40 100644 --- a/lib/gitlab/chat_commands/command.rb +++ b/lib/gitlab/chat_commands/command.rb @@ -7,10 +7,14 @@ module Gitlab ].freeze def execute - klass, match = fetch_klass - - if klass - present klass.new(project, current_user, params).execute(match) + command, match = match_command + + if command + if command.allowed?(project, current_user) + present command.new(project, current_user, params).execute(match) + else + access_denied + end else help(help_messages) end @@ -18,7 +22,7 @@ module Gitlab private - def fetch_klass + def match_command match = nil service = available_commands.find do |klass| match = klass.match(command) @@ -28,9 +32,7 @@ module Gitlab end def help_messages - available_commands.map do |klass| - klass.help_message - end + available_commands.map(&:help_message) end def available_commands @@ -43,13 +45,17 @@ module Gitlab params[:text] end - def present(resource) - Mattermost::Presenter.present(resource) - end - def help(messages) Mattermost::Presenter.help(messages, params[:command]) end + + def access_denied + Mattermost::Presenter.access_denied + end + + def present(resource) + Mattermost::Presenter.present(resource) + end end end end diff --git a/lib/gitlab/chat_commands/issue_command.rb b/lib/gitlab/chat_commands/issue_command.rb index 2426b3714b7..f1bc36239d5 100644 --- a/lib/gitlab/chat_commands/issue_command.rb +++ b/lib/gitlab/chat_commands/issue_command.rb @@ -10,7 +10,7 @@ module Gitlab end def readable?(issue) - can?(current_user, :read_issue, issue) + self.class.can?(current_user, :read_issue, issue) end end end diff --git a/lib/gitlab/chat_commands/issue_create.rb b/lib/gitlab/chat_commands/issue_create.rb index 1e311e09771..98338ebfa27 100644 --- a/lib/gitlab/chat_commands/issue_create.rb +++ b/lib/gitlab/chat_commands/issue_create.rb @@ -9,9 +9,11 @@ module Gitlab 'issue create <title>\n<description>' end - def execute(match) - return nil unless can?(current_user, :create_issue, project) + def self.allowed?(project, user) + can?(user, :create_issue, project) + end + def execute(match) title = match[:title] description = match[:description] |