guachiman 1.1.0 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 23e59b97a4747e67da8f84f640afd49494443bd8
4
- data.tar.gz: 870d34b5ec00a52361a7baf3d250040cb453d91f
3
+ metadata.gz: 1f192844c40e0c5beb9871dfe2ac665978899969
4
+ data.tar.gz: df8de968a5a07606cb834731805a1d5e874e3a00
5
5
  SHA512:
6
- metadata.gz: 04a0fbb692957e468cb8276d29db2422cc70e5621b8b90188cd51ac5bdf6f72f37b1a6bdbeea7cb5fb7520626be54f9f0a3b389a3982d6d8ecf6fb54a54334c3
7
- data.tar.gz: abce3073ffb2cad35f010fc6dd929223311c956204f3d9ebd118d35a6b4aa483d2a9473d70371afa5b8eb5f4fd94c775254376b1926a4eaf22f027b7ff865536
6
+ metadata.gz: 4394635eab0c495f587b70a8735c6ee3af5db3c834e989c185bcda3bbd41dc6489d29e90d968c4f88a2202e4cb838b46fbf15224b24d9846720883c2d7045f39
7
+ data.tar.gz: 0535826871652f587f5e824d7a5c5030e6d627f207c0dca709324ed7e11d32107f15cececea306b962875497c10805974e9ceaacb639694cd58c337ab2690e20
data/README.md CHANGED
@@ -14,8 +14,8 @@ be the result of the block evaluation.
14
14
  [3]: https://www.codeship.io/projects/28071
15
15
 
16
16
 
17
- Upgrading to ~> 1.0.0
18
- ---------------------
17
+ Upgrading to 1.0.0+
18
+ -------------------
19
19
 
20
20
  **Starting with version 1.0.0 all Rails-specific code and support has been removed.**
21
21
  A new gem called [guachiman-rails][4] will be the recommended way to use Guachiman with Rails.
@@ -55,16 +55,10 @@ class Authorization
55
55
  include Guachiman
56
56
 
57
57
  def initialize(user = nil)
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
58
+ allow :sessions, :new, :create
59
+
60
+ allow :users, :show, :edit, :update do |user_id|
61
+ user && user.id == user_id
68
62
  end
69
63
  end
70
64
  end
@@ -74,11 +68,9 @@ So that you can use them like this:
74
68
 
75
69
  ```ruby
76
70
  user = User.find(user_id)
77
- admin = User.find(admin_id)
78
71
 
79
- guest_authorization = Authorization.new
80
- user_authorization = Authorization.new(user)
81
- admin_authorization = Authorization.new(admin)
72
+ guest_authorization = Authorization.new
73
+ user_authorization = Authorization.new(user)
82
74
 
83
75
  guest_authorization.allow?(:sessions, :new)
84
76
  # => true
@@ -86,9 +78,6 @@ guest_authorization.allow?(:sessions, :new)
86
78
  user_authorization.allow?(:users, :show)
87
79
  # => false
88
80
 
89
- admin_authorization.allow?(:users, :show)
90
- # => true
91
-
92
81
  user_authorization.allow?(:users, :show, user.id)
93
82
  # => true
94
83
  ```
@@ -100,7 +89,7 @@ This is what you use to set permissions. It takes two parameters, `group` and `p
100
89
  ### `#allow?`
101
90
 
102
91
  This is what you use to check permissions. It takes a `group` param, a `permission` param, and an optional `object`
103
- param to evaluate in the block. **If the instance variable `@allow_all` is set to `true` it will always return `true`.**
92
+ param to evaluate in the block.
104
93
 
105
94
 
106
95
  License
@@ -17,7 +17,7 @@ Gem::Specification.new do |spec|
17
17
  spec.test_files = spec.files.grep(%r{^(test)/})
18
18
  spec.require_paths = ['lib']
19
19
 
20
- spec.add_development_dependency 'rake', '~> 10.3', '>= 10.3.0'
21
- spec.add_development_dependency 'minitest', '~> 5.4', '>= 5.4.0'
22
- spec.add_development_dependency 'bundler', '~> 1.6', '>= 1.6.0'
20
+ spec.add_development_dependency 'rake', '~> 10.4', '>= 10.4.0'
21
+ spec.add_development_dependency 'minitest', '~> 5.7', '>= 5.7.0'
22
+ spec.add_development_dependency 'bundler', '~> 1.9', '>= 1.9.0'
23
23
  end
