minican 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ea52e4d136e6fc32c74452ad561ea64e6d832a84
4
- data.tar.gz: 961382bb4426291699b14e0074a8aaf2f417377e
3
+ metadata.gz: 0bce0104e56811dbb5e0851380fc58580cf115a4
4
+ data.tar.gz: bcadf904c147b2f193a9fde0720ab2d59e3aa1d2
5
5
  SHA512:
6
- metadata.gz: cc3f9fd5ee74bad3261013c7b4540a73c10f379f16c6e70c00c5437cda5d5c4547195da9ac09500acf708e1e30d47803bbcf748a6ad1e582193761a7583e6c4b
7
- data.tar.gz: 94e5140f784369993a333bd3c2e93d31630ca426177dfe93b2933aacf2050c7d89e0f9142328fb207dd859843eb1c211acd6e3e26cf898ada9c5824942c3e1d6
6
+ metadata.gz: 64d6a80707ef962e002de0cc74c11e46550fd1c2fa3c824f1f6a4bee4603b7e0519bb0623c13f75265425b2dfafe3bdb90dd4577d8f34e38ee93ab0e89761453
7
+ data.tar.gz: d52eedb958ada4cc0184f9c20b2431df81e058a4f722a8070c69f2360eb5433e11e7b636ce498725730ec8c353f373d111d22d07b3b95d36428f5e591530eb5b
@@ -1,7 +1,6 @@
1
1
  module Minican
2
2
  class AccessDenied < StandardError
3
-
4
- # This is raised when a policy fails in a controller via
3
+ # This is raised when a policy fails in a controller via
5
4
  # {Minican::ControllerAdditions}
6
5
  #
7
6
  # @param [policy] The policy that authorized it
@@ -11,7 +10,7 @@ module Minican
11
10
 
12
11
  # Human readable error message
13
12
  def to_s
14
- "You are not authorized to access this page"
13
+ 'You are not authorized to access this page'
15
14
  end
16
15
  end
17
16
  end
@@ -4,14 +4,14 @@ module Minican
4
4
 
5
5
  private
6
6
 
7
- # Controller helper method to verify call method on
7
+ # Controller helper method to verify call method on
8
8
  # policy. Raises {Minican::AccessDenied} if the policy
9
9
  # method fails
10
10
  #
11
11
  # @param method [Symbol] method to be called on the policy
12
12
  # @param object [Object] The object to apply the policy to
13
13
  # @param user [User] The user object to pass to the method
14
- #
14
+ #
15
15
  # @visibility public
16
16
  def authorize!(method, object, user = current_user)
17
17
  policy = policy_for(object)
@@ -21,9 +21,27 @@ module Minican
21
21
  end
22
22
  end
23
23
 
24
+ # Controller helper method to filter out non-authorized
25
+ # objects from the passed in array
26
+ #
27
+ # @param method [Symbol] method to be called on each policy
28
+ # @param objects [Array] array of objects to filter
29
+ # @param user [User] The current user object to pass
30
+ # @return (Array)
31
+ #
32
+ # @visibility public
33
+ def filter_authorized!(method, objects, user = current_user)
34
+ object_array = Array(objects)
35
+
36
+ object_array.select do |object|
37
+ policy = policy_for(object)
38
+ policy.can?(method, user)
39
+ end
40
+ end
41
+
24
42
  # Helper method available in controllers and views
25
43
  # that returns the value of the policy method
26
- #
44
+ #
27
45
  # @param (see #authorize!)
28
46
  # @return (Boolean)
29
47
  #
@@ -1,6 +1,5 @@
1
1
  module Minican
2
2
  module Helpers
3
-
4
3
  private
5
4
 
6
5
  # Returns a new policy for passed in object
@@ -13,8 +12,8 @@ module Minican
13
12
  end
14
13
 
15
14
  # Returns a policy class based on the object
16
- # passed in. If object is a class, it will
17
- # return itself, if it's an instance it will
15
+ # passed in. If object is a class, it will
16
+ # return itself, if it's an instance it will
18
17
  # return a class based on its name.
19
18
  #
20
19
  # @param [object] The object to classify
@@ -19,7 +19,7 @@ module Minican
19
19
  #
20
20
  # @return [Boolean]
21
21
  def can?(method, user)
22
- self.send("#{method}?", user)
22
+ send("#{method}?", user)
23
23
  end
24
24
 
25
25
  # Convenience method to call predicate method
@@ -1,3 +1,3 @@
1
1
  module Minican
2
- VERSION = "0.0.1"
2
+ VERSION = '0.0.2'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: minican
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Blake Williams
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-02-11 00:00:00.000000000 Z
11
+ date: 2014-02-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - '>='
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: appraisal
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: 1.0.0.beta2
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: 1.0.0.beta2
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: rspec
43
57
  requirement: !ruby/object:Gem::Requirement