guachiman 1.1.0 → 2.0.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 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