roles_generic 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (47) hide show
  1. data/README.markdown +63 -207
  2. data/Rakefile +6 -4
  3. data/VERSION +1 -1
  4. data/lib/generators/roles_model/roles/roles_generator.rb +4 -2
  5. data/lib/roles_generic/base.rb +11 -15
  6. data/lib/roles_generic/generic/role.rb +18 -0
  7. data/lib/roles_generic/generic/{class_methods.rb → user/class_methods.rb} +2 -3
  8. data/lib/roles_generic/generic/{util.rb → user/configuration.rb} +6 -6
  9. data/lib/roles_generic/generic/{implementation.rb → user/implementation.rb} +1 -1
  10. data/lib/roles_generic/generic/user.rb +22 -0
  11. data/lib/roles_generic/generic.rb +3 -68
  12. data/lib/roles_generic/namespaces.rb +13 -0
  13. data/lib/roles_generic/{many_roles.rb → strategy/multi/many_roles.rb} +3 -4
  14. data/lib/roles_generic/{role_strings.rb → strategy/multi/role_strings.rb} +9 -3
  15. data/lib/roles_generic/{roles_mask.rb → strategy/multi/roles_mask.rb} +2 -2
  16. data/lib/roles_generic/{roles_string.rb → strategy/multi/roles_string.rb} +2 -4
  17. data/lib/roles_generic/{admin_flag.rb → strategy/single/admin_flag.rb} +2 -2
  18. data/lib/roles_generic/{one_role.rb → strategy/single/one_role.rb} +3 -4
  19. data/lib/roles_generic/{role_string.rb → strategy/single/role_string.rb} +2 -2
  20. data/lib/roles_generic/strategy.rb +26 -0
  21. data/lib/roles_generic.rb +8 -1
  22. data/roles_generic.gemspec +124 -0
  23. data/spec/generators/admin_flag_generator_spec.rb +2 -2
  24. data/spec/generators/many_roles_generator_spec.rb +1 -1
  25. data/spec/generators/one_role_generator_spec.rb +1 -1
  26. data/spec/generators/role_string_generator_spec.rb +1 -1
  27. data/spec/generators/role_strings_generator_spec.rb +1 -1
  28. data/spec/generators/roles_mask_generator_spec.rb +1 -1
  29. data/spec/generators/roles_string_generator_spec.rb +1 -1
  30. data/spec/roles_generic/admin_flag_spec.rb +3 -3
  31. data/spec/roles_generic/many_roles_spec.rb +4 -3
  32. data/spec/roles_generic/one_role_spec.rb +4 -3
  33. data/spec/roles_generic/role_string_spec.rb +3 -3
  34. data/spec/roles_generic/role_strings_spec.rb +3 -3
  35. data/spec/roles_generic/roles_mask_spec.rb +3 -3
  36. data/spec/roles_generic/roles_string_spec.rb +3 -3
  37. data/spec/spec_helper.rb +1 -1
  38. data/wiki/strategies/admin_flag.textile +20 -0
  39. data/wiki/strategies/many_roles.textile +48 -0
  40. data/wiki/strategies/one_role.textile +40 -0
  41. data/wiki/strategies/role_string.textile +20 -0
  42. data/wiki/strategies/role_strings.textile +20 -0
  43. data/wiki/strategies/roles_mask.textile +20 -0
  44. data/wiki/strategies/roles_string.textile +20 -0
  45. metadata +61 -22
  46. data/lib/roles_generic/extensions/core_ext.rb +0 -19
  47. data/lib/roles_generic/role/class_methods.rb +0 -20
data/README.markdown CHANGED
@@ -1,14 +1,30 @@
1
- # Roles Model base
1
+ # Generic Role strategies
2
2
 
3
3
  Generic role strategies that share the same API and are easy to insert in any existing User model.
4
+ Comes with a Rails 3 generator to instantly configure your Rails 3 app with a Role strategy of choice.
4
5
 
5
- *Update: Now with a Rails 3 generator to instantly populate your user model of choice with a role strategy!*
6
+ I am in the process of developing multiple *roles_xxx* gems in order to support this generic API for various popular ORMs, such as:
6
7
 
