rolify 3.4.0 → 3.4.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/.travis.yml +32 -16
- data/CHANGELOG.rdoc +6 -0
- data/Gemfile +4 -2
- data/README.md +1 -1
- data/Rakefile +6 -6
- data/gemfiles/Gemfile.rails-3.2 +14 -15
- data/gemfiles/Gemfile.rails-4.0 +21 -22
- data/gemfiles/Gemfile.rails-4.1 +37 -0
- data/lib/generators/active_record/rolify_generator.rb +2 -2
- data/lib/rolify.rb +6 -0
- data/lib/rolify/adapters/active_record/resource_adapter.rb +25 -4
- data/lib/rolify/adapters/base.rb +4 -0
- data/lib/rolify/adapters/mongoid/resource_adapter.rb +18 -1
- data/lib/rolify/configure.rb +6 -2
- data/lib/rolify/resource.rb +12 -9
- data/lib/rolify/role.rb +8 -2
- data/lib/rolify/version.rb +1 -1
- data/rolify.gemspec +15 -15
- data/spec/rolify/config_spec.rb +6 -7
- data/spec/rolify/resource_spec.rb +22 -6
- data/spec/rolify/shared_contexts.rb +1 -0
- data/spec/rolify/shared_examples/shared_examples_for_callbacks.rb +4 -4
- data/spec/rolify/shared_examples/shared_examples_for_dynamic.rb +27 -27
- data/spec/rolify/shared_examples/shared_examples_for_finders.rb +4 -0
- data/spec/rolify/shared_examples/shared_examples_for_has_all_roles.rb +29 -29
- data/spec/rolify/shared_examples/shared_examples_for_has_any_role.rb +32 -32
- data/spec/rolify/shared_examples/shared_examples_for_has_role.rb +38 -38
- data/spec/rolify/shared_examples/shared_examples_for_only_has_role.rb +44 -44
- data/spec/rolify/shared_examples/shared_examples_for_roles.rb +21 -15
- data/spec/spec_helper.rb +26 -3
- data/spec/support/adapters/active_record.rb +12 -4
- data/spec/support/adapters/mongoid.rb +8 -0
- data/spec/support/data.rb +4 -1
- data/spec/support/schema.rb +4 -0
- metadata +48 -33
- checksums.yaml +0 -7
@@ -13,13 +13,14 @@ shared_examples_for Rolify::Role do
|
|
13
13
|
Rolify.dynamic_shortcuts = false
|
14
14
|
rolify_options = { :role_cname => role_class.to_s }
|
15
15
|
rolify_options[:role_join_table_name] = join_table if defined? join_table
|
16
|
-
user_class.rolify rolify_options
|
16
|
+
silence_warnings { user_class.rolify rolify_options }
|
17
17
|
role_class.destroy_all
|
18
18
|
Forum.resourcify :roles, :role_cname => role_class.to_s
|
19
19
|
Group.resourcify :roles, :role_cname => role_class.to_s
|
20
|
+
Organization.resourcify :roles, :role_cname => role_class.to_s
|
20
21
|
end
|
21
22
|
|
22
|
-
context "in the Instance level" do
|
23
|
+
context "in the Instance level" do
|
23
24
|
before(:all) do
|
24
25
|
admin = user_class.first
|
25
26
|
admin.add_role :admin
|
@@ -32,7 +33,7 @@ shared_examples_for Rolify::Role do
|
|
32
33
|
it { should respond_to(method_alias.to_sym).with(1).arguments }
|
33
34
|
it { should respond_to(method_alias.to_sym).with(2).arguments }
|
34
35
|
end
|
35
|
-
|
36
|
+
|
36
37
|
it { should respond_to(:has_role?).with(1).arguments }
|
37
38
|
it { should respond_to(:has_role?).with(2).arguments }
|
38
39
|
|
@@ -49,18 +50,18 @@ shared_examples_for Rolify::Role do
|
|
49
50
|
|
50
51
|
it { should_not respond_to(:is_admin?) }
|
51
52
|
it { should_not respond_to(:is_moderator_of?) }
|
52
|
-
|
53
|
-
describe "#has_role" do
|
53
|
+
|
54
|
+
describe "#has_role" do
|
54
55
|
it_should_behave_like "#add_role_examples", "String", :to_s
|
55
56
|
it_should_behave_like "#add_role_examples", "Symbol", :to_sym
|
56
57
|
end
|
57
58
|
|
58
|
-
describe "#has_role?" do
|
59
|
+
describe "#has_role?" do
|
59
60
|
it_should_behave_like "#has_role?_examples", "String", :to_s
|
60
61
|
it_should_behave_like "#has_role?_examples", "Symbol", :to_sym
|
61
62
|
end
|
62
|
-
|
63
|
-
describe "#only_has_role?" do
|
63
|
+
|
64
|
+
describe "#only_has_role?" do
|
64
65
|
it_should_behave_like "#only_has_role?_examples", "String", :to_s
|
65
66
|
it_should_behave_like "#only_has_role?_examples", "Symbol", :to_sym
|
66
67
|
end
|
@@ -80,7 +81,7 @@ shared_examples_for Rolify::Role do
|
|
80
81
|
it_should_behave_like "#remove_role_examples", "Symbol", :to_sym
|
81
82
|
end
|
82
83
|
end
|
83
|
-
|
84
|
+
|
84
85
|
context "with a new instance" do
|
85
86
|
let(:user) { user_class.new }
|
86
87
|
|
@@ -90,13 +91,18 @@ shared_examples_for Rolify::Role do
|
|
90
91
|
end
|
91
92
|
|
92
93
|
subject { user }
|
93
|
-
|
94
|
+
|
94
95
|
it { should have_role :admin }
|
95
|
-
it { should have_role :
|
96
|
-
it {
|
97
|
-
|
98
|
-
|
99
|
-
|
96
|
+
# it { should have_role :admin, Forum }
|
97
|
+
# it { should have_role :admin, :any }
|
98
|
+
# it { should have_role :moderator, Forum.first }
|
99
|
+
# it { should have_role :moderator, :any }
|
100
|
+
# it { should_not have_role :moderator }
|
101
|
+
# it { should_not have_role :moderator, Forum }
|
102
|
+
it { subject.has_any_role?(:admin).should be_truthy }
|
103
|
+
end
|
104
|
+
|
105
|
+
context "on the Class level ", :scope => :mixed do
|
100
106
|
it_should_behave_like :finders, "String", :to_s
|
101
107
|
it_should_behave_like :finders, "Symbol", :to_sym
|
102
108
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -4,18 +4,33 @@ require "bundler/setup"
|
|
4
4
|
require 'rolify'
|
5
5
|
require 'rolify/matchers'
|
6
6
|
require 'rails'
|
7
|
-
|
7
|
+
begin
|
8
|
+
require 'its'
|
9
|
+
rescue LoadError
|
10
|
+
end
|
8
11
|
require 'coveralls'
|
9
12
|
Coveralls.wear_merged!
|
10
13
|
|
11
14
|
ENV['ADAPTER'] ||= 'active_record'
|
12
15
|
|
13
|
-
|
16
|
+
begin
|
17
|
+
load File.dirname(__FILE__) + "/support/adapters/#{ENV['ADAPTER']}.rb"
|
18
|
+
rescue NameError => e
|
19
|
+
if e.message =~ /uninitialized constant RSpec::Matchers::BuiltIn::MatchArray/
|
20
|
+
RSpec::Matchers::OperatorMatcher.register(
|
21
|
+
ActiveRecord::Relation, '=~', RSpec::Matchers::BuiltIn::MatchArray)
|
22
|
+
end
|
23
|
+
end
|
14
24
|
load File.dirname(__FILE__) + '/support/data.rb'
|
15
25
|
|
26
|
+
begin
|
27
|
+
require 'pry'
|
28
|
+
rescue LoadError
|
29
|
+
end
|
30
|
+
|
16
31
|
def reset_defaults
|
17
32
|
Rolify.use_defaults
|
18
|
-
Rolify.use_mongoid if ENV['ADAPTER'] ==
|
33
|
+
Rolify.use_mongoid if ENV['ADAPTER'] == 'mongoid'
|
19
34
|
end
|
20
35
|
|
21
36
|
def provision_user(user, roles)
|
@@ -28,3 +43,11 @@ def provision_user(user, roles)
|
|
28
43
|
end
|
29
44
|
user
|
30
45
|
end
|
46
|
+
|
47
|
+
def silence_warnings(&block)
|
48
|
+
warn_level = $VERBOSE
|
49
|
+
$VERBOSE = nil
|
50
|
+
result = block.call
|
51
|
+
$VERBOSE = warn_level
|
52
|
+
result
|
53
|
+
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'active_record'
|
2
2
|
|
3
|
-
RSpec::Matchers::OperatorMatcher.register(ActiveRecord::Relation, '=~', RSpec::Matchers::BuiltIn::MatchArray)
|
3
|
+
RSpec::Matchers::BuiltIn::OperatorMatcher.register(ActiveRecord::Relation, '=~', RSpec::Matchers::BuiltIn::MatchArray)
|
4
4
|
ActiveRecord::Base.establish_connection(:adapter => "sqlite3", :database => ":memory:")
|
5
5
|
ActiveRecord::Base.extend Rolify
|
6
6
|
|
@@ -41,7 +41,7 @@ module Admin
|
|
41
41
|
def self.table_name_prefix
|
42
42
|
'admin_'
|
43
43
|
end
|
44
|
-
|
44
|
+
|
45
45
|
class Moderator < ActiveRecord::Base
|
46
46
|
rolify :role_cname => "Admin::Right", :role_join_table_name => "moderators_rights"
|
47
47
|
end
|
@@ -51,7 +51,7 @@ module Admin
|
|
51
51
|
belongs_to :resource, :polymorphic => true
|
52
52
|
|
53
53
|
extend Rolify::Adapter::Scopes
|
54
|
-
end
|
54
|
+
end
|
55
55
|
end
|
56
56
|
|
57
57
|
|
@@ -71,6 +71,14 @@ end
|
|
71
71
|
class Team < ActiveRecord::Base
|
72
72
|
#resourcify done during specs setup to be able to use custom user classes
|
73
73
|
self.primary_key = "team_code"
|
74
|
-
|
74
|
+
|
75
75
|
default_scope { order(:team_code) }
|
76
|
+
end
|
77
|
+
|
78
|
+
class Organization < ActiveRecord::Base
|
79
|
+
|
80
|
+
end
|
81
|
+
|
82
|
+
class Company < Organization
|
83
|
+
|
76
84
|
end
|
data/spec/support/data.rb
CHANGED
@@ -22,4 +22,7 @@ Group.create(:name => "group 1")
|
|
22
22
|
Group.create(:name => "group 2")
|
23
23
|
|
24
24
|
Team.create(:team_code => "1", :name => "PSG")
|
25
|
-
Team.create(:team_code => "2", :name => "MU")
|
25
|
+
Team.create(:team_code => "2", :name => "MU")
|
26
|
+
|
27
|
+
Organization.create
|
28
|
+
Company.create
|
data/spec/support/schema.rb
CHANGED
metadata
CHANGED
@@ -1,99 +1,112 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rolify
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.4.
|
4
|
+
version: 3.4.1
|
5
|
+
prerelease:
|
5
6
|
platform: ruby
|
6
7
|
authors:
|
7
8
|
- Florent Monbillard
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date: 2014-
|
12
|
+
date: 2014-09-08 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
15
|
name: ammeter
|
15
16
|
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
16
18
|
requirements:
|
17
|
-
- -
|
19
|
+
- - ~>
|
18
20
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
21
|
+
version: 1.1.2
|
20
22
|
type: :development
|
21
23
|
prerelease: false
|
22
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
23
26
|
requirements:
|
24
|
-
- -
|
27
|
+
- - ~>
|
25
28
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
29
|
+
version: 1.1.2
|
27
30
|
- !ruby/object:Gem::Dependency
|
28
31
|
name: rake
|
29
32
|
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
30
34
|
requirements:
|
31
|
-
- -
|
35
|
+
- - ~>
|
32
36
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
37
|
+
version: 10.3.2
|
34
38
|
type: :development
|
35
39
|
prerelease: false
|
36
40
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
37
42
|
requirements:
|
38
|
-
- -
|
43
|
+
- - ~>
|
39
44
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
45
|
+
version: 10.3.2
|
41
46
|
- !ruby/object:Gem::Dependency
|
42
47
|
name: rspec
|
43
48
|
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
44
50
|
requirements:
|
45
|
-
- -
|
51
|
+
- - '='
|
46
52
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
53
|
+
version: 2.99.0
|
48
54
|
type: :development
|
49
55
|
prerelease: false
|
50
56
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
51
58
|
requirements:
|
52
|
-
- -
|
59
|
+
- - '='
|
53
60
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
61
|
+
version: 2.99.0
|
55
62
|
- !ruby/object:Gem::Dependency
|
56
63
|
name: rspec-rails
|
57
64
|
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
58
66
|
requirements:
|
59
|
-
- -
|
67
|
+
- - '='
|
60
68
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
69
|
+
version: 2.99.0
|
62
70
|
type: :development
|
63
71
|
prerelease: false
|
64
72
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
65
74
|
requirements:
|
66
|
-
- -
|
75
|
+
- - '='
|
67
76
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
77
|
+
version: 2.99.0
|
69
78
|
- !ruby/object:Gem::Dependency
|
70
79
|
name: bundler
|
71
80
|
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
72
82
|
requirements:
|
73
|
-
- -
|
83
|
+
- - ~>
|
74
84
|
- !ruby/object:Gem::Version
|
75
|
-
version:
|
85
|
+
version: 1.6.2
|
76
86
|
type: :development
|
77
87
|
prerelease: false
|
78
88
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
79
90
|
requirements:
|
80
|
-
- -
|
91
|
+
- - ~>
|
81
92
|
- !ruby/object:Gem::Version
|
82
|
-
version:
|
93
|
+
version: 1.6.2
|
83
94
|
- !ruby/object:Gem::Dependency
|
84
95
|
name: fuubar
|
85
96
|
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
86
98
|
requirements:
|
87
|
-
- -
|
99
|
+
- - ~>
|
88
100
|
- !ruby/object:Gem::Version
|
89
|
-
version:
|
101
|
+
version: 1.3.3
|
90
102
|
type: :development
|
91
103
|
prerelease: false
|
92
104
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
93
106
|
requirements:
|
94
|
-
- -
|
107
|
+
- - ~>
|
95
108
|
- !ruby/object:Gem::Version
|
96
|
-
version:
|
109
|
+
version: 1.3.3
|
97
110
|
description: Very simple Roles library without any authorization enforcement supporting
|
98
111
|
scope on resource objects (instance or class). Supports ActiveRecord and Mongoid
|
99
112
|
ORMs.
|
@@ -103,8 +116,8 @@ executables: []
|
|
103
116
|
extensions: []
|
104
117
|
extra_rdoc_files: []
|
105
118
|
files:
|
106
|
-
-
|
107
|
-
-
|
119
|
+
- .gitignore
|
120
|
+
- .travis.yml
|
108
121
|
- CHANGELOG.rdoc
|
109
122
|
- Gemfile
|
110
123
|
- LICENSE
|
@@ -113,6 +126,7 @@ files:
|
|
113
126
|
- UPGRADE.rdoc
|
114
127
|
- gemfiles/Gemfile.rails-3.2
|
115
128
|
- gemfiles/Gemfile.rails-4.0
|
129
|
+
- gemfiles/Gemfile.rails-4.1
|
116
130
|
- lib/generators/active_record/rolify_generator.rb
|
117
131
|
- lib/generators/active_record/templates/README
|
118
132
|
- lib/generators/active_record/templates/migration.rb
|
@@ -174,26 +188,27 @@ files:
|
|
174
188
|
homepage: http://eppo.github.com/rolify/
|
175
189
|
licenses:
|
176
190
|
- MIT
|
177
|
-
metadata: {}
|
178
191
|
post_install_message:
|
179
192
|
rdoc_options: []
|
180
193
|
require_paths:
|
181
194
|
- lib
|
182
195
|
required_ruby_version: !ruby/object:Gem::Requirement
|
196
|
+
none: false
|
183
197
|
requirements:
|
184
|
-
- -
|
198
|
+
- - ! '>='
|
185
199
|
- !ruby/object:Gem::Version
|
186
200
|
version: '0'
|
187
201
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
202
|
+
none: false
|
188
203
|
requirements:
|
189
|
-
- -
|
204
|
+
- - ! '>='
|
190
205
|
- !ruby/object:Gem::Version
|
191
206
|
version: '0'
|
192
207
|
requirements: []
|
193
208
|
rubyforge_project: rolify
|
194
|
-
rubygems_version:
|
209
|
+
rubygems_version: 1.8.23
|
195
210
|
signing_key:
|
196
|
-
specification_version:
|
211
|
+
specification_version: 3
|
197
212
|
summary: Roles library with resource scoping
|
198
213
|
test_files:
|
199
214
|
- spec/README.rdoc
|
checksums.yaml
DELETED
@@ -1,7 +0,0 @@
|
|
1
|
-
---
|
2
|
-
SHA1:
|
3
|
-
metadata.gz: 0230aba90b592f3e2873858db202652f0610e63a
|
4
|
-
data.tar.gz: 213155ee533962044ebe70808910f6a27fb40a35
|
5
|
-
SHA512:
|
6
|
-
metadata.gz: 1ac7b0db9d222976eea090aa5fc8f91e4861e61175385316625e4d4cd85b11844f6b61013f655735895380e7fa908f629acda1f6a3dc8704837ea58d295f1703
|
7
|
-
data.tar.gz: 2f7a94b6bef880b5bad088fb66b5623677a631a8d1b0371f3f942fc821054a8807b1b1d622232f63548b841d1245bb8495b004dbb0a25b008f90f8c5e8d0f035
|