maybee 1.0.6 → 1.2.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: 3971315be229bbf7b4e265798d1aa944c7a49b39
4
- data.tar.gz: 4bde684a5cb1766ba855254de8be10c16f76a8f5
3
+ metadata.gz: f29e6ee079046ec284b5a4f1c92c467e6f89b950
4
+ data.tar.gz: 701ddaee631e28e32b6b7c640e0d4d5b35a1a1f2
5
5
  SHA512:
6
- metadata.gz: 21f149746d7726ebea52c65b2321e5221ce16638a9d72e52fd9c138dfb9ba08a6b9dc67ee90f29c2fae16ab883fe3fd052c36c1265da5fb124f4cf1f1c77da39
7
- data.tar.gz: 35c35e6cdb0ebbc481a5f3c9f98894b130e57408eb5e13677298f5c93d93dfb7a7db0f78c5c93d474516f963dfc0be9cac0d2ad82f5e2f9d8e3beb1b22366700
6
+ metadata.gz: adc2dded1e8142e0fe2e0b877e1e3e00d76c2523fe50ea40b6d82dea8399bf2f1e05dec14405b2baf271f73f2b83d543e62e0d74c71349b419c72ce6278fae3c
7
+ data.tar.gz: 39d7f22f303ad19c9a17fc6ceee19e0f7d7a5396c1ea2b2fd8548bf1f505accd0722a69b08a226ef85b4d09567f7c0dac1ae917592b928dbad4870fbb1beb753
data/CHANGELOG CHANGED
@@ -1,8 +1,17 @@
1
- * 1.0.5 (05 Jun 2014)*
1
+ 1.1.0 (16 Mar 2015)
2
+
3
+ * Allow lambda literals in conditionals
4
+
5
+ 1.0.6 (16 Feb 2015)
6
+
7
+ * Support Rails 4.2
8
+
9
+ 1.0.5 (05 Jun 2014)
2
10
 
3
11
  * Support Rails 4.1
4
12
 
5
- * 0.0.4 (09 Jul 2013)*
13
+
14
+ 0.0.4 (09 Jul 2013)
6
15
 
7
16
  * use ActiveSupport::Concern
8
17
  * add allows_crud DSL method
data/README.md CHANGED
@@ -37,7 +37,7 @@ Access rules are defined inside models using a simple DSL and may be named as yo
37
37
  class Car < ActiveRecord::Base
38
38
  acts_as_authorization_object
39
39
 
40
- allows :to => :drive
40
+ allows to: :drive
41
41
  end
42
42
  ```
43
43
  will have model instances respond `true` if asked
@@ -50,7 +50,7 @@ car.allow?(:drive, user)
50
50
  Usually, you will want to restrict access based on some internal state of the model (the authorization object) or the user (the subject). This can be accomplished using the options `:if`, `:unless`, `:if_subject` and `:unless_subject`:
51
51
 
52
52
  ```ruby
53
- allows :to => :drive, :if => :license_plate_valid?, :if_subject => :has_drivers_license?
53
+ allows to: :drive, if: :license_plate_valid?, if_subject: :has_drivers_license?
54
54
  ```
55
55
 
56
56
  With this declaration, the car would allow any (ruby) object to drive, if the car has a valid license plate and the ruby object responds to `#has_drivers_license?` with a true value.
@@ -72,7 +72,7 @@ end
72
72
  class Car < ActiveRecord::Base
73
73
  acts_as_authorization_object
74
74
 
75
- allows :drivers, :to => :drive, :if_subject => :sober?
75
+ allows :drivers, to: :drive, if_subject: :sober?
76
76
  end
77
77
  ```
78
78
  This will allow sober drivers to drive, but will reject normal users and drunk drivers.
@@ -80,14 +80,14 @@ This will allow sober drivers to drive, but will reject normal users and drunk d
80
80
  If you do not care for the subject class, you may also write
81
81
 
82
82
  ```ruby
83
- allows_to :drive, :if => ...
83
+ allows_to :drive, if: ...
84
84
  ```
85
- which is the same as `allows :to => ...`
85
+ which is the same as `allows to: ...`
86
86
 
87
87
  Multiple access rights may be given in the same definition:
88
88
 
89
89
  ```ruby