7
- # Install
8
+ * Active Record (roles_ar)
9
+ * DataMapper (roles_dm_)
10
+ * Mongoid (roles_mongoid)
11
+ * MongoMapper (roles_mm)
12
+
13
+ Feel free to roll your own ORM extension for your favorite ORM!
14
+
15
+ ## Status update (4 sept, 2010)
16
+
17
+ Roles generic has now been refactored in order to tidy up the code base and make it even more generic, flexible and easy to extend.
18
+
19
+ Currently I'm not sure if the generator fully works. It has a dependency on *rails3_artifactor*, which should work.
20
+ However my gem to test generators (called *generator-spec*), is currently not functioning as it has dependencies to other gems that have undergone major
21
+ refactorings lately. Let me know if the generator works or if not, see if you can make it work using *rails3_artifactor* and let me know the fix ;)
22
+
23
+ ## Install
8
24
 
9
25
  <code>gem install roles_generic</code>
10
26
 
11
- # Usage
27
+ ## Usage
12
28
 
13
29
  The library comes with the following role models built-in:
14
30
 
@@ -22,13 +38,15 @@ The library comes with the following role models built-in:
22
38
 
23
39
  Note: The following examples use RSpec to demonstrate usage scenarios.
24
40
 
41
+ Examples of configuring for the other strategies can be found in the wiki pages.
42
+
25
43
  ## Example : admin_flag
26
44
 
27
45
  Creates and uses a binary field 'admin_flag', which when true signals that this user is an administrator and otherwise a normal user.
28
46
 
29
47
  <pre>
30
48
  class User
31
- include RoleModels::Generic
49
+ include Roles::Generic
32
50
 
33
51
  attr_accessor :name, :admin_flag
34
52
 
@@ -49,7 +67,7 @@ Data Mapper with persistent attributes :name and :admin_flag
49
67
 
50
68
  <pre>
51
69
  class User
52
- include RoleModels::Generic
70
+ include Roles::Generic
53
71
  include DataMapper::Resource
54
72
 
55
73
  property :name, Boolean
@@ -66,232 +84,70 @@ Data Mapper with persistent attributes :name and :admin_flag
66
84
  end
67
85
  </pre>
68
86
 
87
+ ## Role API
69
88
 
70
- ## Example : role_string
71
-
72
- Creates and uses a single role name, a string
73
-
74
- <pre>
75
- class User
76
- include RoleModels::Generic
77
-
78
- attr_accessor :name, :role_string
79
-
80
- role_strategy :role_string, :default
81
-
82
- roles :admin, :user
83
-
84
- def initialize name, *new_roles
85
- self.name = name
86
- self.roles = new_roles
87
- end
88
- end
89
- </pre>
90
-
91
- ## Example : roles_string
92
-
93
- Creates and uses single comma separated String of role names
94
-
95
- <pre>
96
- class User
97
- include RoleModels::Generic
98
-
99
- attr_accessor :name, :roles_string
100
-
101
- role_strategy :roles_string, :default
102
-
103
- roles :admin, :user
104
-
105
- def initialize name, *new_roles
106
- self.name = name
107
- self.roles = new_roles
108
- end
109
- end
110
- </pre>
111
-
112
- ## Example : role_strings
113
-
114
- Creates and uses an Set of role names as strings
115
-
116
- <pre>
117
- class User
118
- include RoleModels::Generic
119
-
120
- attr_accessor :name, :role_strings
121
-
122
- role_strategy :role_strings, :default
123
-
124
- roles :admin, :user
125
-
126
- def initialize name, *new_roles
127
- self.name = name
128
- self.roles = new_roles
129
- end
130
- end
131
- </pre>
132
-
133
- ## Example : roles_mask
134
-
135
- Creates and uses an Integer field where each on bit signifies a role
136
-
137
- <pre>
138
- class User
139
- include RoleModels::Generic
140
-
141
- attr_accessor :name, :roles_mask
142
-
143
- role_strategy :roles_mask, :default
144
-
145
- roles :admin, :user
146
-
147
- def initialize name, *new_roles
148
- self.name = name
149
- self.roles = new_roles
150
- end
151
- end
152
- </pre>
153
-
154
- ## Example : one_role
155
-
156
- Creates and uses a single relation to a Role model for each user
157
-
158
- <pre>
159
- class Role
160
- attr_accessor :name
161
-
162
- def self.find_role role_name
163
- roles.to_a.select{|r| r.name == role_name}.first
164
- end
165
-
166
- class << self
167
- attr_accessor :roles
168
- end
169
-
170
- def initialize name
171
- @name = name
172
- self.class.roles ||= Set.new
173
- self.class.roles << self
174
- end
175
-
176
- end
177
-
178
- class User
179
- include RoleModels::Generic
180
- role_strategy :one_role, :default
181
-
182
- role_class :role
183
-
184
- attr_accessor :name, :one_role
185
-
186
- roles :admin, :user
187
-
188
- def initialize name, *new_roles
189
- self.name = name
190
- self.roles = new_roles
191
- end
192
- end
193
- </pre>
194
-
195
- ## Example : many_roles
196
-
197
- Creates and uses a single relation to a Role model for each user
89
+ ### Instance methods
198
90
 
