reuser 3.1.0 → 3.1.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/.gitignore +5 -0
- data/.travis.yml +13 -0
- data/Gemfile +11 -0
- data/LICENSE.txt +22 -0
- data/README.md +109 -0
- data/Rakefile +12 -0
- data/features/checking_permissions.feature +145 -0
- data/features/declaring_roles.feature +63 -0
- data/features/step_definitions/declaring_roles_steps.rb +33 -0
- data/features/step_definitions/differentiation_steps.rb +7 -0
- data/features/step_definitions/permission_steps.rb +19 -0
- data/features/support/env.rb +15 -0
- data/features/support/predicates.rb +7 -0
- data/lib/reuser/role.rb +9 -11
- data/lib/reuser/role_definition.rb +4 -2
- data/lib/reuser/version.rb +1 -4
- data/lib/reuser.rb +7 -5
- data/reuser.gemspec +19 -0
- data/spec/reuser/role_definition_spec.rb +0 -1
- data/spec/reuser/role_spec.rb +8 -21
- data/spec/spec_helper.rb +7 -0
- metadata +31 -6
data/.gitignore
ADDED
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2012 Isaac Sanders
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,109 @@
|
|
1
|
+
#ReUser [](http://travis-ci.org/isaacsanders/reuser)
|
2
|
+
|
3
|
+
##Purpose
|
4
|
+
|
5
|
+
Whenever you start a web app where a user has specific permissions, do you end
|
6
|
+
up writing your own solution or using something that has brain-bending
|
7
|
+
abstractions? If so, ReUser is the solution for you.
|
8
|
+
|
9
|
+
##Description
|
10
|
+
|
11
|
+
ReUser is an Internal DSL for Ruby to create roles and manage actions.
|
12
|
+
|
13
|
+
##Usage
|
14
|
+
|
15
|
+
Installing ReUser is easy:
|
16
|
+
|
17
|
+
gem install reuser
|
18
|
+
|
19
|
+
Now to incorporate it into a model:
|
20
|
+
|
21
|
+
```ruby
|
22
|
+
require 'reuser'
|
23
|
+
|
24
|
+
class User
|
25
|
+
include ReUser
|
26
|
+
|
27
|
+
roles do
|
28
|
+
|
29
|
+
# declare a role with the can method, taking a list of actions.
|
30
|
+
role(:admin).can :read, :write, :execute
|
31
|
+
|
32
|
+
role :user do |usr| # pass a block, so you can
|
33
|
+
usr.can :read
|
34
|
+
|
35
|
+
# declare a role, then declare a conditional action with could.
|
36
|
+
# could takes a list of names, then assigns a test to them.
|
37
|
+
# You can then ask your model:
|
38
|
+
usr.could?(:write, 'un-owned-file')
|
39
|
+
#=> false
|
40
|
+
# or
|
41
|
+
usr.could?(:write, 'owned-file')
|
42
|
+
#=> true
|
43
|
+
# could? will pass the second argument as the block's argument'
|
44
|
+
|
45
|
+
usr.could :write do |file|
|
46
|
+
usr.owns? file
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
# Or you can declare a role with the name, followed by an array of names
|
51
|
+
role :writer, [:read, :write]
|
52
|
+
|
53
|
+
# Then, you can declare a default, accessible by storing :default as
|
54
|
+
# your model's role, it will point to original role.
|
55
|
+
default :user
|
56
|
+
end
|
57
|
+
end
|
58
|
+
```
|
59
|
+
|
60
|
+
You can restrict the instances from doing things based on role:
|
61
|
+
|
62
|
+
```ruby
|
63
|
+
def administrate
|
64
|
+
if @user.role? :admin
|
65
|
+
administer
|
66
|
+
end
|
67
|
+
end
|
68
|
+
```
|
69
|
+
|
70
|
+
Or based on their actions:
|
71
|
+
|
72
|
+
```ruby
|
73
|
+
def do_something_risky
|
74
|
+
if @user.can?(:do_this)
|
75
|
+
do_it
|
76
|
+
else
|
77
|
+
tell_them_to_get_out!
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
def do_something_with_obj
|
82
|
+
if @user.could?(:write, file)
|
83
|
+
write file
|
84
|
+
else
|
85
|
+
raise 'Not your file!'
|
86
|
+
end
|
87
|
+
end
|
88
|
+
```
|
89
|
+
|
90
|
+
##Issues?
|
91
|
+
|
92
|
+
Please don't hesitate to open up an issue. You can even contribute! Which brings me to...
|
93
|
+
|
94
|
+
##Contributing!
|
95
|
+
|
96
|
+
This is open source, so I want others to help too. For now I have no plans on
|
97
|
+
adding too much more to this project, as far as functionality is concerned, but
|
98
|
+
don't let that get in your way of opening a request or forking the project and
|
99
|
+
adding something. I just ask that:
|
100
|
+
|
101
|
+
- You are polite about it.
|
102
|
+
- You test it.
|
103
|
+
- You explain it, or it is easy to read.
|
104
|
+
|
105
|
+
Following these will let us get along and make better software, quicker, and
|
106
|
+
with less bugs.(hypothetically)
|
107
|
+
|
108
|
+
I am still working on the final syntax, but we are getting closer. If you have
|
109
|
+
any suggestions on syntax, open a feature require
|
data/Rakefile
ADDED
@@ -0,0 +1,145 @@
|
|
1
|
+
Feature: Checking Permissions
|
2
|
+
In order to restrict my application
|
3
|
+
As a developer
|
4
|
+
I want to check permissions of my users
|
5
|
+
|
6
|
+
Scenario: Checking permissions on an empty role
|
7
|
+
Given the following class:
|
8
|
+
"""
|
9
|
+
class User
|
10
|
+
include ReUser
|
11
|
+
attr_reader :role
|
12
|
+
|
13
|
+
roles do
|
14
|
+
role :admin
|
15
|
+
end
|
16
|
+
|
17
|
+
def initialize role
|
18
|
+
@role = role
|
19
|
+
end
|
20
|
+
end
|
21
|
+
"""
|
22
|
+
When I create an "admin" user
|
23
|
+
And I ask if the user can read
|
24
|
+
Then I learn that they can't
|
25
|
+
|
26
|
+
Scenario: Checking permissions on a role with those permissions
|
27
|
+
Given the following class:
|
28
|
+
"""
|
29
|
+
class User
|
30
|
+
include ReUser
|
31
|
+
attr_reader :role
|
32
|
+
|
33
|
+
roles do
|
34
|
+
role :admin do
|
35
|
+
can :read
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def initialize role
|
40
|
+
@role = role
|
41
|
+
end
|
42
|
+
end
|
43
|
+
"""
|
44
|
+
When I create an "admin" user
|
45
|
+
And I ask if the user can read
|
46
|
+
Then I learn that they can
|
47
|
+
|
48
|
+
Scenario: Checking conditional permissions
|
49
|
+
Given the following class:
|
50
|
+
"""
|
51
|
+
class User
|
52
|
+
include ReUser
|
53
|
+
attr_reader :role
|
54
|
+
|
55
|
+
roles do
|
56
|
+
role :admin do
|
57
|
+
could :write do |language|
|
58
|
+
language == "English"
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
def initialize role
|
64
|
+
@role = role
|
65
|
+
end
|
66
|
+
end
|
67
|
+
"""
|
68
|
+
When I create an "admin" user
|
69
|
+
And I ask if the user could write "English"
|
70
|
+
Then I learn that they can
|
71
|
+
|
72
|
+
Scenario: Checking conditional permissions
|
73
|
+
Given the following class:
|
74
|
+
"""
|
75
|
+
class User
|
76
|
+
include ReUser
|
77
|
+
attr_reader :role
|
78
|
+
|
79
|
+
roles do
|
80
|
+
role :admin do
|
81
|
+
could :write do |language|
|
82
|
+
language == "English"
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
def initialize role
|
88
|
+
@role = role
|
89
|
+
end
|
90
|
+
end
|
91
|
+
"""
|
92
|
+
When I create an "admin" user
|
93
|
+
And I ask if the user could write "Japanese"
|
94
|
+
Then I learn that they can't
|
95
|
+
|
96
|
+
Scenario: Checking permissions with a predicate
|
97
|
+
Given the following class:
|
98
|
+
"""
|
99
|
+
class User
|
100
|
+
include ReUser
|
101
|
+
attr_reader :role
|
102
|
+
|
103
|
+
roles do
|
104
|
+
role :child do
|
105
|
+
could :read, &:old_enough?
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
def initialize role
|
110
|
+
@role = role
|
111
|
+
@age = 6
|
112
|
+
end
|
113
|
+
|
114
|
+
def old_enough?
|
115
|
+
@age > 5
|
116
|
+
end
|
117
|
+
end
|
118
|
+
"""
|
119
|
+
When I create a "child" user
|
120
|
+
And I ask if the user can read
|
121
|
+
Then I learn that they can
|
122
|
+
|
123
|
+
Scenario: Checking permissions without state
|
124
|
+
Given the following class:
|
125
|
+
"""
|
126
|
+
class User
|
127
|
+
include ReUser
|
128
|
+
attr_reader :role
|
129
|
+
|
130
|
+
roles do
|
131
|
+
role :child do
|
132
|
+
could :read do
|
133
|
+
true
|
134
|
+
end
|
135
|
+
end
|
136
|
+
end
|
137
|
+
|
138
|
+
def initialize role
|
139
|
+
@role = role
|
140
|
+
end
|
141
|
+
end
|
142
|
+
"""
|
143
|
+
When I create a "child" user
|
144
|
+
And I ask if the user can read
|
145
|
+
Then I learn that they can
|
@@ -0,0 +1,63 @@
|
|
1
|
+
Feature: Declaring Roles
|
2
|
+
In order to have simple role-based permissions
|
3
|
+
As a developer
|
4
|
+
I want to declare roles in my source code
|
5
|
+
|
6
|
+
Scenario: Declaring one role
|
7
|
+
Given the following class:
|
8
|
+
"""
|
9
|
+
class User
|
10
|
+
include ReUser
|
11
|
+
|
12
|
+
roles do
|
13
|
+
role :admin
|
14
|
+
end
|
15
|
+
end
|
16
|
+
"""
|
17
|
+
When I access "User.roles"
|
18
|
+
Then I should have an array of 1 role
|
19
|
+
|
20
|
+
Scenario: Declaring many roles
|
21
|
+
Given the following class:
|
22
|
+
"""
|
23
|
+
class User
|
24
|
+
include ReUser
|
25
|
+
|
26
|
+
roles do
|
27
|
+
role :admin
|
28
|
+
role :user
|
29
|
+
role :butcher
|
30
|
+
role :baker
|
31
|
+
role :candlestick_maker
|
32
|
+
end
|
33
|
+
end
|
34
|
+
"""
|
35
|
+
When I access "User.roles"
|
36
|
+
Then I should have an array of 5 roles
|
37
|
+
|
38
|
+
Scenario: Declaring roles outside of a block raises an error
|
39
|
+
Given the following class:
|
40
|
+
"""
|
41
|
+
class User
|
42
|
+
include ReUser
|
43
|
+
|
44
|
+
roles do
|
45
|
+
role :admin
|
46
|
+
end
|
47
|
+
end
|
48
|
+
"""
|
49
|
+
When I access "User.role(:user)"
|
50
|
+
Then I should get an error
|
51
|
+
|
52
|
+
Scenario: Declaring roles with an array of permissions
|
53
|
+
Given the following class:
|
54
|
+
"""
|
55
|
+
class User
|
56
|
+
include ReUser
|
57
|
+
|
58
|
+
roles do
|
59
|
+
role :admin, [:read, :write, :execute]
|
60
|
+
end
|
61
|
+
end
|
62
|
+
"""
|
63
|
+
Then I should know that an admin can read, write, and execute
|
@@ -0,0 +1,33 @@
|
|
1
|
+
Given /^the following class:$/ do |class_code|
|
2
|
+
eval class_code, binding, "feature_user_class"
|
3
|
+
end
|
4
|
+
|
5
|
+
When /^I access "([^"]*)"$/ do |access_code|
|
6
|
+
begin
|
7
|
+
@actual = eval access_code
|
8
|
+
rescue Exception => e
|
9
|
+
@actual = e
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
Then /^I should get an error$/ do
|
14
|
+
@actual.should be_kind_of Exception
|
15
|
+
end
|
16
|
+
|
17
|
+
Then /^I should know that an admin can read, write, and execute$/ do
|
18
|
+
[:read, :write, :execute].each do |permission|
|
19
|
+
User.role(:admin).should be_able_to permission
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
Then /^I should have an array of (\d+ roles?)$/ do |role_count|
|
24
|
+
@actual.should have(role_count).items
|
25
|
+
@actual.all? do |item|
|
26
|
+
item.should be_instance_of Symbol
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
Transform /(\d+) roles?/ do |role_count|
|
31
|
+
Integer(role_count)
|
32
|
+
end
|
33
|
+
|
@@ -0,0 +1,19 @@
|
|
1
|
+
When /^I ask if the user could write "([^"]*)"$/ do |language|
|
2
|
+
@expected = @user.could? :write, language
|
3
|
+
end
|
4
|
+
|
5
|
+
When /^I create an? "([^"]*)" user$/ do |role_name|
|
6
|
+
@user = User.new(role_name.to_sym)
|
7
|
+
end
|
8
|
+
|
9
|
+
When /^I ask if the user can read$/ do
|
10
|
+
@expected = !!(@user.could? :read)
|
11
|
+
end
|
12
|
+
|
13
|
+
Then /^I learn that they can't$/ do
|
14
|
+
@expected.should be_false
|
15
|
+
end
|
16
|
+
|
17
|
+
Then /^I learn that they can$/ do
|
18
|
+
@expected.should be_true
|
19
|
+
end
|
data/lib/reuser/role.rb
CHANGED
@@ -1,13 +1,6 @@
|
|
1
1
|
module ReUser
|
2
2
|
class Role
|
3
|
-
|
4
|
-
|
5
|
-
def permissions
|
6
|
-
@permissions.keys
|
7
|
-
end
|
8
|
-
|
9
|
-
def initialize name, permissions=[]
|
10
|
-
@name = name
|
3
|
+
def initialize *permissions
|
11
4
|
@permissions = {}
|
12
5
|
self.can *permissions
|
13
6
|
end
|
@@ -19,7 +12,7 @@ module ReUser
|
|
19
12
|
end
|
20
13
|
|
21
14
|
def can? permission
|
22
|
-
@permissions[permission].is_a?
|
15
|
+
@permissions.has_key?(permission) && @permissions[permission].is_a?(Proc)
|
23
16
|
end
|
24
17
|
|
25
18
|
def could permission, &block
|
@@ -27,8 +20,13 @@ module ReUser
|
|
27
20
|
@permissions[permission] = block
|
28
21
|
end
|
29
22
|
|
30
|
-
def could? permission, block_args
|
31
|
-
@permissions
|
23
|
+
def could? permission, *block_args
|
24
|
+
if @permissions.has_key?(permission)
|
25
|
+
@permissions[permission].call(*block_args)
|
26
|
+
else
|
27
|
+
false
|
28
|
+
end
|
32
29
|
end
|
30
|
+
alias_method :able_to?, :could?
|
33
31
|
end
|
34
32
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'reuser/role'
|
2
|
+
|
1
3
|
module ReUser
|
2
4
|
class RoleDefinition
|
3
5
|
def initialize(definition)
|
@@ -10,8 +12,8 @@ module ReUser
|
|
10
12
|
end
|
11
13
|
|
12
14
|
def role name, permissions=[], &block
|
13
|
-
role = ReUser::Role.new(
|
14
|
-
|
15
|
+
role = ReUser::Role.new(*permissions)
|
16
|
+
role.instance_eval &block if block_given?
|
15
17
|
@roles[name] = role
|
16
18
|
end
|
17
19
|
end
|
data/lib/reuser/version.rb
CHANGED
data/lib/reuser.rb
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
require 'reuser/role'
|
2
1
|
require 'reuser/role_definition'
|
3
2
|
require 'reuser/errors'
|
4
3
|
|
@@ -32,11 +31,14 @@ module ReUser
|
|
32
31
|
!can?(permission)
|
33
32
|
end
|
34
33
|
|
35
|
-
def could? permission, block_args
|
36
|
-
|
34
|
+
def could? permission, *block_args
|
35
|
+
if block_args.empty?
|
36
|
+
block_args << self
|
37
|
+
end
|
38
|
+
self.class.role(self.role).could? permission, *block_args
|
37
39
|
end
|
38
40
|
|
39
|
-
def couldnt? permission, block_args
|
40
|
-
!could?(permission, block_args)
|
41
|
+
def couldnt? permission, *block_args
|
42
|
+
!could?(permission, *block_args)
|
41
43
|
end
|
42
44
|
end
|
data/reuser.gemspec
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'reuser/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |gem|
|
7
|
+
gem.name = "reuser"
|
8
|
+
gem.version = ReUser::VERSION
|
9
|
+
gem.authors = ["Isaac Sanders"]
|
10
|
+
gem.email = ["isaac@isaacbfsanders.com"]
|
11
|
+
gem.description = %q{ReUser is a DSL for Ruby to create roles and manage actions.}
|
12
|
+
gem.summary = %q{An internal DSL for Ruby to make user role management simple.}
|
13
|
+
gem.homepage = "http://isaacbfsanders.com/reuser"
|
14
|
+
|
15
|
+
gem.files = `git ls-files`.split($/)
|
16
|
+
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
17
|
+
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
18
|
+
gem.require_paths = ["lib"]
|
19
|
+
end
|
data/spec/reuser/role_spec.rb
CHANGED
@@ -2,35 +2,22 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe ReUser::Role do
|
4
4
|
subject do
|
5
|
-
role = ReUser::Role.new
|
5
|
+
role = ReUser::Role.new
|
6
6
|
role.can(:read)
|
7
7
|
role
|
8
8
|
end
|
9
9
|
|
10
|
-
it 'is initialized with
|
11
|
-
role = ReUser::Role.new :
|
12
|
-
role.
|
13
|
-
role.
|
14
|
-
|
15
|
-
role = ReUser::Role.new :user
|
16
|
-
role.name.should == :user
|
17
|
-
role.permissions.should == []
|
18
|
-
|
19
|
-
role = ReUser::Role.new :user, [:read, :write]
|
20
|
-
role.name.should == :user
|
21
|
-
role.permissions.should =~ [:read, :write]
|
22
|
-
end
|
23
|
-
|
24
|
-
context 'shares its name and permissions' do
|
25
|
-
its(:name) { should === :admin }
|
26
|
-
its(:permissions) { should === [:read] }
|
10
|
+
it 'is initialized with an optional array of permissions' do
|
11
|
+
role = ReUser::Role.new :read, :write
|
12
|
+
role.should be_able_to :read
|
13
|
+
role.should be_able_to :write
|
27
14
|
end
|
28
15
|
|
29
16
|
it 'permissions are added and checked with #can and #can?' do
|
30
|
-
subject.
|
31
|
-
subject.
|
17
|
+
subject.should be_able_to :read
|
18
|
+
subject.should_not be_able_to :write
|
32
19
|
subject.can(:write)
|
33
|
-
subject.
|
20
|
+
subject.should be_able_to :write
|
34
21
|
end
|
35
22
|
|
36
23
|
it 'you need to supply #could with a test block' do
|
data/spec/spec_helper.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: 3.1.
|
4
|
+
version: 3.1.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,19 +9,34 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-08-
|
12
|
+
date: 2012-08-15 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
|
-
description:
|
15
|
-
email:
|
14
|
+
description: ReUser is a DSL for Ruby to create roles and manage actions.
|
15
|
+
email:
|
16
|
+
- isaac@isaacbfsanders.com
|
16
17
|
executables: []
|
17
18
|
extensions: []
|
18
19
|
extra_rdoc_files: []
|
19
20
|
files:
|
21
|
+
- .gitignore
|
22
|
+
- .travis.yml
|
23
|
+
- Gemfile
|
24
|
+
- LICENSE.txt
|
25
|
+
- README.md
|
26
|
+
- Rakefile
|
27
|
+
- features/checking_permissions.feature
|
28
|
+
- features/declaring_roles.feature
|
29
|
+
- features/step_definitions/declaring_roles_steps.rb
|
30
|
+
- features/step_definitions/differentiation_steps.rb
|
31
|
+
- features/step_definitions/permission_steps.rb
|
32
|
+
- features/support/env.rb
|
33
|
+
- features/support/predicates.rb
|
34
|
+
- lib/reuser.rb
|
20
35
|
- lib/reuser/errors.rb
|
21
36
|
- lib/reuser/role.rb
|
22
37
|
- lib/reuser/role_definition.rb
|
23
38
|
- lib/reuser/version.rb
|
24
|
-
-
|
39
|
+
- reuser.gemspec
|
25
40
|
- spec/reuser/class_spec.rb
|
26
41
|
- spec/reuser/instances_spec.rb
|
27
42
|
- spec/reuser/role_definition_spec.rb
|
@@ -41,13 +56,16 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
41
56
|
version: '0'
|
42
57
|
segments:
|
43
58
|
- 0
|
44
|
-
hash: -
|
59
|
+
hash: -1602940265211324019
|
45
60
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
46
61
|
none: false
|
47
62
|
requirements:
|
48
63
|
- - ! '>='
|
49
64
|
- !ruby/object:Gem::Version
|
50
65
|
version: '0'
|
66
|
+
segments:
|
67
|
+
- 0
|
68
|
+
hash: -1602940265211324019
|
51
69
|
requirements: []
|
52
70
|
rubyforge_project:
|
53
71
|
rubygems_version: 1.8.24
|
@@ -55,6 +73,13 @@ signing_key:
|
|
55
73
|
specification_version: 3
|
56
74
|
summary: An internal DSL for Ruby to make user role management simple.
|
57
75
|
test_files:
|
76
|
+
- features/checking_permissions.feature
|
77
|
+
- features/declaring_roles.feature
|
78
|
+
- features/step_definitions/declaring_roles_steps.rb
|
79
|
+
- features/step_definitions/differentiation_steps.rb
|
80
|
+
- features/step_definitions/permission_steps.rb
|
81
|
+
- features/support/env.rb
|
82
|
+
- features/support/predicates.rb
|
58
83
|
- spec/reuser/class_spec.rb
|
59
84
|
- spec/reuser/instances_spec.rb
|
60
85
|
- spec/reuser/role_definition_spec.rb
|