Class: Rolify::Adapter::Mongoid
- Inherits:
-
Base
- Object
- Base
- Rolify::Adapter::Mongoid
show all
- Defined in:
- lib/rolify/adapters/mongoid.rb
Instance Method Summary
collapse
-
#add(relation, role) ⇒ Object
-
#exists?(relation, column) ⇒ Boolean
-
#find(relation, role_name, resource) ⇒ Object
-
#find_or_create_by(role_name, resource_type = nil, resource_id = nil) ⇒ Object
-
#in(resources, roles) ⇒ Object
-
#remove(relation, role_name, resource = nil) ⇒ Object
-
#resources_find(roles_table, relation, role_name) ⇒ Object
-
#where(relation, args) ⇒ Object
Methods inherited from Base
#initialize, #role_class
Instance Method Details
#add(relation, role) ⇒ Object
26
27
28
|
# File 'lib/rolify/adapters/mongoid.rb', line 26
def add(relation, role)
relation.roles << role
end
|
#exists?(relation, column) ⇒ Boolean
53
54
55
|
# File 'lib/rolify/adapters/mongoid.rb', line 53
def exists?(relation, column)
relation.where(column.to_sym.ne => nil)
end
|
#find(relation, role_name, resource) ⇒ Object
6
7
8
9
10
11
12
13
|
# File 'lib/rolify/adapters/mongoid.rb', line 6
def find(relation, role_name, resource)
query = build_query(role_name, resource)
query.each do |condition|
criteria = relation.where(condition)
return criteria.all if !criteria.empty?
end
[]
end
|
#find_or_create_by(role_name, resource_type = nil, resource_id = nil) ⇒ Object
20
21
22
23
24
|
# File 'lib/rolify/adapters/mongoid.rb', line 20
def find_or_create_by(role_name, resource_type = nil, resource_id = nil)
self.role_class.find_or_create_by(:name => role_name,
:resource_type => resource_type,
:resource_id => resource_id)
end
|
#in(resources, roles) ⇒ Object
47
48
49
50
51
|
# File 'lib/rolify/adapters/mongoid.rb', line 47
def in(resources, roles)
return [] if resources.empty? || roles.empty?
resources.delete_if { |resource| (resource.applied_roles && roles).empty? }
resources
end
|
#remove(relation, role_name, resource = nil) ⇒ Object
30
31
32
33
34
35
|
# File 'lib/rolify/adapters/mongoid.rb', line 30
def remove(relation, role_name, resource = nil)
role = { :name => role_name }
role.merge!({:resource_type => (resource.is_a?(Class) ? resource.to_s : resource.class.name)}) if resource
role.merge!({ :resource_id => resource.id }) if resource && !resource.is_a?(Class)
relation.where(role).destroy_all
end
|
#resources_find(roles_table, relation, role_name) ⇒ Object
37
38
39
40
41
42
43
44
45
|
# File 'lib/rolify/adapters/mongoid.rb', line 37
def resources_find(roles_table, relation, role_name)
roles = roles_table.classify.constantize.where(:name => role_name, :resource_type => relation.to_s)
resources = []
roles.each do |role|
return relation.all if role.resource_id.nil?
resources << role.resource
end
resources
end
|
#where(relation, args) ⇒ Object
15
16
17
18
|
# File 'lib/rolify/adapters/mongoid.rb', line 15
def where(relation, args)
conditions = build_conditions(relation, args)
relation.any_of(*conditions)
end
|