reuser 0.2.2 → 1.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.
- data/Rakefile +5 -5
- data/lib/reuser/reuser.rb +8 -21
- data/lib/reuser/role.rb +9 -6
- data/spec/reuser/{reuser.rb → reuser_spec.rb} +3 -35
- data/spec/reuser/test_reuser.rb +22 -0
- metadata +7 -5
data/Rakefile
CHANGED
@@ -16,9 +16,9 @@ end
|
|
16
16
|
desc 'make (build and install the gem from gemspec)'
|
17
17
|
task :make => [:build, :install]
|
18
18
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
sh "rspec #{file}"
|
23
|
-
end
|
19
|
+
require 'rspec/core/rake_task'
|
20
|
+
RSpec::Core::RakeTask.new(:spec) do |t|
|
21
|
+
t.rspec_opts = '--color'
|
24
22
|
end
|
23
|
+
|
24
|
+
task :default => :spec
|
data/lib/reuser/reuser.rb
CHANGED
@@ -6,7 +6,6 @@ module ReUser
|
|
6
6
|
instance_eval do
|
7
7
|
def included(subclass)
|
8
8
|
subclass.instance_eval do
|
9
|
-
@@roles = {}
|
10
9
|
def roles(&block)
|
11
10
|
@@roles ||= {}
|
12
11
|
yield if block
|
@@ -23,35 +22,23 @@ module ReUser
|
|
23
22
|
end
|
24
23
|
role_name
|
25
24
|
end
|
26
|
-
|
27
|
-
def default(name = nil)
|
28
|
-
if name
|
29
|
-
@@roles[:default] = @@roles[name]
|
30
|
-
else
|
31
|
-
@@roles[:default]
|
32
|
-
end
|
33
|
-
end
|
34
25
|
end
|
35
26
|
subclass.class_eval do
|
36
27
|
|
37
|
-
def
|
38
|
-
|
39
|
-
end
|
40
|
-
|
41
|
-
def can?(name)
|
42
|
-
!!@role.can?(name)
|
28
|
+
def can?(action)
|
29
|
+
!!@role.can?(action)
|
43
30
|
end
|
44
31
|
|
45
|
-
def cant?(
|
46
|
-
!@role.can?(
|
32
|
+
def cant?(action)
|
33
|
+
!@role.can?(action)
|
47
34
|
end
|
48
35
|
|
49
|
-
def could?(
|
50
|
-
|
36
|
+
def could?(action, obj)
|
37
|
+
!!@role.could?(action, obj)
|
51
38
|
end
|
52
39
|
|
53
|
-
def couldnt?(
|
54
|
-
!@role.could?(
|
40
|
+
def couldnt?(action, obj)
|
41
|
+
!@role.could?(action, obj)
|
55
42
|
end
|
56
43
|
end
|
57
44
|
end
|
data/lib/reuser/role.rb
CHANGED
@@ -2,16 +2,13 @@ require_relative('../reuser')
|
|
2
2
|
|
3
3
|
module ReUser
|
4
4
|
class Role
|
5
|
-
attr_reader :actions
|
6
|
-
|
7
5
|
def initialize(name)
|
6
|
+
@name = name
|
8
7
|
@actions = {}
|
9
8
|
end
|
10
9
|
|
11
10
|
def can(*names)
|
12
|
-
names
|
13
|
-
action(name)
|
14
|
-
end
|
11
|
+
actions(*names)
|
15
12
|
end
|
16
13
|
|
17
14
|
def can?(name)
|
@@ -25,7 +22,13 @@ module ReUser
|
|
25
22
|
end
|
26
23
|
|
27
24
|
def could?(name, data)
|
28
|
-
|
25
|
+
if actions[name]
|
26
|
+
if actions[name].is_a?(Proc)
|
27
|
+
actions[name].call(data)
|
28
|
+
else
|
29
|
+
true
|
30
|
+
end
|
31
|
+
end
|
29
32
|
end
|
30
33
|
|
31
34
|
private
|
@@ -1,36 +1,4 @@
|
|
1
|
-
|
2
|
-
require 'pry'
|
3
|
-
require_relative '../reuser'
|
4
|
-
|
5
|
-
class TestReUser
|
6
|
-
include ReUser
|
7
|
-
|
8
|
-
roles do
|
9
|
-
role(:admin).can(:read, :write, :execute)
|
10
|
-
role(:user) do |usr|
|
11
|
-
usr.can :read
|
12
|
-
|
13
|
-
usr.could :execute, :read do |obj|
|
14
|
-
obj == 1
|
15
|
-
end
|
16
|
-
end
|
17
|
-
role :writer, :write
|
18
|
-
role :sysadmin, [:write, :execute]
|
19
|
-
default(:user)
|
20
|
-
end
|
21
|
-
|
22
|
-
def initialize(name = :default)
|
23
|
-
@role = TestReUser.role(name)
|
24
|
-
end
|
25
|
-
end
|
26
|
-
REUSER_METHODS = [:roles,
|
27
|
-
:role,
|
28
|
-
:role?,
|
29
|
-
:default,
|
30
|
-
:can?,
|
31
|
-
:cant?,
|
32
|
-
:could?,
|
33
|
-
:couldnt?].sort
|
1
|
+
require_relative 'test_reuser'
|
34
2
|
|
35
3
|
describe TestReUser do
|
36
4
|
context "has included the ReUser module" do
|
@@ -46,9 +14,9 @@ describe TestReUser do
|
|
46
14
|
|
47
15
|
context "has defined the :admin and :user roles," do
|
48
16
|
context "is instantiated as test_ru" do
|
49
|
-
context "
|
17
|
+
context "with role :user" do
|
50
18
|
before do
|
51
|
-
@test_ru = TestReUser.new
|
19
|
+
@test_ru = TestReUser.new(:user)
|
52
20
|
end
|
53
21
|
context " using the default role" do
|
54
22
|
it "should not be able to write" do
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require_relative '../reuser'
|
2
|
+
|
3
|
+
class TestReUser
|
4
|
+
include ReUser
|
5
|
+
|
6
|
+
roles do
|
7
|
+
role(:admin).can(:read, :write, :execute)
|
8
|
+
role(:user) do |usr|
|
9
|
+
usr.can :read
|
10
|
+
|
11
|
+
usr.could :execute do |obj|
|
12
|
+
obj == 1
|
13
|
+
end
|
14
|
+
end
|
15
|
+
role :writer, :write
|
16
|
+
role :sysadmin, [:write, :execute]
|
17
|
+
end
|
18
|
+
|
19
|
+
def initialize(name)
|
20
|
+
@role = TestReUser.role(name)
|
21
|
+
end
|
22
|
+
end
|
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.
|
4
|
+
version: 1.0.0
|
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-
|
12
|
+
date: 2011-12-25 00:00:00.000000000 Z
|
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
|
@@ -23,7 +23,8 @@ files:
|
|
23
23
|
- Rakefile
|
24
24
|
- README.md
|
25
25
|
- spec/reuser.rb
|
26
|
-
- spec/reuser/
|
26
|
+
- spec/reuser/test_reuser.rb
|
27
|
+
- spec/reuser/reuser_spec.rb
|
27
28
|
homepage: http://isaacsanders.github.com/reuser
|
28
29
|
licenses: []
|
29
30
|
post_install_message:
|
@@ -44,10 +45,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
44
45
|
version: '0'
|
45
46
|
requirements: []
|
46
47
|
rubyforge_project:
|
47
|
-
rubygems_version: 1.8.
|
48
|
+
rubygems_version: 1.8.6
|
48
49
|
signing_key:
|
49
50
|
specification_version: 3
|
50
51
|
summary: An internal DSL for Ruby to make user role management simple.
|
51
52
|
test_files:
|
52
53
|
- spec/reuser.rb
|
53
|
-
- spec/reuser/
|
54
|
+
- spec/reuser/test_reuser.rb
|
55
|
+
- spec/reuser/reuser_spec.rb
|