authority 2.6.0 → 2.7.0
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 +4 -4
- data/CHANGELOG.markdown +8 -4
- data/README.markdown +6 -1
- data/lib/authority/abilities.rb +13 -7
- data/lib/authority/version.rb +1 -1
- data/spec/authority/abilities_spec.rb +21 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b3bb0dcfadb29c3e61cf717eca48de2be68259b9
|
4
|
+
data.tar.gz: 5d8299cf62e1c9adabcc1c86bde6706592af9433
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9543396964cdc739ba4b41929cf5cde18de52e65c2c392f132c9b2f880c27469ceeeb6ccc6c622c4724d6458023baa981cb668440a6d3c3cab3dc7627aeadff8
|
7
|
+
data.tar.gz: 9a73e9a4dee9d62b0a5a2ec4597ad3ec15293fec5eeef1379d5e2830513960b9af7729da0f8a0f46e0471662f179e1ca6b27799b753ebf811e9202753256fad2
|
data/CHANGELOG.markdown
CHANGED
@@ -2,10 +2,14 @@
|
|
2
2
|
|
3
3
|
Authority does its best to use [semantic versioning](http://semver.org).
|
4
4
|
|
5
|
+
## 2.7.0
|
6
|
+
|
7
|
+
Allows setting authorizer by class (`authorizer = FooAuthorizer`) as well as by name (`authorizer_name = 'FooAuthorizer'`), thanks to [mguymon](https://github.com/mguymon)
|
8
|
+
|
5
9
|
## v2.6.0
|
6
10
|
|
7
|
-
- Now dependent on ActiveSupport, not all of Rails, as a step toward easier use with other frameworks
|
8
|
-
- Testing with Rails 4.0
|
11
|
+
- Now dependent on ActiveSupport, not all of Rails, as a step toward easier use with other frameworks. Thanks to [christhekeele](https://github.com/christhekeele)
|
12
|
+
- Testing with Rails 4.0, thanks to [sanemat](https://github.com/sanemat)
|
9
13
|
- Clearer backtraces in certain situations
|
10
14
|
|
11
15
|
## v2.5.0
|
@@ -44,7 +48,7 @@ Controller method `authorize_actions_for` can now be given a method name to dyna
|
|
44
48
|
|
45
49
|
## v2.2.0
|
46
50
|
|
47
|
-
Allow passing options hash to `authorize_action_for`, like `authorize_action_for(@llama, :sporting => @hat_style)`.
|
51
|
+
Allow passing options hash to `authorize_action_for`, like `authorize_action_for(@llama, :sporting => @hat_style)`. Thanks to [MP211](https://github.com/MP211).
|
48
52
|
|
49
53
|
## v2.1.0
|
50
54
|
|
@@ -61,7 +65,7 @@ Documentation and test cleanup.
|
|
61
65
|
|
62
66
|
## v1.1.0
|
63
67
|
|
64
|
-
- Added `Authority::Authorizer.default` class method which is called before the `default_strategy` proc and delegates to that proc. This can be overridden per authorizer.
|
68
|
+
- Added `Authority::Authorizer.default` class method which is called before the `default_strategy` proc and delegates to that proc. This can be overridden per authorizer. Thanks to [kevmoo](https://github.com/kevmoo)
|
65
69
|
|
66
70
|
## v1.0.0
|
67
71
|
|
data/README.markdown
CHANGED
@@ -71,7 +71,12 @@ All you have to do is define the methods you need on your authorizers. You have
|
|
71
71
|
|
72
72
|
Authority encapsulates all authorization logic in `Authorizer` classes. Want to do something with a model? **Ask its authorizer**.
|
73
73
|
|
74
|
-
You can specify a model's authorizer
|
74
|
+
You can specify a model's authorizer one of two ways:
|
75
|
+
|
76
|
+
- specify the class itself: `authorizer = SomeAuthorizer`
|
77
|
+
- specify the class's name: `authorizer_name = 'SomeAuthorizer'` (useful if the constant isn't yet loaded)
|
78
|
+
|
79
|
+
If you don't specify an authorizer, the model will:
|
75
80
|
|
76
81
|
- Look for an authorizer with its name. Eg, `Comment` will look for `CommentAuthorizer`.
|
77
82
|
- If that's not found, it will use `ApplicationAuthorizer`.
|
data/lib/authority/abilities.rb
CHANGED
@@ -17,12 +17,13 @@ module Authority
|
|
17
17
|
# - Look for an authorizer named like the model inside the model's namespace.
|
18
18
|
# - If there is none, use 'ApplicationAuthorizer'
|
19
19
|
self.authorizer_name = begin
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
20
|
+
"#{base.name}Authorizer".constantize.name
|
21
|
+
rescue NameError => e
|
22
|
+
"ApplicationAuthorizer"
|
23
|
+
end
|
24
24
|
end
|
25
25
|
|
26
|
+
|
26
27
|
def authorizer
|
27
28
|
self.class.authorizer.new(self) # instantiate on every check, in case model has changed
|
28
29
|
end
|
@@ -40,16 +41,21 @@ module Authority
|
|
40
41
|
module ClassMethods
|
41
42
|
include Definitions
|
42
43
|
|
44
|
+
def authorizer=(authorizer_class)
|
45
|
+
@authorizer = authorizer_class
|
46
|
+
self.authorizer_name = @authorizer.name
|
47
|
+
end
|
48
|
+
|
43
49
|
# @return [Class] of the designated authorizer
|
44
50
|
def authorizer
|
45
51
|
@authorizer ||= authorizer_name.constantize # Get an actual reference to the authorizer class
|
46
52
|
rescue NameError
|
47
53
|
raise Authority::NoAuthorizerError.new(
|
48
|
-
|
49
|
-
|
54
|
+
"#{authorizer_name} is set as the authorizer for #{self}, but the constant is missing"
|
55
|
+
)
|
50
56
|
end
|
51
57
|
|
52
58
|
end
|
53
59
|
|
54
60
|
end
|
55
|
-
end
|
61
|
+
end
|
data/lib/authority/version.rb
CHANGED
@@ -46,6 +46,27 @@ describe Authority::Abilities do
|
|
46
46
|
|
47
47
|
end
|
48
48
|
|
49
|
+
describe "authorizer=" do
|
50
|
+
|
51
|
+
let(:test_class) { Class.new {include Authority::Abilities} }
|
52
|
+
|
53
|
+
it "has a class attribute setter" do
|
54
|
+
expect(test_class).to respond_to(:authorizer=)
|
55
|
+
end
|
56
|
+
|
57
|
+
it "sets authorizer" do
|
58
|
+
test_class.authorizer = ExampleResourceAuthorizer
|
59
|
+
expect(test_class.authorizer).to eq(ExampleResourceAuthorizer)
|
60
|
+
end
|
61
|
+
|
62
|
+
it "also sets authorizer_name" do
|
63
|
+
test_class.authorizer_name = 'FooAuthorizer'
|
64
|
+
test_class.authorizer = ExampleResourceAuthorizer
|
65
|
+
expect(test_class.authorizer_name).to eq("ExampleResourceAuthorizer")
|
66
|
+
end
|
67
|
+
|
68
|
+
end
|
69
|
+
|
49
70
|
describe "authorizer" do
|
50
71
|
|
51
72
|
it "constantizes the authorizer name as the authorizer" do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: authority
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nathan Long
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-07-10 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|