199
- <pre>
200
- class Role
201
- attr_accessor :name
202
-
203
- def self.find_role role_name
204
- roles.to_a.select{|r| r.name == role_name}.first
205
- end
206
-
207
- def self.find_roles *role_names
208
- result = Set.new
209
- role_names.flatten.each do |role_name|
210
- found_role = find_role(role_name)
211
- result << found_role if found_role
212
- end
213
- result
214
- end
215
-
216
- class << self
217
- attr_accessor :roles
218
- end
219
-
220
- def initialize name
221
- @name = name
222
- self.class.roles ||= Set.new
223
- self.class.roles << self
224
- end
225
- end
226
-
227
- class User
228
- include RoleModels::Generic
229
- role_strategy :many_roles, :default
91
+ Has ALL of the given roles been assigned?
92
+ * has_roles?(*roles) - alias: is?
230
93
 
231
- role_class :role
94
+ Has ANY (at least ONE) of the given roles been assigned?
95
+ * has_role? *roles - alias: has?
232
96
 
233
- attr_accessor :name, :many_roles
97
+ Is this a valid role? (can the role be found in list of valid roles?)
98
+ * valid_role? role
234
99
 
235
- roles :admin, :user
100
+ Is this user the admin user (and user has no other roles)
101
+ * admin? - short for - is?(:admin)
236
102
 
237
- def initialize name, *new_roles
238
- self.name = name
239
- self.roles = new_roles
240
- end
241
- end
242
- </pre>
103
+ ### Class methods
243
104
 
105
+ * roles - list of valid roles
106
+ * roles_attribute - get the attribute where the role is stored on the user
107
+ * roles_attribute= - set the role(s) attribute
108
+
244
109
  ## Usage of API
245
110
 
246
111
  <pre>
247
112
  before :each do
248
113
  @admin_user = User.new 'Admin user', :admin
249
- @user = User.new 'User', :user
114
+ @guest = User.new 'Guest', :guest
250
115
  end
251
116
 
252
117
  it "user 'Admin user' should have role :admin" do
253
- @admin_user.role.should == :admin
254
- @admin_user.roles.should == [:admin]
118
+
119
+ @admin_user.role.should == :admin
120
+ @admin_user.roles.should == [:admin]
255
121
  @admin_user.admin?.should be_true
256
122
 
257
- @admin_user.has_role?(:user).should be_false
123
+ @admin_user.has_role? (:user).should be_false
258
124
 
259
- @admin_user.has_role?(:admin).should be_true
260
- @admin_user.is?(:admin).should be_true
261
- @admin_user.has_roles?(:admin).should be_true
262
- @admin_user.has?(:admin).should be_true
263
- end
125
+ @admin_user.has_role? (:admin).should be_true
126
+ @admin_user.is? (:admin).should be_true
127
+ @admin_user.has_roles? (:admin).should be_true
128
+ @admin_user.has? (:admin).should be_true
264
129
 
265
- it "user 'User' should have role :user" do
266
- @user.roles.should == [:user]
267
- @user.admin?.should be_false
268
-
269
- @user.has_role?(:user).should be_true
270
- @user.has_role?(:admin).should be_false
271
- @user.is?(:admin).should be_false
272
-
273
- @user.has_roles?(:user).should be_true
274
- @user.has?(:admin).should be_false
275
130
  end
276
-
277
- it "should set 'User' role to :admin using roles=" do
278
- @user.roles = :admin
279
- @user.role.should == :admin
280
- @user.has_role?(:admin).should be_true
281
- end
282
- </pre>
283
-
284
- ## Future (TODO)
285
131
 
286
- The following in planned to be completed before the end of August 2010.
132
+ it "user Guest should have role :guest" do
133
+ @guest.roles.should == [:guest]
134
+ @guest.admin?.should be_false
287
135
 