90
- allows :drivers, :to => [:start, :drive], :if => ...
90
+ allows :drivers, to: [:start, :drive], if: ...
91
91
  ```
92
92
 
93
93
 
@@ -96,7 +96,7 @@ allows :drivers, :to => [:start, :drive], :if => ...
96
96
  It is also possible to pass a proc to any of the conditional options:
97
97
 
98
98
  ```ruby
99
- allows :drivers, :to => :start, :if => lambda { |driver| gasoline_level > 0 }
99
+ allows :drivers, to: :start, if: lambda { |driver| gasoline_level > 0 }
100
100
  ```
101
101
 
102
102
  Blocks passed to `:if` and `:unless` are evaluated inside the authorization object, while `:if_subject` and `:unless_subject` get evaluated inside the authorization subject (the user).
@@ -108,8 +108,8 @@ In most cases, you will want to restrict authorizations to authorized subjects o
108
108
 
109
109
  ```ruby
110
110
  class Image
111
- allows :users, :to => :view, :if => :publicly_accessible?, :allow_nil => true
112
- allows :users, :to => :view, :if_subject => lambda { |image| self.company_id == image.company_id }
111
+ allows :users, to: :view, if: :publicly_accessible?, allow_nil: true
112
+ allows :users, to: :view, if_subject: lambda { |image| self.company_id == image.company_id }
113
113
 
114
114
  def publicly_accessible?
115
115
  # implementation, or a simple attribute
@@ -126,7 +126,7 @@ There are three special accesses which limit creation, updating and destruction
126
126
  In the simplest form, the access to create, update and destroy would be granted regardless of the `authorization_subject`. This would be the default behaviour of ActiveRecord, where besides validations there is no restriction on these operations:
127
127
 
128
128
  ```ruby
129
- allows_to :create, :update, :destroy, :allow_nil => true
129
+ allows_to :create, :update, :destroy, allow_nil: true
130
130
  ```
131
131
 
132
132
  Say you have models for users and roles, and you want normal users not to be able to assign roles, but only admins:
@@ -135,8 +135,8 @@ Say you have models for users and roles, and you want normal users not to be abl
135
135
  class User < ActiveRecord::Base
136
136
  acts_as_authorization_subject
137
137
 
138
- has_many :user_roles, :dependent => :destroy
139
- has_many :roles, :through => :user_roles
138
+ has_many :user_roles, dependent: :destroy
139
+ has_many :roles, through: :user_roles
140
140
  end
141
141
 
142
142
 
@@ -149,7 +149,7 @@ class UserRole < ActiveRecord::Base
149
149
 
150
150
  acts_as_authorization_object
151
151
 
152
- allows :users, :to => [:create, :update, :destroy], :if_subject => :admin?
152
+ allows :users, to: [:create, :update, :destroy], if_subject: :admin?
153
153
  end
154
154
  ```
155
155
 
@@ -219,10 +219,10 @@ By default, access rules are inherited by subclasses of auth objects. Additional
219
219
 
220
220
  ```ruby
221
221
  class Foo < ActiveRecord::Base
222
- allows_to :view, :if => :visible?
222
+ allows_to :view, if: :visible?
223
223
  end
224
224
 
225
225
  class SubFoo < Foo
226
- allows_to :view, :exclusive => true
226
+ allows_to :view, exclusive: true
227
227
  end
228
228
  ```
@@ -23,7 +23,15 @@ module Maybee
23
23
  else
24
24
  receiver, argument = object, subject
25
25
  end
26
- result = cond.is_a?(Proc) ? receiver.instance_exec(argument, &cond) : receiver.send(cond)
26
+ result = if cond.is_a?(Proc)
27
+ if cond.arity == 1
28
+ receiver.instance_exec(argument, &cond)
29
+ else
30
+ receiver.instance_exec(&cond)
31
+ end
32
+ else
33
+ receiver.send(cond)
34
+ end
27
35
  (:if_subject == clause || :if == clause) ? result : !result
28
36
  end
29
37
  false
@@ -1,3 +1,3 @@
1
1
  module Maybee
2
- VERSION = '1.0.6'
2
+ VERSION = '1.2.0'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: maybee
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.6
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matthias Grosser
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-02-16 00:00:00.000000000 Z
11
+ date: 2015-03-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: i18n