reuser 0.2.0 → 0.2.1
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.
- data/README.md +24 -4
- data/lib/reuser/reuser.rb +5 -16
- data/spec/reuser/reuser.rb +1 -1
- metadata +2 -2
data/README.md
CHANGED
@@ -18,13 +18,33 @@
|
|
18
18
|
include ReUser
|
19
19
|
|
20
20
|
roles do
|
21
|
-
|
22
|
-
role
|
21
|
+
|
22
|
+
# declare a role with the can method, taking a list of actions.
|
23
|
+
role(:admin).can :read, :write, :execute
|
24
|
+
|
25
|
+
role :user do |usr| # pass a block, so you can
|
23
26
|
usr.can :read
|
24
|
-
|
25
|
-
|
27
|
+
|
28
|
+
# declare a role, then declare a conditional action with could.
|
29
|
+
# could takes a list of names, then assigns a test to them.
|
30
|
+
# You can then ask your model:
|
31
|
+
##usr.could?(:write, 'un-owned-file')
|
32
|
+
###=> false
|
33
|
+
# or
|
34
|
+
##usr.could?(:write, 'owned-file')
|
35
|
+
###=> true
|
36
|
+
# could? will pass the second argument as the block's argument'
|
37
|
+
|
38
|
+
usr.could :write do |file|
|
39
|
+
usr.owns? file
|
40
|
+
end
|
26
41
|
end
|
42
|
+
|
43
|
+
# Or you can declare a role with the name, followed by an array of names
|
27
44
|
role :writer, [:read, :write]
|
45
|
+
|
46
|
+
# Then, you can declare a default, accessible by storing :default as
|
47
|
+
# your model's role, it will point to original role.
|
28
48
|
default :user
|
29
49
|
end
|
30
50
|
end
|
data/lib/reuser/reuser.rb
CHANGED
@@ -34,35 +34,24 @@ module ReUser
|
|
34
34
|
end
|
35
35
|
subclass.class_eval do
|
36
36
|
|
37
|
-
def role(name = nil)
|
38
|
-
if name
|
39
|
-
if @@roles[name]
|
40
|
-
@role = @@roles[name]
|
41
|
-
else
|
42
|
-
raise NoRoleError, "No role #{name} defined for #{self}"
|
43
|
-
end
|
44
|
-
end
|
45
|
-
@role
|
46
|
-
end
|
47
|
-
|
48
37
|
def role?(name)
|
49
|
-
role == self.class.role(name)
|
38
|
+
@role == self.class.role(name)
|
50
39
|
end
|
51
40
|
|
52
41
|
def can?(name)
|
53
|
-
|
42
|
+
!!@role.can?(name)
|
54
43
|
end
|
55
44
|
|
56
45
|
def cant?(name)
|
57
|
-
|
46
|
+
!@role.can?(name)
|
58
47
|
end
|
59
48
|
|
60
49
|
def could?(name, obj)
|
61
|
-
role.could?(name, obj)
|
50
|
+
@role.could?(name, obj)
|
62
51
|
end
|
63
52
|
|
64
53
|
def couldnt?(name, obj)
|
65
|
-
|
54
|
+
!@role.could?(name, obj)
|
66
55
|
end
|
67
56
|
end
|
68
57
|
end
|
data/spec/reuser/reuser.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: reuser
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-10-
|
12
|
+
date: 2011-10-16 00:00:00.000000000Z
|
13
13
|
dependencies: []
|
14
14
|
description: ReUse is an Internal DSL for Ruby to create roles and manage actions.
|
15
15
|
email: isaacsanders@gmail.com
|