288
- ### Clean up (DRY)
136
+ @guest.has_role? (:guest).should be_true
137
+ @guest.has_role? (:admin).should be_false
138
+ @guest.is? (:admin).should be_false
289
139
 
290
- DRY up the role strategy code a lot more! There is a lot more potential for code reuse - way too much duplication now.
140
+ @guest.has_roles? (:guest).should be_true
141
+ @guest.has? (:admin).should be_false
142
+ end
291
143
 
292
- ### Rails generator
144
+ it "should set role of Guest user from :guest to :admin using roles=" do
145
+ @guest.roles = :admin
146
+ @guest.role.should == :admin
293
147
 
294
- The library will come with a Rails 3 generator that lets you populate a user model with a given role strategy
148
+ @guest.has_role?(:admin).should be_true
149
+ end
150
+ </pre>
295
151
 
296
152
  ## Note on Patches/Pull Requests
297
153
 
data/Rakefile CHANGED
@@ -7,10 +7,12 @@ begin
7
7
  gem.email = "kmandrup@gmail.com"
8
8
  gem.homepage = "http://github.com/kristianmandrup/roles_for_mm"
9
9
  gem.authors = ["Kristian Mandrup"]
10
- gem.add_development_dependency "rspec", ">= 2.0.0.beta.19"
11
- gem.add_development_dependency "generator-spec", ">= 0.5.1"
12
- gem.add_dependency "require_all", ">= 1.1.0"
13
- gem.add_dependency "activesupport", ">= 3.0.0.rc"
10
+ gem.add_development_dependency "rspec", "~> 2.0.0.beta.19"
11
+ gem.add_development_dependency "generator-spec", "~> 0.5.1"
12
+ gem.add_dependency "require_all", "~> 1.1.0"
13
+ gem.add_dependency "activesupport", "~> 3.0.0"
14
+ gem.add_dependency 'sugar-high', "~> 0.2.2"
15
+ gem.add_dependency 'rails3_artifactor', '~> 0.1.1'
14
16
  # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
15
17
  end
16
18
  Jeweler::GemcutterTasks.new
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.1
1
+ 0.2.0
@@ -1,7 +1,9 @@
1
+ require 'rails3_artifactor'
2
+
1
3
  module RolesModel
2
4
  module Generators
3
5
  class RolesGenerator < Rails::Generators::NamedBase
4
- include Rails::Generators::MigrationHelper
6
+ include Rails3::Assist::Artifact::Model
5
7
 
6
8
  desc "Add role strategy to a model"
7
9
 
@@ -51,7 +53,7 @@ module RolesModel
51
53
 
52
54
  def insertion_text
53
55
  %Q{
54
- include RoleModels::Generic
56
+ include Roles::Generic
55
57
  #{role_strategy_statement}
56
58
  #{roles_statement}
57
59
  }
@@ -1,26 +1,22 @@
1
- require 'require_all'
2
- require 'active_support/inflector'
3
-
4
- module RoleModels
5
- module Generic
6
- end
7
- end
8
-
9
- module RoleModels
1
+ module Roles
10
2
  module Base
11
3
  attr_accessor :orm_name
12
4
 
5
+ def valid_roles
6
+ strategy_class.valid_roles
7
+ end
8
+
13
9
  def roles(*roles)
14
10
  strategy_class.valid_roles = Array[*roles].flatten.map { |r| r.to_sym }
15
11
  end
16
12
 
17
- def role_strategy strategy, options=nil
18
- include_strategy orm_name, strategy, options
13
+ def role_strategy strategy_name, options=nil
14
+ include_strategy orm_name, strategy_name, options
19
15
  end
20
16
 
21
- def include_strategy orm, strategy, options=nil
17
+ def include_strategy orm, strategy_name, options=nil
22
18
  begin
23
- constant = "RoleModels::#{orm_name.to_s.camelize}::#{strategy.to_s.camelize}".constantize
19
+ constant = "RoleStrategy::#{orm_name.to_s.camelize}::#{strategy_name.to_s.camelize}".constantize
24
20
 
