roles_mongo_mapper 0.1.4 → 0.2.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/README.markdown +11 -2
- data/Rakefile +7 -6
- data/VERSION +1 -1
- data/lib/roles_mongo_mapper/base.rb +21 -4
- data/lib/roles_mongo_mapper/embedded_role.rb +35 -0
- data/lib/roles_mongo_mapper/role.rb +7 -5
- data/lib/roles_mongo_mapper/strategy/multi.rb +59 -0
- data/lib/roles_mongo_mapper/strategy/multi/embed_many_roles.rb +71 -0
- data/lib/roles_mongo_mapper/strategy/multi/many_roles.rb +69 -23
- data/lib/roles_mongo_mapper/strategy/multi/role_strings.rb +44 -24
- data/lib/roles_mongo_mapper/strategy/multi/roles_mask.rb +67 -19
- data/lib/roles_mongo_mapper/strategy/shared.rb +29 -0
- data/lib/roles_mongo_mapper/strategy/single.rb +34 -0
- data/lib/roles_mongo_mapper/strategy/single/admin_flag.rb +50 -15
- data/lib/roles_mongo_mapper/strategy/single/embed_one_role.rb +79 -0
- data/lib/roles_mongo_mapper/strategy/single/one_role.rb +38 -30
- data/lib/roles_mongo_mapper/strategy/single/role_string.rb +20 -18
- data/roles_mongo_mapper.gemspec +51 -32
- data/sandbox/test.rb +13 -3
- data/spec/roles_mongo_mapper/strategy/api_examples.rb +199 -0
- data/spec/roles_mongo_mapper/strategy/hooks.rb +7 -0
- data/spec/roles_mongo_mapper/strategy/multi/embed_many_roles_spec.rb +19 -0
- data/spec/roles_mongo_mapper/strategy/multi/many_roles_spec.rb +19 -0
- data/spec/roles_mongo_mapper/strategy/multi/role_strings_spec.rb +19 -0
- data/spec/roles_mongo_mapper/strategy/multi/roles_mask_spec.rb +18 -0
- data/spec/roles_mongo_mapper/strategy/single/admin_flag_spec.rb +18 -0
- data/spec/roles_mongo_mapper/strategy/single/embed_one_role_spec.rb +19 -0
- data/spec/roles_mongo_mapper/strategy/single/one_role_spec.rb +20 -0
- data/spec/roles_mongo_mapper/strategy/single/role_string_spec.rb +19 -0
- data/spec/roles_mongo_mapper/strategy/user_setup.rb +13 -0
- data/spec/spec_helper.rb +11 -6
- metadata +60 -32
- data/spec/roles_mongo_mapper/strategy/admin_flag_spec.rb +0 -76
- data/spec/roles_mongo_mapper/strategy/many_roles_spec.rb +0 -69
- data/spec/roles_mongo_mapper/strategy/one_role_spec.rb +0 -66
- data/spec/roles_mongo_mapper/strategy/role_string_spec.rb +0 -68
- data/spec/roles_mongo_mapper/strategy/role_strings_spec.rb +0 -69
- data/spec/roles_mongo_mapper/strategy/roles_mask_spec.rb +0 -69
data/README.markdown
CHANGED
@@ -5,7 +5,8 @@ A *Mongo Mapper* implementation of [roles generic](http://github.com/kristianman
|
|
5
5
|
## Intro
|
6
6
|
|
7
7
|
Implements the [roles generic](http://github.com/kristianmandrup/roles_generic) Roles API
|
8
|
-
|
8
|
+
|
9
|
+
Generic Role strategies implemented:
|
9
10
|
|
10
11
|
* admin_flag
|
11
12
|
* many_roles
|
@@ -14,13 +15,21 @@ It also implements the following Role strategies:
|
|
14
15
|
* role_string
|
15
16
|
* role_strings
|
16
17
|
|
18
|
+
*Update Nov 24, 2010*
|
19
|
+
Version 0.3.1 and up is a major refactoring to support Roles Generic 0.3 and above with a new and improved architecture and testing framework.
|
20
|
+
Since 0.3.2 development of some basic infrastructure to support embedded role strategies in the future has been initiated.
|
21
|
+
|
22
|
+
* embed_one_role
|
23
|
+
* embed_many_roles
|
24
|
+
|
25
|
+
Please join in the effort to implement and add these strategies to the mix.
|
26
|
+
|
17
27
|
## Install
|
18
28
|
|
19
29
|
<code>gem install roles_mongo_mapper</code>
|
20
30
|
|
21
31
|
## Rails generator
|
22
32
|
|
23
|
-
|
24
33
|
The library comes with a Rails 3 generator that lets you populate a user model with a role strategy of your choice.
|
25
34
|
|
26
35
|
The following role strategies are included by default. Add your own by adding extra files inside the strategy folder, one file for each role strategy is recommended.
|
data/Rakefile
CHANGED
@@ -8,15 +8,16 @@ begin
|
|
8
8
|
gem.homepage = "http://github.com/kristianmandrup/roles_mongo_mapper"
|
9
9
|
gem.authors = ["Kristian Mandrup"]
|
10
10
|
|
11
|
-
gem.add_development_dependency "rspec", ">= 2.
|
11
|
+
gem.add_development_dependency "rspec", ">= 2.1"
|
12
12
|
gem.add_development_dependency 'generator-spec', "~> 0.6.5"
|
13
13
|
|
14
|
-
gem.add_dependency "mongo_mapper", '
|
15
|
-
gem.add_dependency "activesupport", '~> 3.0
|
14
|
+
gem.add_dependency "mongo_mapper", '>= 0.8.4'
|
15
|
+
gem.add_dependency "activesupport", '~> 3.0'
|
16
16
|
gem.add_dependency "require_all", '~> 1.2.0'
|
17
|
-
gem.add_dependency "sugar-high", '~> 0.
|
18
|
-
gem.add_dependency "roles_generic", '~> 0.
|
19
|
-
gem.add_dependency '
|
17
|
+
gem.add_dependency "sugar-high", '~> 0.3.0'
|
18
|
+
gem.add_dependency "roles_generic", '~> 0.3.3'
|
19
|
+
gem.add_dependency 'rails3_artifactor', '~> 0.3.0'
|
20
|
+
gem.add_dependency 'logging_assist', '>= 0.1.5'
|
20
21
|
|
21
22
|
end
|
22
23
|
Jeweler::GemcutterTasks.new
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.2.0
|
@@ -17,18 +17,35 @@ module Roles::MongoMapper
|
|
17
17
|
:admin_flag => "key :admin_flag, Boolean",
|
18
18
|
# :many_roles => "references_many :many_roles, :stored_as => :array, :class_name => 'Role', :default => []",
|
19
19
|
# :one_role => "references_one :one_role, :class_name => 'Role'",
|
20
|
-
|
20
|
+
|
21
|
+
# :embed_many_roles => "many :many_roles, :class_name => 'Role'",
|
22
|
+
# :embed_one_role => "one :one_role, :class_name => 'Role'",
|
23
|
+
|
24
|
+
:roles_mask => "key :roles_mask, Integer, :default => 0",
|
21
25
|
:role_string => "key :role_string, String",
|
22
26
|
:role_strings => "key :role_strings, Array",
|
23
27
|
:roles_string => "key :roles_string, String"
|
24
28
|
}
|
25
29
|
|
26
|
-
def strategy name, options =
|
27
|
-
if options == :default && MAP[name]
|
30
|
+
def strategy name, options = {}
|
31
|
+
if (options == :default || options[:config] == :default) && MAP[name]
|
28
32
|
instance_eval MAP[name]
|
29
33
|
end
|
30
34
|
|
31
|
-
|
35
|
+
if !options.kind_of? Symbol
|
36
|
+
role_class = options[:role_class] ? options[:role_class].to_s.camelize.constantize : (Role if defined? Role)
|
37
|
+
end
|
38
|
+
|
39
|
+
# case name
|
40
|
+
# when :embed_one_role
|
41
|
+
# raise ArgumentError, "#strategy class method must take :role_class option when using an embedded role strategy" if !role_class
|
42
|
+
# role_class.embedded_in :user, :inverse_of => :one_role
|
43
|
+
# when :embed_many_roles
|
44
|
+
# raise ArgumentError, "#strategy class method must take :role_class option when using an embedded role strategy" if !role_class
|
45
|
+
# role_class.embedded_in :user, :inverse_of => :many_roles
|
46
|
+
# end
|
47
|
+
|
48
|
+
set_role_strategy name, options
|
32
49
|
end
|
33
50
|
end
|
34
51
|
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module Roles::Base
|
2
|
+
def valid_roles_are(*role_list)
|
3
|
+
strategy_class.valid_roles = role_list.to_symbols
|
4
|
+
if role_class_name
|
5
|
+
role_list.each do |name|
|
6
|
+
role_class_name.create(:name => name.to_s)
|
7
|
+
end
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
class Role
|
13
|
+
include MongoMapper::EmbeddedDocument
|
14
|
+
key :name, String
|
15
|
+
|
16
|
+
key :user_id, ObjectId
|
17
|
+
belongs_to :user
|
18
|
+
|
19
|
+
# scope :by_name, lambda { |name| where(:name => name.to_s) }
|
20
|
+
# scope :by_names, lambda { |*names| where(:name => names.to_strings) }
|
21
|
+
|
22
|
+
class << self
|
23
|
+
def find_roles(*role_names)
|
24
|
+
role_names.flatten!
|
25
|
+
by_names(role_names).all
|
26
|
+
end
|
27
|
+
|
28
|
+
def find_role role_name
|
29
|
+
raise ArgumentError, "#find_role takes a single role name as argument, not: #{role_name.inspect}" if !role_name.kind_of_label?
|
30
|
+
by_name(role_name).first
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
|
@@ -3,7 +3,7 @@ module Roles::Base
|
|
3
3
|
strategy_class.valid_roles = role_list.to_symbols
|
4
4
|
if role_class_name
|
5
5
|
role_list.each do |name|
|
6
|
-
role_class_name.create(:name => name.to_s)
|
6
|
+
role_class_name.create(:name => name.to_s)
|
7
7
|
end
|
8
8
|
end
|
9
9
|
end
|
@@ -16,11 +16,11 @@ class Role
|
|
16
16
|
scope :by_name, lambda { |name| where(:name => name.to_s) }
|
17
17
|
scope :by_names, lambda { |*names| where(:name => names.to_strings) }
|
18
18
|
|
19
|
-
|
20
19
|
class << self
|
21
|
-
def find_roles(*role_names)
|
22
|
-
|
23
|
-
by_names(
|
20
|
+
def find_roles(*role_names)
|
21
|
+
role_names.flatten!
|
22
|
+
by_names(role_names).all
|
23
|
+
# where(:name => role_names.to_strings).all
|
24
24
|
end
|
25
25
|
|
26
26
|
def find_role role_name
|
@@ -29,3 +29,5 @@ class Role
|
|
29
29
|
end
|
30
30
|
end
|
31
31
|
end
|
32
|
+
|
33
|
+
|
@@ -0,0 +1,59 @@
|
|
1
|
+
require 'roles_mongo_mapper/strategy/shared'
|
2
|
+
|
3
|
+
module Roles::MongoMapper
|
4
|
+
module Strategy
|
5
|
+
module Multi
|
6
|
+
# assign multiple roles
|
7
|
+
def roles=(*role_names)
|
8
|
+
extracted_roles = extract_roles(role_names)
|
9
|
+
return nil if extracted_roles.empty?
|
10
|
+
set_roles(select_valid_roles extracted_roles)
|
11
|
+
end
|
12
|
+
|
13
|
+
def add_roles *roles
|
14
|
+
new_roles = select_valid_roles(roles)
|
15
|
+
if !new_roles.empty?
|
16
|
+
self.roles = self.roles + new_roles
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
# should remove the current single role (set = nil)
|
21
|
+
# only if it is contained in the list of roles to be removed
|
22
|
+
def remove_roles *role_names
|
23
|
+
role_names = role_names.flat_uniq
|
24
|
+
set_empty_roles and return if roles_diff(role_names).empty?
|
25
|
+
roles_to_remove = select_valid_roles(role_names)
|
26
|
+
diff = roles_diff(role_names)
|
27
|
+
diff = role_class.find_roles(diff).to_a if self.class.role_strategy.type == :complex
|
28
|
+
set_roles(diff)
|
29
|
+
true
|
30
|
+
end
|
31
|
+
|
32
|
+
# query assigned roles
|
33
|
+
def roles
|
34
|
+
get_roles.to_a.map do |role|
|
35
|
+
role.respond_to?(:sym) ? role.to_sym : role
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def roles_list
|
40
|
+
my_roles = [roles].flat_uniq
|
41
|
+
return [] if my_roles.empty?
|
42
|
+
has_role_class? ? my_roles.map{|r| r.name.to_sym } : my_roles
|
43
|
+
end
|
44
|
+
|
45
|
+
protected
|
46
|
+
|
47
|
+
def set_roles *roles
|
48
|
+
roles = roles.flat_uniq
|
49
|
+
roles = roles.first if self.class.role_strategy.multiplicity == :single
|
50
|
+
# self.send("#{role_attribute}").send(:<<, roles)
|
51
|
+
self.send("#{role_attribute}=", roles)
|
52
|
+
end
|
53
|
+
|
54
|
+
def get_roles
|
55
|
+
self.send(role_attribute)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
module RoleStrategy::MongoMapper
|
2
|
+
module ManyRoles
|
3
|
+
def self.default_role_attribute
|
4
|
+
:many_roles
|
5
|
+
end
|
6
|
+
|
7
|
+
def self.included base
|
8
|
+
base.extend Roles::Generic::Role::ClassMethods
|
9
|
+
base.extend ClassMethods
|
10
|
+
base.key :many_roles_ids, Array, :typecast => 'ObjectId'
|
11
|
+
base.many :many_roles, class_name: 'Role', :in => :many_roles_ids
|
12
|
+
base.ensure_index :many_role_ids
|
13
|
+
end
|
14
|
+
|
15
|
+
module ClassMethods
|
16
|
+
def role_attribute
|
17
|
+
strategy_class.roles_attribute_name
|
18
|
+
end
|
19
|
+
|
20
|
+
def role_id_attribute
|
21
|
+
"#{role_attribute}_ids".to_sym
|
22
|
+
end
|
23
|
+
|
24
|
+
def in_role(role_name)
|
25
|
+
role = Role.find_role(role_name)
|
26
|
+
res = all(role_id_attribute => role.id)
|
27
|
+
end
|
28
|
+
|
29
|
+
def in_roles(*role_names)
|
30
|
+
role_ids = Role.find_roles(role_names).map{|role| role.id}
|
31
|
+
all(role_id_attribute.in => role_ids)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
module Implementation
|
36
|
+
def role_id_attribute
|
37
|
+
"#{role_attribute}_ids".to_sym
|
38
|
+
end
|
39
|
+
|
40
|
+
# assign roles
|
41
|
+
def roles=(*_roles)
|
42
|
+
_roles = get_roles(_roles)
|
43
|
+
return nil if _roles.none?
|
44
|
+
|
45
|
+
role_relations = role_class.find_roles(_roles)
|
46
|
+
self.send("#{role_attribute}=", role_relations)
|
47
|
+
save
|
48
|
+
end
|
49
|
+
|
50
|
+
def add_roles(*role_names)
|
51
|
+
raise "Role class #{role_class} does not have a #find_role(role) method" if !role_class.respond_to? :find_role
|
52
|
+
role_relations = role_class.find_roles(*role_names)
|
53
|
+
self.send(role_attribute) << role_relations
|
54
|
+
save
|
55
|
+
end
|
56
|
+
|
57
|
+
# query assigned roles
|
58
|
+
def roles
|
59
|
+
self.send(role_attribute)
|
60
|
+
end
|
61
|
+
|
62
|
+
def roles_list
|
63
|
+
[roles].flatten.map{|r| r.name }.compact.to_symbols
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
extend Roles::Generic::User::Configuration
|
68
|
+
configure :type => :role_class
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'roles_mongo_mapper/strategy/multi'
|
2
|
+
|
1
3
|
module RoleStrategy::MongoMapper
|
2
4
|
module ManyRoles
|
3
5
|
def self.default_role_attribute
|
@@ -8,7 +10,7 @@ module RoleStrategy::MongoMapper
|
|
8
10
|
base.extend Roles::Generic::Role::ClassMethods
|
9
11
|
base.extend ClassMethods
|
10
12
|
base.key :many_roles_ids, Array, :typecast => 'ObjectId'
|
11
|
-
base.many :many_roles, class_name
|
13
|
+
base.many :many_roles, :class_name => 'Role', :in => :many_roles_ids
|
12
14
|
base.ensure_index :many_role_ids
|
13
15
|
end
|
14
16
|
|
@@ -26,42 +28,86 @@ module RoleStrategy::MongoMapper
|
|
26
28
|
res = all(role_id_attribute => role.id)
|
27
29
|
end
|
28
30
|
|
29
|
-
def
|
31
|
+
def in_any_role(*role_names)
|
30
32
|
role_ids = Role.find_roles(role_names).map{|role| role.id}
|
31
33
|
all(role_id_attribute.in => role_ids)
|
32
34
|
end
|
33
35
|
end
|
34
36
|
|
35
|
-
module Implementation
|
36
|
-
|
37
|
-
|
37
|
+
module Implementation
|
38
|
+
include Roles::MongoMapper::Strategy::Multi
|
39
|
+
|
40
|
+
def has_roles?(*roles_names)
|
41
|
+
compare_roles = extract_roles(roles_names.flat_uniq)
|
42
|
+
(roles_list & compare_roles).not.empty?
|
38
43
|
end
|
39
|
-
|
40
|
-
# assign roles
|
41
|
-
def roles=(*_roles)
|
42
|
-
_roles = get_roles(_roles)
|
43
|
-
return nil if _roles.none?
|
44
44
|
|
45
|
-
|
46
|
-
self.send(
|
47
|
-
|
45
|
+
def get_roles
|
46
|
+
self.send(role_attribute)
|
47
|
+
end
|
48
|
+
|
49
|
+
def roles
|
50
|
+
get_roles.to_a.map do |role|
|
51
|
+
role.respond_to?(:sym) ? role.to_sym : role
|
52
|
+
end
|
48
53
|
end
|
49
54
|
|
50
|
-
def
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
+
def roles_list
|
56
|
+
my_roles = [roles].flat_uniq
|
57
|
+
return [] if my_roles.empty?
|
58
|
+
has_role_class? ? my_roles.map{|r| r.name.to_sym } : my_roles
|
59
|
+
end
|
60
|
+
|
61
|
+
# assign multiple roles
|
62
|
+
def roles=(*role_names)
|
63
|
+
role_names = role_names.flat_uniq
|
64
|
+
role_names = extract_roles(role_names)
|
65
|
+
return nil if role_names.empty?
|
66
|
+
valids = role_class.find_roles(role_names).to_a
|
67
|
+
vrs = select_valid_roles role_names
|
68
|
+
set_roles(vrs)
|
55
69
|
end
|
56
70
|
|
57
|
-
|
58
|
-
|
59
|
-
self.send(role_attribute)
|
71
|
+
def new_roles *role_names
|
72
|
+
role_class.find_roles(extract_roles role_names)
|
60
73
|
end
|
61
74
|
|
62
|
-
def
|
63
|
-
|
75
|
+
def present_roles roles_names
|
76
|
+
roles_names.to_a.map{|role| role.name.to_s.to_sym}
|
64
77
|
end
|
78
|
+
|
79
|
+
def set_empty_roles
|
80
|
+
self.send("#{role_attribute}=", [])
|
81
|
+
end
|
82
|
+
# def role_id_attribute
|
83
|
+
# "#{role_attribute}_ids".to_sym
|
84
|
+
# end
|
85
|
+
#
|
86
|
+
# # assign roles
|
87
|
+
# def roles=(*_roles)
|
88
|
+
# _roles = get_roles(_roles)
|
89
|
+
# return nil if _roles.none?
|
90
|
+
#
|
91
|
+
# role_relations = role_class.find_roles(_roles)
|
92
|
+
# self.send("#{role_attribute}=", role_relations)
|
93
|
+
# save
|
94
|
+
# end
|
95
|
+
#
|
96
|
+
# def add_roles(*role_names)
|
97
|
+
# raise "Role class #{role_class} does not have a #find_role(role) method" if !role_class.respond_to? :find_role
|
98
|
+
# role_relations = role_class.find_roles(*role_names)
|
99
|
+
# self.send(role_attribute) << role_relations
|
100
|
+
# save
|
101
|
+
# end
|
102
|
+
#
|
103
|
+
# # query assigned roles
|
104
|
+
# def roles
|
105
|
+
# self.send(role_attribute)
|
106
|
+
# end
|
107
|
+
#
|
108
|
+
# def roles_list
|
109
|
+
# [roles].flatten.map{|r| r.name }.compact.to_symbols
|
110
|
+
# end
|
65
111
|
end
|
66
112
|
|
67
113
|
extend Roles::Generic::User::Configuration
|
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'roles_mongo_mapper/strategy/multi'
|
2
|
+
|
1
3
|
module RoleStrategy::MongoMapper
|
2
4
|
module RoleStrings
|
3
5
|
def self.default_role_attribute
|
@@ -14,10 +16,10 @@ module RoleStrategy::MongoMapper
|
|
14
16
|
end
|
15
17
|
|
16
18
|
def in_role(role_name)
|
17
|
-
|
19
|
+
in_any_role(role_name)
|
18
20
|
end
|
19
21
|
|
20
|
-
def
|
22
|
+
def in_any_role(*role_names)
|
21
23
|
begin
|
22
24
|
where(role_attribute.in => role_names.to_strings)
|
23
25
|
rescue
|
@@ -26,31 +28,49 @@ module RoleStrategy::MongoMapper
|
|
26
28
|
end
|
27
29
|
end
|
28
30
|
|
29
|
-
module Implementation
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
end
|
36
|
-
end
|
37
|
-
alias_method :role=, :roles=
|
31
|
+
module Implementation
|
32
|
+
include Roles::MongoMapper::Strategy::Multi
|
33
|
+
|
34
|
+
def new_roles *roles
|
35
|
+
::Set.new select_valid_roles(roles)
|
36
|
+
end
|
38
37
|
|
39
|
-
def
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
38
|
+
def select_valid_roles *roles
|
39
|
+
roles.flat_uniq.select{|role| valid_role? role }.map(&:to_sym)
|
40
|
+
end
|
41
|
+
|
42
|
+
def set_empty_roles
|
43
|
+
self.send("#{role_attribute}=", [])
|
44
|
+
end
|
45
45
|
|
46
|
-
|
47
|
-
|
48
|
-
self.send(role_attribute).map{|r| r.to_sym}
|
46
|
+
def present_roles roles_names
|
47
|
+
roles_names.to_a
|
49
48
|
end
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
49
|
+
|
50
|
+
# # assign roles
|
51
|
+
# def roles=(*new_roles)
|
52
|
+
# new_roles = new_roles.flatten.map{|r| r.to_s if valid_role?(r)}.compact
|
53
|
+
# if new_roles && new_roles.not.empty?
|
54
|
+
# self.send("#{role_attribute}=", new_roles.compact.uniq)
|
55
|
+
# end
|
56
|
+
# end
|
57
|
+
# alias_method :role=, :roles=
|
58
|
+
#
|
59
|
+
# def add_roles(*roles_to_add)
|
60
|
+
# roles_to_add = roles_to_add.flatten.map{|r| r.to_s if valid_role?(r)}.compact
|
61
|
+
# if new_roles && new_roles.not.empty?
|
62
|
+
# self.send(role_attribute) << new_roles.compact.uniq
|
63
|
+
# end
|
64
|
+
# end
|
65
|
+
#
|
66
|
+
# # query assigned roles
|
67
|
+
# def roles
|
68
|
+
# self.send(role_attribute).map{|r| r.to_sym}
|
69
|
+
# end
|
70
|
+
#
|
71
|
+
# def roles_list
|
72
|
+
# [roles].flatten
|
73
|
+
# end
|
54
74
|
end
|
55
75
|
|
56
76
|
extend Roles::Generic::User::Configuration
|