guachiman 1.0.2 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +19 -22
- data/guachiman.gemspec +1 -1
- data/lib/guachiman.rb +2 -0
- data/lib/guachiman/version.rb +1 -1
- data/test/guachiman_test.rb +12 -2
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 23e59b97a4747e67da8f84f640afd49494443bd8
|
4
|
+
data.tar.gz: 870d34b5ec00a52361a7baf3d250040cb453d91f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 04a0fbb692957e468cb8276d29db2422cc70e5621b8b90188cd51ac5bdf6f72f37b1a6bdbeea7cb5fb7520626be54f9f0a3b389a3982d6d8ecf6fb54a54334c3
|
7
|
+
data.tar.gz: abce3073ffb2cad35f010fc6dd929223311c956204f3d9ebd118d35a6b4aa483d2a9473d70371afa5b8eb5f4fd94c775254376b1926a4eaf22f027b7ff865536
|
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
guachiman
|
2
2
|
=========
|
3
3
|
|
4
4
|
Minimal authorization library inspired by [RailsCast #385 Authorization from Scratch][1] by Ryan Bates.
|
@@ -55,24 +55,16 @@ class Authorization
|
|
55
55
|
include Guachiman
|
56
56
|
|
57
57
|
def initialize(user = nil)
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
allow :sessions, [:new]
|
69
|
-
end
|
70
|
-
|
71
|
-
def user_authorization
|
72
|
-
guest_authorization
|
73
|
-
|
74
|
-
allow :users, [:show, :edit, :update] do |user_id|
|
75
|
-
@current_user.id == user_id
|
58
|
+
allow :sessions, [:new, :create]
|
59
|
+
|
60
|
+
if user
|
61
|
+
if user.admin?
|
62
|
+
@allow_all = true
|
63
|
+
else
|
64
|
+
allow :users, [:show, :edit, :update] do |user_id|
|
65
|
+
user.id == user_id
|
66
|
+
end
|
67
|
+
end
|
76
68
|
end
|
77
69
|
end
|
78
70
|
end
|
@@ -82,9 +74,11 @@ So that you can use them like this:
|
|
82
74
|
|
83
75
|
```ruby
|
84
76
|
user = User.find(user_id)
|
77
|
+
admin = User.find(admin_id)
|
85
78
|
|
86
|
-
guest_authorization
|
87
|
-
user_authorization
|
79
|
+
guest_authorization = Authorization.new
|
80
|
+
user_authorization = Authorization.new(user)
|
81
|
+
admin_authorization = Authorization.new(admin)
|
88
82
|
|
89
83
|
guest_authorization.allow?(:sessions, :new)
|
90
84
|
# => true
|
@@ -92,6 +86,9 @@ guest_authorization.allow?(:sessions, :new)
|
|
92
86
|
user_authorization.allow?(:users, :show)
|
93
87
|
# => false
|
94
88
|
|
89
|
+
admin_authorization.allow?(:users, :show)
|
90
|
+
# => true
|
91
|
+
|
95
92
|
user_authorization.allow?(:users, :show, user.id)
|
96
93
|
# => true
|
97
94
|
```
|
@@ -103,7 +100,7 @@ This is what you use to set permissions. It takes two parameters, `group` and `p
|
|
103
100
|
### `#allow?`
|
104
101
|
|
105
102
|
This is what you use to check permissions. It takes a `group` param, a `permission` param, and an optional `object`
|
106
|
-
param to evaluate in the block.
|
103
|
+
param to evaluate in the block. **If the instance variable `@allow_all` is set to `true` it will always return `true`.**
|
107
104
|
|
108
105
|
|
109
106
|
License
|
data/guachiman.gemspec
CHANGED
@@ -18,6 +18,6 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.require_paths = ['lib']
|
19
19
|
|
20
20
|
spec.add_development_dependency 'rake', '~> 10.3', '>= 10.3.0'
|
21
|
-
spec.add_development_dependency 'minitest', '~> 5.
|
21
|
+
spec.add_development_dependency 'minitest', '~> 5.4', '>= 5.4.0'
|
22
22
|
spec.add_development_dependency 'bundler', '~> 1.6', '>= 1.6.0'
|
23
23
|
end
|
data/lib/guachiman.rb
CHANGED
data/lib/guachiman/version.rb
CHANGED
data/test/guachiman_test.rb
CHANGED
@@ -7,14 +7,16 @@ class GuachimanTest < MiniTest::Test
|
|
7
7
|
@authorization = Class.new do
|
8
8
|
include Guachiman
|
9
9
|
|
10
|
-
def initialize
|
10
|
+
def initialize(user = 1)
|
11
11
|
allow :group, [:permission1, :permission2]
|
12
12
|
|
13
13
|
allow :group, [:permission3, :permission4] do |object|
|
14
|
-
object ==
|
14
|
+
object == user
|
15
15
|
end
|
16
16
|
end
|
17
17
|
end.new
|
18
|
+
|
19
|
+
p @authorization
|
18
20
|
end
|
19
21
|
|
20
22
|
def test_basic_rules
|
@@ -37,4 +39,12 @@ class GuachimanTest < MiniTest::Test
|
|
37
39
|
assert @authorization.allow?(:group, :permission3, 1)
|
38
40
|
assert @authorization.allow?(:group, :permission4, 1)
|
39
41
|
end
|
42
|
+
|
43
|
+
def test_allow_all
|
44
|
+
refute @authorization.allow?(:group, :permission0)
|
45
|
+
|
46
|
+
@authorization.instance_variable_set(:@allow_all, true)
|
47
|
+
|
48
|
+
assert @authorization.allow?(:group, :permission0)
|
49
|
+
end
|
40
50
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: guachiman
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Francesco Rodriguez
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-
|
12
|
+
date: 2014-10-21 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|
@@ -37,20 +37,20 @@ dependencies:
|
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '5.
|
40
|
+
version: '5.4'
|
41
41
|
- - ">="
|
42
42
|
- !ruby/object:Gem::Version
|
43
|
-
version: 5.
|
43
|
+
version: 5.4.0
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
46
|
version_requirements: !ruby/object:Gem::Requirement
|
47
47
|
requirements:
|
48
48
|
- - "~>"
|
49
49
|
- !ruby/object:Gem::Version
|
50
|
-
version: '5.
|
50
|
+
version: '5.4'
|
51
51
|
- - ">="
|
52
52
|
- !ruby/object:Gem::Version
|
53
|
-
version: 5.
|
53
|
+
version: 5.4.0
|
54
54
|
- !ruby/object:Gem::Dependency
|
55
55
|
name: bundler
|
56
56
|
requirement: !ruby/object:Gem::Requirement
|