25
21
  strategy_class_method = %Q{
26
22
  def strategy_class
@@ -37,9 +33,9 @@ module RoleModels
37
33
  include constant
38
34
  end
39
35
  rescue
40
- raise "No Role strategy module for ORM #{orm} found for strategy #{strategy}"
36
+ raise "No Role strategy module for ORM #{orm} found for strategy #{strategy_name}"
41
37
  end
42
38
  constant.apply_options(options) if constant.respond_to? :apply_options
43
39
  end
44
40
  end
45
- end
41
+ end
@@ -0,0 +1,18 @@
1
+ module Roles::Generic::Role
2
+ module InstanceMethods
3
+ def role_class
4
+ self.class.role_class_name
5
+ end
6
+ end
7
+
8
+ module ClassMethods
9
+ def role_class_name
10
+ @role_class_name
11
+ end
12
+
13
+ def role_class class_constant
14
+ const = class_constant.to_s.camelize
15
+ @role_class_name = "#{const}".constantize
16
+ end
17
+ end
18
+ end
@@ -1,7 +1,7 @@
1
- module RoleModels::Generic::Base
1
+ module Roles::Generic::User
2
2
  module ClassMethods
3
3
  def inherited(subclass) # :nodoc:
4
- ::RoleModels::Base::INHERITABLE_CLASS_ATTRIBUTES.each do |attribute|
4
+ ::Roles::Generic::User::INHERITABLE_CLASS_ATTRIBUTES.each do |attribute|
5
5
  instance_var = "@#{attribute}"
6
6
  subclass.instance_variable_set(instance_var, instance_variable_get(instance_var))
7
7
  end
@@ -26,7 +26,6 @@ module RoleModels::Generic::Base
26
26
  #
27
27
  # declare valid roles
28
28
  def roles(*roles)
29
- puts "roles: #{roles}"
30
29
  self.valid_roles = Array[*roles].flatten.map { |r| r.to_sym }
31
30
  end
32
31
  end
@@ -1,19 +1,19 @@
1
- module RoleModels::Generic::Base
1
+ module Roles::Generic::User
2
2
  module Configuration
3
3
  def configure(options={})
4
4
  numericality = options[:num]
5
5
  type = options[:type]
6
6
 
7
7
  class_eval do
8
- include RoleModels::Generic::Base
9
- include RoleModels::Generic::Base::SingleRole if numericality == :single
10
- include RoleModels::Generic::Base::RoleClass::InstanceMethods if type == :role_class
8
+ include Roles::Generic::User
9
+ include Roles::Generic::User::SingleRole if numericality == :single
10
+ include Roles::Generic::Role::InstanceMethods if type == :role_class
11
11
  include self::Implementation
12
12
 
13
13
  alias_method :role_symbols, :roles
14
14
  end
15
- extend RoleModels::Generic::Base::ClassMethods
16
- extend RoleModels::Generic::Base::DefaultRoleKeys
15
+ extend Roles::Generic::User::ClassMethods
16
+ extend Roles::Generic::User::DefaultRoleKeys
17
17
  end
18
18
  end
19
19
 
@@ -1,4 +1,4 @@
1
- module RoleModels::Generic::Base
1
+ module Roles::Generic::User
2
2
  module Implementation
3
3
 
4
4
  # check if a given role has been assigned
@@ -0,0 +1,22 @@
1
+ require_all File.dirname(__FILE__) +'/user'
2
+
3
+ module Roles::Generic
4
+ module User
5
+ INHERITABLE_CLASS_ATTRIBUTES = [:roles_attribute_name, :valid_roles]
6
+
7
+ include Implementation
8
+
9
+ def self.included(base) # :nodoc:
10
+ base.extend ClassMethods
11
+ base.class_eval do
12
+ class << self
13
+ attr_accessor(*::Roles::Generic::User::INHERITABLE_CLASS_ATTRIBUTES)
14
+
15
+ def apply_options options
16
+ roles_attribute default_role_attribute if options == :default
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -1,77 +1,12 @@
1
- require 'require_all'
2
- require 'active_support/inflector'
3
- require_all File.dirname(__FILE__) + '/extensions'
1
+ require_all File.dirname(__FILE__) + '/generic'
4
2
 
5
- module RoleModels
6
- module Base
7
- attr_accessor :orm_name
8
-
9
- def valid_roles
10
- strategy_class.valid_roles
11
- end
12
-
13
- def roles(*roles)
14
- strategy_class.valid_roles = Array[*roles].flatten.map { |r| r.to_sym }
15
- end
16
-
17
- def role_strategy strategy, options=nil
18
- include_strategy orm_name, strategy, options
19
- end
20
-
21
- def include_strategy orm, strategy, options=nil
22
- begin
23
- constant = "RoleModels::#{orm_name.to_s.camelize}::#{strategy.to_s.camelize}".constantize
24
-
25
- strategy_class_method = %Q{
26
- def strategy_class
27
- #{constant}
28
- end
29
- }
30
-
31
- class_eval do
32
- eval strategy_class_method
33
- end
34
-
35
- instance_eval do
36
- eval strategy_class_method
37
- include constant
38
- end
39
- rescue
40
- raise "No Role strategy module for ORM #{orm} found for strategy #{strategy}"
41
- end
42
- constant.apply_options(options) if constant.respond_to? :apply_options
43
- end
44
- end
45
- end
46
-
47
- module RoleModels
3
+ module Roles
48
4
  module Generic
49
5
  def self.included(base)
50
- base.extend RoleModels::Base
6
+ base.extend Roles::Base
51
7
  base.orm_name = :generic
52
8
  end
53
9
  end
54
10
  end
55
11
 
56
- require_all File.dirname(__FILE__) +'/generic'
57
-
58
- module RoleModels::Generic
59
- module Base
60
- INHERITABLE_CLASS_ATTRIBUTES = [:roles_attribute_name, :valid_roles]
61
-
62
- include Implementation
63
12
 
64
- def self.included(base) # :nodoc:
65
- base.extend ClassMethods
66
- base.class_eval do
67
- class << self
68
- attr_accessor(*::RoleModels::Generic::Base::INHERITABLE_CLASS_ATTRIBUTES)
69
-
70
- def apply_options options
71
- roles_attribute default_role_attribute if options == :default
72
- end
73
- end
74
- end
75
- end
76
- end
77
- end
@@ -0,0 +1,13 @@
1
+ require 'sugar-high/module'
2
+
3
+ module Roles
4
+ modules :generic do
5
+ nested_modules :user, :role
6
+ end
7
+ modules :base, :strategy
8
+ end
9
+
10
+ module RoleStrategy
11
+ module Generic
12
+ end
13
+ end
@@ -1,7 +1,6 @@
1
- require 'roles_generic/role/class_methods'
2
1
  require 'set'
3
2
 
4
- module RoleModels::Generic
3
+ module RoleStrategy::Generic
5
4
  module ManyRoles
6
5
  def self.default_role_attribute
7
6
  :many_roles
@@ -29,11 +28,11 @@ module RoleModels::Generic
29
28
  end
30
29
  end
31
30
 
32
- extend RoleModels::Generic::Base::Configuration
31
+ extend Roles::Generic::User::Configuration
33
32
  configure :type => :role_class
34
33
 
35
34
  def self.included(base)
36
- base.extend RoleModels::Generic::Base::RoleClass::ClassMethods
35
+ base.extend Roles::Generic::Role::ClassMethods
37
36
  end
38
37
  end
39
38
  end
@@ -1,4 +1,6 @@
1
- module RoleModels::Generic
1
+ require 'set'
2
+
3
+ module RoleStrategy::Generic
2
4
  module RoleStrings
3
5
  def self.default_role_attribute
4
6
  :role_strings
@@ -8,16 +10,20 @@ module RoleModels::Generic
8
10
  # assign roles
9
11
  def roles=(*roles)
10
12
  new_roles = roles.flatten.map{|r| r.to_s if valid_role?(r)}.compact
11
- self.send("#{strategy_class.roles_attribute_name}=", Set.new(new_roles)) if new_roles && new_roles.not.empty?
13
+ self.send("#{strategy_class.roles_attribute_name}=", ::Set.new(new_roles)) if new_roles && new_roles.not.empty?
12
14
  end
13
15
 
14
16
  # query assigned roles
15
17
  def roles
16
18
  self.send(strategy_class.roles_attribute_name).map{|r| r.to_sym}
17
19
  end
20
+
21
+ def roles_list
22
+ [roles].flatten
23
+ end
18
24
  end
19
25
 
20
- extend RoleModels::Generic::Base::Configuration
26
+ extend Roles::Generic::User::Configuration
21
27
  configure
22
28
  end
23
29
  end
@@ -1,6 +1,6 @@
1
1
  require 'set'
2
2
 
3
- module RoleModels::Generic
3
+ module RoleStrategy::Generic
4
4
  module RolesMask
5
5
  def self.default_role_attribute
6
6
  :roles_mask
@@ -42,7 +42,7 @@ module RoleModels::Generic
42
42
  end
43
43
  end
44
44
 
45
- extend RoleModels::Generic::Base::Configuration
45
+ extend Roles::Generic::User::Configuration
46
46
  configure
47
47
  end
48
48
  end