@@ -5,16 +5,14 @@ module Guachiman
5
5
  @rules ||= {}
6
6
  end
7
7
 
8
- def allow(group, permissions, &block)
9
- permissions.each do |permission|
8
+ def allow(group, *permissions, &block)
9
+ Array(permissions).each do |permission|
10
10
  rules[group] ||= {}
11
11
  rules[group][permission] = (block || true)
12
12
  end
13
13
  end
14
14
 
15
15
  def allow?(group, permission, object = nil)
16
- return true if instance_variable_defined?(:@allow_all) && @allow_all
17
-
18
16
  if rule = rules[group] && rules[group][permission]
19
17
  rule == true || object && rule.call(object)
20
18
  else
@@ -1,3 +1,3 @@
1
1
  module Guachiman
2
- VERSION = "1.1.0"
2
+ VERSION = "2.0.0"
3
3
  end
@@ -8,15 +8,13 @@ class GuachimanTest < MiniTest::Test
8
8
  include Guachiman
9
9
 
10
10
  def initialize(user = 1)
11
- allow :group, [:permission1, :permission2]
11
+ allow :group, :permission1, :permission2
12
12
 
13
- allow :group, [:permission3, :permission4] do |object|
13
+ allow :group, :permission3, :permission4 do |object|
14
14
  object == user
15
15
  end
16
16
  end
17
17
  end.new
18
-
19
- p @authorization
20
18
  end
21
19
 
22
20
  def test_basic_rules
@@ -39,12 +37,4 @@ class GuachimanTest < MiniTest::Test
39
37
  assert @authorization.allow?(:group, :permission3, 1)
40
38
  assert @authorization.allow?(:group, :permission4, 1)
41
39
  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
50
40
  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.1.0
4
+ version: 2.0.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-10-21 00:00:00.000000000 Z
12
+ date: 2015-06-03 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
@@ -17,60 +17,60 @@ dependencies:
17
17
  requirements:
18
18
  - - "~>"
19
19
  - !ruby/object:Gem::Version
20
- version: '10.3'
20
+ version: '10.4'
21
21
  - - ">="
22
22
  - !ruby/object:Gem::Version
23
- version: 10.3.0
23
+ version: 10.4.0
24
24
  type: :development
25
25
  prerelease: false
26
26
  version_requirements: !ruby/object:Gem::Requirement
27
27
  requirements:
28
28
  - - "~>"
29
29
  - !ruby/object:Gem::Version
30
- version: '10.3'
30
+ version: '10.4'
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: 10.3.0
33
+ version: 10.4.0
34
34
  - !ruby/object:Gem::Dependency
35
35
  name: minitest
36
36
  requirement: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '5.4'
40
+ version: '5.7'
41
41
  - - ">="
42
42
  - !ruby/object:Gem::Version
43
- version: 5.4.0
43
+ version: 5.7.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.4'
50
+ version: '5.7'
51
51
  - - ">="
52
52
  - !ruby/object:Gem::Version
53
- version: 5.4.0
53
+ version: 5.7.0
54
54
  - !ruby/object:Gem::Dependency
55
55
  name: bundler
56
56
  requirement: !ruby/object:Gem::Requirement
57
57
  requirements:
58
58
  - - "~>"
59
59
  - !ruby/object:Gem::Version
60
- version: '1.6'
60
+ version: '1.9'
61
61
  - - ">="
62
62
  - !ruby/object:Gem::Version
63
- version: 1.6.0
63
+ version: 1.9.0
64
64
  type: :development
65
65
  prerelease: false
66
66
  version_requirements: !ruby/object:Gem::Requirement
67
67
  requirements:
68
68
  - - "~>"
69
69
  - !ruby/object:Gem::Version
70
- version: '1.6'
70
+ version: '1.9'
71
71
  - - ">="
72
72
  - !ruby/object:Gem::Version
73
- version: 1.6.0
73
+ version: 1.9.0
74
74
  description: Minimal authorization library
75
75
  email:
76
76
  - lrodriguezsanc@gmail.com
@@ -108,7 +108,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
108
108
  version: '0'
109
109
  requirements: []
110
110
  rubyforge_project:
111
- rubygems_version: 2.4.1
111
+ rubygems_version: 2.4.5
112
112
  signing_key:
113
113
  specification_version: 4
114
114
  summary: Minimal authorization