diff options
author | Louise Crow <louise.crow@gmail.com> | 2013-07-31 18:47:03 +0100 |
---|---|---|
committer | Louise Crow <louise.crow@gmail.com> | 2013-09-16 12:25:23 +0100 |
commit | b8965db2ed79e5b79e77716371de02a0297d425e (patch) | |
tree | 0a348bc3b22c9cb6d0a398ccfbfaedcc4a700962 | |
parent | af6bc758faf62eb44e5822ed0eb6c1871db6ac91 (diff) |
Refactor common logic about prominence and access.
Move it into the Ability module.
-rw-r--r-- | app/models/incoming_message.rb | 8 | ||||
-rw-r--r-- | app/models/info_request.rb | 8 | ||||
-rw-r--r-- | lib/ability.rb | 13 | ||||
-rw-r--r-- | spec/models/incoming_message_spec.rb | 2 |
4 files changed, 15 insertions, 16 deletions
diff --git a/app/models/incoming_message.rb b/app/models/incoming_message.rb index 6e85f86f0..398289c28 100644 --- a/app/models/incoming_message.rb +++ b/app/models/incoming_message.rb @@ -72,13 +72,7 @@ class IncomingMessage < ActiveRecord::Base end def user_can_view?(user) - if self.prominence == 'hidden' - return User.view_hidden?(user) - end - if self.prominence == 'requester_only' - return self.info_request.is_owning_user?(user) - end - return true + Ability.can_view_with_prominence?(self.prominence, self.info_request, user) end # Return a cached structured mail object diff --git a/app/models/info_request.rb b/app/models/info_request.rb index ad210c6fc..8c8a23066 100644 --- a/app/models/info_request.rb +++ b/app/models/info_request.rb @@ -1018,13 +1018,7 @@ public end def user_can_view?(user) - if self.prominence == 'hidden' - return User.view_hidden?(user) - end - if self.prominence == 'requester_only' - return self.is_owning_user?(user) - end - return true + Ability.can_view_with_prominence?(self.prominence, self, user) end # Is this request visible to everyone? diff --git a/lib/ability.rb b/lib/ability.rb index 2865ccb1c..f63845e84 100644 --- a/lib/ability.rb +++ b/lib/ability.rb @@ -2,4 +2,15 @@ module Ability def self.can_update_request_state?(user, request) (user && request.is_old_unclassified?) || request.is_owning_user?(user) end -end
\ No newline at end of file + + def self.can_view_with_prominence?(prominence, info_request, user) + if prominence == 'hidden' + return User.view_hidden?(user) + end + if prominence == 'requester_only' + return info_request.is_owning_user?(user) + end + return true + end + +end diff --git a/spec/models/incoming_message_spec.rb b/spec/models/incoming_message_spec.rb index a45bf303e..ad4def0bb 100644 --- a/spec/models/incoming_message_spec.rb +++ b/spec/models/incoming_message_spec.rb @@ -54,7 +54,7 @@ describe IncomingMessage, 'when getting a response event' do end -describe IncomingMessage, 'when asked if a user can view it', :focus => true do +describe IncomingMessage, 'when asked if a user can view it' do before do @user = mock_model(User) |