rolify 3.2.0 → 3.3.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.
- checksums.yaml +7 -0
- data/.gitignore +2 -0
- data/.travis.yml +13 -10
- data/CHANGELOG.rdoc +18 -0
- data/Gemfile +20 -3
- data/README.md +91 -73
- data/Rakefile +27 -2
- data/UPGRADE.rdoc +22 -0
- data/gemfiles/Gemfile.rails-3.2 +21 -0
- data/gemfiles/Gemfile.rails-4.0 +27 -0
- data/lib/generators/active_record/rolify_generator.rb +50 -0
- data/lib/generators/active_record/templates/README +8 -0
- data/lib/generators/active_record/templates/migration.rb +19 -0
- data/lib/generators/mongoid/rolify_generator.rb +51 -0
- data/lib/generators/mongoid/templates/README-mongoid +4 -0
- data/lib/generators/rolify/rolify_generator.rb +35 -0
- data/lib/generators/rolify/{role/templates/README-mongoid → templates/README} +1 -5
- data/lib/generators/rolify/{role/templates → templates}/initializer.rb +2 -2
- data/lib/generators/rolify/templates/role-active_record.rb +11 -0
- data/lib/generators/rolify/{role/templates → templates}/role-mongoid.rb +0 -2
- data/lib/generators/rolify/user_generator.rb +39 -0
- data/lib/rolify/adapters/active_record/resource_adapter.rb +8 -7
- data/lib/rolify/adapters/active_record/role_adapter.rb +17 -12
- data/lib/rolify/adapters/base.rb +1 -1
- data/lib/rolify/adapters/mongoid/resource_adapter.rb +2 -2
- data/lib/rolify/adapters/mongoid/role_adapter.rb +24 -14
- data/lib/rolify/configure.rb +16 -1
- data/lib/rolify/finders.rb +17 -16
- data/lib/rolify/matchers.rb +13 -0
- data/lib/rolify/railtie.rb +1 -1
- data/lib/rolify/resource.rb +7 -2
- data/lib/rolify/role.rb +5 -7
- data/lib/rolify/version.rb +1 -1
- data/lib/rolify.rb +21 -15
- data/rolify.gemspec +5 -11
- data/spec/README.rdoc +24 -0
- data/spec/generators/rolify/{role/role_generator_spec.rb → rolify_activerecord_generator_spec.rb} +49 -39
- data/spec/generators/rolify/rolify_mongoid_generator_spec.rb +112 -0
- data/spec/generators_helper.rb +21 -0
- data/spec/rolify/custom_spec.rb +10 -17
- data/spec/rolify/matchers_spec.rb +24 -0
- data/spec/rolify/namespace_spec.rb +24 -0
- data/spec/rolify/resource_spec.rb +56 -31
- data/spec/rolify/resourcifed_and_rolifed_spec.rb +24 -0
- data/spec/rolify/role_spec.rb +9 -16
- data/spec/rolify/shared_contexts.rb +9 -3
- data/spec/rolify/shared_examples/shared_examples_for_add_role.rb +2 -2
- data/spec/rolify/shared_examples/shared_examples_for_callbacks.rb +12 -4
- data/spec/rolify/shared_examples/shared_examples_for_dynamic.rb +45 -4
- data/spec/rolify/shared_examples/shared_examples_for_has_any_role.rb +3 -3
- data/spec/rolify/shared_examples/shared_examples_for_only_has_role.rb +3 -3
- data/spec/rolify/shared_examples/shared_examples_for_remove_role.rb +59 -59
- data/spec/rolify/shared_examples/shared_examples_for_roles.rb +7 -5
- data/spec/rolify/shared_examples/shared_examples_for_scopes.rb +10 -10
- data/spec/spec_helper.rb +6 -2
- data/spec/support/adapters/active_record.rb +47 -9
- data/spec/support/adapters/mongoid.rb +85 -24
- data/spec/support/data.rb +15 -15
- data/spec/support/schema.rb +28 -17
- metadata +102 -83
- data/lib/generators/rolify/role/role_generator.rb +0 -49
- data/lib/generators/rolify/role/templates/README +0 -11
- data/lib/generators/rolify/role/templates/README-active_record +0 -21
- data/lib/generators/rolify/role/templates/migration.rb +0 -19
- data/lib/generators/rolify/role/templates/role-active_record.rb +0 -6
|
@@ -2,10 +2,6 @@ require 'mongoid'
|
|
|
2
2
|
|
|
3
3
|
Mongoid.load!("spec/support/adapters/mongoid.yml", :test)
|
|
4
4
|
|
|
5
|
-
RSpec.configure do |config|
|
|
6
|
-
config.include Mongoid::Matchers
|
|
7
|
-
end
|
|
8
|
-
|
|
9
5
|
::Mongoid::Document.module_eval do
|
|
10
6
|
def self.included(base)
|
|
11
7
|
base.extend Rolify
|
|
@@ -14,11 +10,11 @@ end
|
|
|
14
10
|
|
|
15
11
|
Rolify.use_mongoid
|
|
16
12
|
|
|
17
|
-
#
|
|
13
|
+
# Standard user and role classes
|
|
18
14
|
class User
|
|
19
15
|
include Mongoid::Document
|
|
20
16
|
rolify
|
|
21
|
-
|
|
17
|
+
|
|
22
18
|
field :login, :type => String
|
|
23
19
|
end
|
|
24
20
|
|
|
@@ -26,9 +22,8 @@ class Role
|
|
|
26
22
|
include Mongoid::Document
|
|
27
23
|
has_and_belongs_to_many :users
|
|
28
24
|
belongs_to :resource, :polymorphic => true
|
|
29
|
-
|
|
25
|
+
|
|
30
26
|
field :name, :type => String
|
|
31
|
-
index({ :name => 1 }, { :unique => true })
|
|
32
27
|
index(
|
|
33
28
|
{
|
|
34
29
|
:name => 1,
|
|
@@ -37,28 +32,41 @@ class Role
|
|
|
37
32
|
},
|
|
38
33
|
{ :unique => true }
|
|
39
34
|
)
|
|
40
|
-
|
|
35
|
+
|
|
41
36
|
scopify
|
|
42
37
|
end
|
|
43
38
|
|
|
44
|
-
|
|
39
|
+
# Resourcifed and rolifed at the same time
|
|
40
|
+
class HumanResource
|
|
45
41
|
include Mongoid::Document
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
field :name, :type => String
|
|
49
|
-
end
|
|
42
|
+
resourcify :resources
|
|
43
|
+
rolify
|
|
50
44
|
|
|
51
|
-
|
|
52
|
-
include Mongoid::Document
|
|
53
|
-
#resourcify done during specs setup to be able to use custom user classes
|
|
54
|
-
|
|
55
|
-
field :name, :type => String
|
|
45
|
+
field :login, :type => String
|
|
56
46
|
end
|
|
57
47
|
|
|
48
|
+
#class Power
|
|
49
|
+
# include Mongoid::Document
|
|
50
|
+
# has_and_belongs_to_many :human_resources
|
|
51
|
+
# belongs_to :resource, :polymorphic => true
|
|
52
|
+
# scopify
|
|
53
|
+
#
|
|
54
|
+
# field :name, :type => String
|
|
55
|
+
# index(
|
|
56
|
+
# {
|
|
57
|
+
# :name => 1,
|
|
58
|
+
# :resource_type => 1,
|
|
59
|
+
# :resource_id => 1
|
|
60
|
+
# },
|
|
61
|
+
# { :unique => true }
|
|
62
|
+
# )
|
|
63
|
+
#end
|
|
64
|
+
|
|
65
|
+
# Custom role and class names
|
|
58
66
|
class Customer
|
|
59
67
|
include Mongoid::Document
|
|
60
68
|
rolify :role_cname => "Privilege"
|
|
61
|
-
|
|
69
|
+
|
|
62
70
|
field :login, :type => String
|
|
63
71
|
end
|
|
64
72
|
|
|
@@ -66,9 +74,9 @@ class Privilege
|
|
|
66
74
|
include Mongoid::Document
|
|
67
75
|
has_and_belongs_to_many :customers
|
|
68
76
|
belongs_to :resource, :polymorphic => true
|
|
69
|
-
|
|
77
|
+
scopify
|
|
78
|
+
|
|
70
79
|
field :name, :type => String
|
|
71
|
-
index({ :name => 1 }, { :unique => true })
|
|
72
80
|
index(
|
|
73
81
|
{
|
|
74
82
|
:name => 1,
|
|
@@ -77,6 +85,59 @@ class Privilege
|
|
|
77
85
|
},
|
|
78
86
|
{ :unique => true }
|
|
79
87
|
)
|
|
80
|
-
|
|
81
|
-
scopify
|
|
82
88
|
end
|
|
89
|
+
|
|
90
|
+
# Namespaced models
|
|
91
|
+
module Admin
|
|
92
|
+
class Moderator
|
|
93
|
+
include Mongoid::Document
|
|
94
|
+
rolify :role_cname => "Admin::Right"
|
|
95
|
+
|
|
96
|
+
field :login, :type => String
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
class Right
|
|
100
|
+
include Mongoid::Document
|
|
101
|
+
has_and_belongs_to_many :moderators, :class_name => 'Admin::Moderator'
|
|
102
|
+
belongs_to :resource, :polymorphic => true
|
|
103
|
+
scopify
|
|
104
|
+
|
|
105
|
+
field :name, :type => String
|
|
106
|
+
index(
|
|
107
|
+
{
|
|
108
|
+
:name => 1,
|
|
109
|
+
:resource_type => 1,
|
|
110
|
+
:resource_id => 1
|
|
111
|
+
},
|
|
112
|
+
{ :unique => true }
|
|
113
|
+
)
|
|
114
|
+
end
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
# Resources classes
|
|
118
|
+
class Forum
|
|
119
|
+
include Mongoid::Document
|
|
120
|
+
#resourcify done during specs setup to be able to use custom user classes
|
|
121
|
+
|
|
122
|
+
field :name, :type => String
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
class Group
|
|
126
|
+
include Mongoid::Document
|
|
127
|
+
#resourcify done during specs setup to be able to use custom user classes
|
|
128
|
+
|
|
129
|
+
field :name, :type => String
|
|
130
|
+
field :parent_id, :type => Integer
|
|
131
|
+
|
|
132
|
+
def subgroups
|
|
133
|
+
Group.in(:parent_id => _id)
|
|
134
|
+
end
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
class Team
|
|
138
|
+
include Mongoid::Document
|
|
139
|
+
#resourcify done during specs setup to be able to use custom user classes
|
|
140
|
+
|
|
141
|
+
field :team_code, :type => Integer
|
|
142
|
+
field :name, :type => String
|
|
143
|
+
end
|
data/spec/support/data.rb
CHANGED
|
@@ -1,20 +1,17 @@
|
|
|
1
|
-
User.destroy_all
|
|
2
|
-
Role.destroy_all
|
|
3
|
-
Forum.destroy_all
|
|
4
|
-
Group.destroy_all
|
|
5
|
-
Privilege.destroy_all
|
|
6
|
-
Customer.destroy_all
|
|
7
|
-
|
|
8
1
|
# Users
|
|
9
|
-
User.
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
2
|
+
[ User, Customer, Admin::Moderator ].each do |user|
|
|
3
|
+
user.destroy_all
|
|
4
|
+
|
|
5
|
+
user.create(:login => "admin")
|
|
6
|
+
user.create(:login => "moderator")
|
|
7
|
+
user.create(:login => "god")
|
|
8
|
+
user.create(:login => "zombie")
|
|
9
|
+
end
|
|
13
10
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
11
|
+
# Roles
|
|
12
|
+
[ Role, Privilege, Admin::Right ].each do |role|
|
|
13
|
+
role.destroy_all
|
|
14
|
+
end
|
|
18
15
|
|
|
19
16
|
# Resources
|
|
20
17
|
Forum.create(:name => "forum 1")
|
|
@@ -23,3 +20,6 @@ Forum.create(:name => "forum 3")
|
|
|
23
20
|
|
|
24
21
|
Group.create(:name => "group 1")
|
|
25
22
|
Group.create(:name => "group 2")
|
|
23
|
+
|
|
24
|
+
Team.create(:team_code => "1", :name => "PSG")
|
|
25
|
+
Team.create(:team_code => "2", :name => "MU")
|
data/spec/support/schema.rb
CHANGED
|
@@ -1,15 +1,19 @@
|
|
|
1
1
|
ActiveRecord::Schema.define do
|
|
2
2
|
self.verbose = false
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
[ :roles, :privileges, :admin_rights ].each do |table|
|
|
5
|
+
create_table(table) do |t|
|
|
5
6
|
t.string :name
|
|
6
7
|
t.references :resource, :polymorphic => true
|
|
7
|
-
|
|
8
|
+
|
|
8
9
|
t.timestamps
|
|
10
|
+
end
|
|
9
11
|
end
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
t
|
|
12
|
+
|
|
13
|
+
[ :users, :human_resources, :customers, :admin_moderators ].each do |table|
|
|
14
|
+
create_table(table) do |t|
|
|
15
|
+
t.string :login
|
|
16
|
+
end
|
|
13
17
|
end
|
|
14
18
|
|
|
15
19
|
create_table(:users_roles, :id => false) do |t|
|
|
@@ -17,25 +21,32 @@ ActiveRecord::Schema.define do
|
|
|
17
21
|
t.references :role
|
|
18
22
|
end
|
|
19
23
|
|
|
20
|
-
create_table(:
|
|
21
|
-
t.
|
|
24
|
+
create_table(:human_resources_roles, :id => false) do |t|
|
|
25
|
+
t.references :human_resource
|
|
26
|
+
t.references :role
|
|
22
27
|
end
|
|
23
28
|
|
|
24
|
-
create_table(:
|
|
25
|
-
t.
|
|
29
|
+
create_table(:customers_privileges, :id => false) do |t|
|
|
30
|
+
t.references :customer
|
|
31
|
+
t.references :privilege
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
create_table(:moderators_rights, :id => false) do |t|
|
|
35
|
+
t.references :moderator
|
|
36
|
+
t.references :right
|
|
26
37
|
end
|
|
27
38
|
|
|
28
|
-
create_table(:
|
|
39
|
+
create_table(:forums) do |t|
|
|
29
40
|
t.string :name
|
|
30
|
-
t.references :resource, :polymorphic => true
|
|
31
41
|
end
|
|
32
42
|
|
|
33
|
-
create_table(:
|
|
34
|
-
t.
|
|
43
|
+
create_table(:groups) do |t|
|
|
44
|
+
t.integer :parent_id
|
|
45
|
+
t.string :name
|
|
35
46
|
end
|
|
36
|
-
|
|
37
|
-
create_table(:
|
|
38
|
-
t.
|
|
39
|
-
t.
|
|
47
|
+
|
|
48
|
+
create_table(:teams, :id => false) do |t|
|
|
49
|
+
t.primary_key :team_code
|
|
50
|
+
t.string :name
|
|
40
51
|
end
|
|
41
52
|
end
|
metadata
CHANGED
|
@@ -1,126 +1,127 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: rolify
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 3.
|
|
5
|
-
prerelease:
|
|
4
|
+
version: 3.3.0
|
|
6
5
|
platform: ruby
|
|
7
6
|
authors:
|
|
8
7
|
- Florent Monbillard
|
|
9
8
|
autorequire:
|
|
10
9
|
bindir: bin
|
|
11
10
|
cert_chain: []
|
|
12
|
-
date:
|
|
11
|
+
date: 2014-01-26 00:00:00.000000000 Z
|
|
13
12
|
dependencies:
|
|
14
13
|
- !ruby/object:Gem::Dependency
|
|
15
|
-
name:
|
|
16
|
-
requirement:
|
|
17
|
-
none: false
|
|
14
|
+
name: ammeter
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
18
16
|
requirements:
|
|
19
|
-
- -
|
|
17
|
+
- - ">="
|
|
20
18
|
- !ruby/object:Gem::Version
|
|
21
19
|
version: '0'
|
|
22
20
|
type: :development
|
|
23
21
|
prerelease: false
|
|
24
|
-
version_requirements:
|
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
+
requirements:
|
|
24
|
+
- - ">="
|
|
25
|
+
- !ruby/object:Gem::Version
|
|
26
|
+
version: '0'
|
|
25
27
|
- !ruby/object:Gem::Dependency
|
|
26
|
-
name:
|
|
27
|
-
requirement:
|
|
28
|
-
none: false
|
|
28
|
+
name: rake
|
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
|
29
30
|
requirements:
|
|
30
|
-
- -
|
|
31
|
+
- - ">="
|
|
31
32
|
- !ruby/object:Gem::Version
|
|
32
33
|
version: '0'
|
|
33
34
|
type: :development
|
|
34
35
|
prerelease: false
|
|
35
|
-
version_requirements:
|
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
+
requirements:
|
|
38
|
+
- - ">="
|
|
39
|
+
- !ruby/object:Gem::Version
|
|
40
|
+
version: '0'
|
|
36
41
|
- !ruby/object:Gem::Dependency
|
|
37
|
-
name:
|
|
38
|
-
requirement:
|
|
39
|
-
none: false
|
|
42
|
+
name: rspec
|
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
|
40
44
|
requirements:
|
|
41
|
-
- -
|
|
45
|
+
- - ">="
|
|
42
46
|
- !ruby/object:Gem::Version
|
|
43
|
-
version:
|
|
47
|
+
version: '2.0'
|
|
44
48
|
type: :development
|
|
45
49
|
prerelease: false
|
|
46
|
-
version_requirements:
|
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
+
requirements:
|
|
52
|
+
- - ">="
|
|
53
|
+
- !ruby/object:Gem::Version
|
|
54
|
+
version: '2.0'
|
|
47
55
|
- !ruby/object:Gem::Dependency
|
|
48
|
-
name:
|
|
49
|
-
requirement:
|
|
50
|
-
none: false
|
|
56
|
+
name: rspec-rails
|
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
|
51
58
|
requirements:
|
|
52
|
-
- -
|
|
59
|
+
- - ">="
|
|
53
60
|
- !ruby/object:Gem::Version
|
|
54
|
-
version: '
|
|
61
|
+
version: '2.0'
|
|
55
62
|
type: :development
|
|
56
63
|
prerelease: false
|
|
57
|
-
version_requirements:
|
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
+
requirements:
|
|
66
|
+
- - ">="
|
|
67
|
+
- !ruby/object:Gem::Version
|
|
68
|
+
version: '2.0'
|
|
58
69
|
- !ruby/object:Gem::Dependency
|
|
59
|
-
name:
|
|
60
|
-
requirement:
|
|
61
|
-
none: false
|
|
70
|
+
name: bundler
|
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
|
62
72
|
requirements:
|
|
63
|
-
- -
|
|
73
|
+
- - ">="
|
|
64
74
|
- !ruby/object:Gem::Version
|
|
65
75
|
version: '0'
|
|
66
76
|
type: :development
|
|
67
77
|
prerelease: false
|
|
68
|
-
version_requirements:
|
|
69
|
-
- !ruby/object:Gem::Dependency
|
|
70
|
-
name: rake
|
|
71
|
-
requirement: &70098036306500 !ruby/object:Gem::Requirement
|
|
72
|
-
none: false
|
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
73
79
|
requirements:
|
|
74
|
-
- -
|
|
80
|
+
- - ">="
|
|
75
81
|
- !ruby/object:Gem::Version
|
|
76
82
|
version: '0'
|
|
77
|
-
type: :development
|
|
78
|
-
prerelease: false
|
|
79
|
-
version_requirements: *70098036306500
|
|
80
83
|
- !ruby/object:Gem::Dependency
|
|
81
|
-
name:
|
|
82
|
-
requirement:
|
|
83
|
-
none: false
|
|
84
|
+
name: fuubar
|
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
|
84
86
|
requirements:
|
|
85
|
-
- -
|
|
87
|
+
- - ">="
|
|
86
88
|
- !ruby/object:Gem::Version
|
|
87
|
-
version: '
|
|
89
|
+
version: '0'
|
|
88
90
|
type: :development
|
|
89
91
|
prerelease: false
|
|
90
|
-
version_requirements:
|
|
91
|
-
- !ruby/object:Gem::Dependency
|
|
92
|
-
name: rspec-rails
|
|
93
|
-
requirement: &70098036304660 !ruby/object:Gem::Requirement
|
|
94
|
-
none: false
|
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
95
93
|
requirements:
|
|
96
|
-
- -
|
|
94
|
+
- - ">="
|
|
97
95
|
- !ruby/object:Gem::Version
|
|
98
|
-
version: '
|
|
99
|
-
type: :development
|
|
100
|
-
prerelease: false
|
|
101
|
-
version_requirements: *70098036304660
|
|
96
|
+
version: '0'
|
|
102
97
|
- !ruby/object:Gem::Dependency
|
|
103
|
-
name:
|
|
104
|
-
requirement:
|
|
105
|
-
none: false
|
|
98
|
+
name: activerecord
|
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
|
106
100
|
requirements:
|
|
107
|
-
- -
|
|
101
|
+
- - ">="
|
|
108
102
|
- !ruby/object:Gem::Version
|
|
109
|
-
version:
|
|
103
|
+
version: 3.2.0
|
|
110
104
|
type: :development
|
|
111
105
|
prerelease: false
|
|
112
|
-
version_requirements:
|
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
107
|
+
requirements:
|
|
108
|
+
- - ">="
|
|
109
|
+
- !ruby/object:Gem::Version
|
|
110
|
+
version: 3.2.0
|
|
113
111
|
- !ruby/object:Gem::Dependency
|
|
114
|
-
name:
|
|
115
|
-
requirement:
|
|
116
|
-
none: false
|
|
112
|
+
name: mongoid
|
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
|
117
114
|
requirements:
|
|
118
|
-
- -
|
|
115
|
+
- - ">="
|
|
119
116
|
- !ruby/object:Gem::Version
|
|
120
|
-
version: '
|
|
117
|
+
version: '3.1'
|
|
121
118
|
type: :development
|
|
122
119
|
prerelease: false
|
|
123
|
-
version_requirements:
|
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
121
|
+
requirements:
|
|
122
|
+
- - ">="
|
|
123
|
+
- !ruby/object:Gem::Version
|
|
124
|
+
version: '3.1'
|
|
124
125
|
description: Very simple Roles library without any authorization enforcement supporting
|
|
125
126
|
scope on resource objects (instance or class). Supports ActiveRecord and Mongoid
|
|
126
127
|
ORMs.
|
|
@@ -130,22 +131,27 @@ executables: []
|
|
|
130
131
|
extensions: []
|
|
131
132
|
extra_rdoc_files: []
|
|
132
133
|
files:
|
|
133
|
-
- .gitignore
|
|
134
|
-
- .travis.yml
|
|
134
|
+
- ".gitignore"
|
|
135
|
+
- ".travis.yml"
|
|
135
136
|
- CHANGELOG.rdoc
|
|
136
137
|
- Gemfile
|
|
137
138
|
- LICENSE
|
|
138
139
|
- README.md
|
|
139
140
|
- Rakefile
|
|
140
141
|
- UPGRADE.rdoc
|
|
141
|
-
-
|
|
142
|
-
-
|
|
143
|
-
- lib/generators/
|
|
144
|
-
- lib/generators/
|
|
145
|
-
- lib/generators/
|
|
146
|
-
- lib/generators/
|
|
147
|
-
- lib/generators/
|
|
148
|
-
- lib/generators/rolify/
|
|
142
|
+
- gemfiles/Gemfile.rails-3.2
|
|
143
|
+
- gemfiles/Gemfile.rails-4.0
|
|
144
|
+
- lib/generators/active_record/rolify_generator.rb
|
|
145
|
+
- lib/generators/active_record/templates/README
|
|
146
|
+
- lib/generators/active_record/templates/migration.rb
|
|
147
|
+
- lib/generators/mongoid/rolify_generator.rb
|
|
148
|
+
- lib/generators/mongoid/templates/README-mongoid
|
|
149
|
+
- lib/generators/rolify/rolify_generator.rb
|
|
150
|
+
- lib/generators/rolify/templates/README
|
|
151
|
+
- lib/generators/rolify/templates/initializer.rb
|
|
152
|
+
- lib/generators/rolify/templates/role-active_record.rb
|
|
153
|
+
- lib/generators/rolify/templates/role-mongoid.rb
|
|
154
|
+
- lib/generators/rolify/user_generator.rb
|
|
149
155
|
- lib/rolify.rb
|
|
150
156
|
- lib/rolify/adapters/active_record/resource_adapter.rb
|
|
151
157
|
- lib/rolify/adapters/active_record/role_adapter.rb
|
|
@@ -157,16 +163,23 @@ files:
|
|
|
157
163
|
- lib/rolify/configure.rb
|
|
158
164
|
- lib/rolify/dynamic.rb
|
|
159
165
|
- lib/rolify/finders.rb
|
|
166
|
+
- lib/rolify/matchers.rb
|
|
160
167
|
- lib/rolify/railtie.rb
|
|
161
168
|
- lib/rolify/resource.rb
|
|
162
169
|
- lib/rolify/role.rb
|
|
163
170
|
- lib/rolify/utils.rb
|
|
164
171
|
- lib/rolify/version.rb
|
|
165
172
|
- rolify.gemspec
|
|
166
|
-
- spec/
|
|
173
|
+
- spec/README.rdoc
|
|
174
|
+
- spec/generators/rolify/rolify_activerecord_generator_spec.rb
|
|
175
|
+
- spec/generators/rolify/rolify_mongoid_generator_spec.rb
|
|
176
|
+
- spec/generators_helper.rb
|
|
167
177
|
- spec/rolify/config_spec.rb
|
|
168
178
|
- spec/rolify/custom_spec.rb
|
|
179
|
+
- spec/rolify/matchers_spec.rb
|
|
180
|
+
- spec/rolify/namespace_spec.rb
|
|
169
181
|
- spec/rolify/resource_spec.rb
|
|
182
|
+
- spec/rolify/resourcifed_and_rolifed_spec.rb
|
|
170
183
|
- spec/rolify/role_spec.rb
|
|
171
184
|
- spec/rolify/shared_contexts.rb
|
|
172
185
|
- spec/rolify/shared_examples/shared_examples_for_add_role.rb
|
|
@@ -188,33 +201,38 @@ files:
|
|
|
188
201
|
- spec/support/schema.rb
|
|
189
202
|
homepage: http://eppo.github.com/rolify/
|
|
190
203
|
licenses: []
|
|
204
|
+
metadata: {}
|
|
191
205
|
post_install_message:
|
|
192
206
|
rdoc_options: []
|
|
193
207
|
require_paths:
|
|
194
208
|
- lib
|
|
195
209
|
required_ruby_version: !ruby/object:Gem::Requirement
|
|
196
|
-
none: false
|
|
197
210
|
requirements:
|
|
198
|
-
- -
|
|
211
|
+
- - ">="
|
|
199
212
|
- !ruby/object:Gem::Version
|
|
200
213
|
version: '0'
|
|
201
214
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
202
|
-
none: false
|
|
203
215
|
requirements:
|
|
204
|
-
- -
|
|
216
|
+
- - ">="
|
|
205
217
|
- !ruby/object:Gem::Version
|
|
206
218
|
version: '0'
|
|
207
219
|
requirements: []
|
|
208
220
|
rubyforge_project: rolify
|
|
209
|
-
rubygems_version:
|
|
221
|
+
rubygems_version: 2.0.3
|
|
210
222
|
signing_key:
|
|
211
|
-
specification_version:
|
|
223
|
+
specification_version: 4
|
|
212
224
|
summary: Roles library with resource scoping
|
|
213
225
|
test_files:
|
|
214
|
-
- spec/
|
|
226
|
+
- spec/README.rdoc
|
|
227
|
+
- spec/generators/rolify/rolify_activerecord_generator_spec.rb
|
|
228
|
+
- spec/generators/rolify/rolify_mongoid_generator_spec.rb
|
|
229
|
+
- spec/generators_helper.rb
|
|
215
230
|
- spec/rolify/config_spec.rb
|
|
216
231
|
- spec/rolify/custom_spec.rb
|
|
232
|
+
- spec/rolify/matchers_spec.rb
|
|
233
|
+
- spec/rolify/namespace_spec.rb
|
|
217
234
|
- spec/rolify/resource_spec.rb
|
|
235
|
+
- spec/rolify/resourcifed_and_rolifed_spec.rb
|
|
218
236
|
- spec/rolify/role_spec.rb
|
|
219
237
|
- spec/rolify/shared_contexts.rb
|
|
220
238
|
- spec/rolify/shared_examples/shared_examples_for_add_role.rb
|
|
@@ -234,3 +252,4 @@ test_files:
|
|
|
234
252
|
- spec/support/adapters/mongoid.yml
|
|
235
253
|
- spec/support/data.rb
|
|
236
254
|
- spec/support/schema.rb
|
|
255
|
+
has_rdoc:
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
require 'rails/generators/migration'
|
|
2
|
-
|
|
3
|
-
module Rolify
|
|
4
|
-
module Generators
|
|
5
|
-
class RoleGenerator < Rails::Generators::Base
|
|
6
|
-
include Rails::Generators::Migration
|
|
7
|
-
|
|
8
|
-
source_root File.expand_path('../templates', __FILE__)
|
|
9
|
-
argument :role_cname, :type => :string, :default => "Role"
|
|
10
|
-
argument :user_cname, :type => :string, :default => "User"
|
|
11
|
-
argument :orm_adapter, :type => :string, :default => "active_record"
|
|
12
|
-
#class_option :dynamic_shortcuts, :type => :boolean, :default => false
|
|
13
|
-
|
|
14
|
-
desc "Generates a model with the given NAME and a migration file."
|
|
15
|
-
|
|
16
|
-
def generate_role
|
|
17
|
-
template "role-#{orm_adapter}.rb", "app/models/#{role_cname.underscore}.rb"
|
|
18
|
-
inject_into_file(model_path, :after => inject_rolify_method) do
|
|
19
|
-
" rolify" + (role_cname == "Role" ? "" : " :role_cname => '#{role_cname.camelize}'") + "\n"
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
def copy_role_file
|
|
24
|
-
template "initializer.rb", "config/initializers/rolify.rb"
|
|
25
|
-
migration_template "migration.rb", "db/migrate/rolify_create_#{role_cname.tableize}" if orm_adapter == "active_record"
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
def model_path
|
|
29
|
-
File.join("app", "models", "#{user_cname.underscore}.rb")
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
def self.next_migration_number(path)
|
|
33
|
-
Time.now.utc.strftime("%Y%m%d%H%M%S")
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
def show_readme
|
|
37
|
-
readme "README-#{orm_adapter}" if behavior == :invoke
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
def inject_rolify_method
|
|
41
|
-
if orm_adapter == "active_record"
|
|
42
|
-
/class #{user_cname.camelize}\n|class #{user_cname.camelize} .*\n/
|
|
43
|
-
else
|
|
44
|
-
/include Mongoid::Document\n|include Mongoid::Document .*\n/
|
|
45
|
-
end
|
|
46
|
-
end
|
|
47
|
-
end
|
|
48
|
-
end
|
|
49
|
-
end
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
===============================================================================
|
|
2
|
-
|
|
3
|
-
Now, you just have to run the migration using rake command:
|
|
4
|
-
|
|
5
|
-
rake db:migrate
|
|
6
|
-
|
|
7
|
-
An initializer file has been created here: config/initializers/rolify.rb,
|
|
8
|
-
you can change rolify settings to match your needs.
|
|
9
|
-
Defaults values are commented out.
|
|
10
|
-
|
|
11
|
-
===============================================================================
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
===============================================================================
|
|
2
|
-
|
|
3
|
-
An initializer file has been created here: config/initializers/rolify.rb, you
|
|
4
|
-
can change rolify settings to match your needs.
|
|
5
|
-
Defaults values are commented out.
|
|
6
|
-
|
|
7
|
-
A Role class has been been created in app/models (with the name you gave as
|
|
8
|
-
argument otherwise the default is role.rb), you can add your own business logic
|
|
9
|
-
inside.
|
|
10
|
-
|
|
11
|
-
Inside your User class (or the name you gave as argument otherwise the default
|
|
12
|
-
is user.rb), rolify method has been inserted to provide rolify methods.
|
|
13
|
-
|
|
14
|
-
Now, if you just have to run the migration using rake command:
|
|
15
|
-
|
|
16
|
-
rake db:migrate
|
|
17
|
-
|
|
18
|
-
and you will be able to add the resourcify method inside all models you want
|
|
19
|
-
scoped by a role.
|
|
20
|
-
|
|
21
|
-
===============================================================================
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
class RolifyCreate<%= role_cname.pluralize.camelize %> < ActiveRecord::Migration
|
|
2
|
-
def change
|
|
3
|
-
create_table(:<%= role_cname.tableize %>) do |t|
|
|
4
|
-
t.string :name
|
|
5
|
-
t.references :resource, :polymorphic => true
|
|
6
|
-
|
|
7
|
-
t.timestamps
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
create_table(:<%= (user_cname.tableize + "_" + role_cname.tableize) %>, :id => false) do |t|
|
|
11
|
-
t.references :<%= user_cname.underscore.singularize %>
|
|
12
|
-
t.references :<%= role_cname.underscore.singularize %>
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
add_index(:<%= role_cname.tableize %>, :name)
|
|
16
|
-
add_index(:<%= role_cname.tableize %>, [ :name, :resource_type, :resource_id ])
|
|
17
|
-
add_index(:<%= "#{user_cname.tableize}_#{role_cname.tableize}" %>, [ :<%= user_cname.underscore.singularize %>_id, :<%= role_cname.underscore.singularize %>_id ])
|
|
18
|
-
end
|
|
19
|
-
end
|