Module: IdPlease::ModelExtensions::ForSubject

Defined in:
lib/id_please/model_extensions/for_subject.rb

Instance Method Summary collapse

Instance Method Details

#groups(*args) ⇒ Object



32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/id_please/model_extensions/for_subject.rb', line 32

def groups(*args)
  raise "Groups must be enabled for this model" unless _auth_groups_enabled
  
  options = args.extract_options!
  all_groups = direct_parent_groups(self)
  
  if _auth_nested_groups && options[:nested] != false
    infinite_loop_counter = 25
    to_find = all_groups.dup
    
    until to_find.empty? || (infinite_loop_counter -=1) <= 0
      to_find = direct_parent_groups(*to_find)
      all_groups += to_find
    end
    
    all_groups.uniq
  else
    all_groups
  end
  
end

#has_no_role!(role_name, object = nil) ⇒ Object



95
96
97
98
99
# File 'lib/id_please/model_extensions/for_subject.rb', line 95

def has_no_role!(role_name, object = nil)
  role = get_role(role_name, object)
  
  remove_from_role(role)
end

#has_no_roles!Object

Unassign all roles from self.



109
110
111
112
113
114
# File 'lib/id_please/model_extensions/for_subject.rb', line 109

def has_no_roles!
  roles = self._auth_assigned_roles.clone
  roles.each do |role|
    remove_from_role(role)
  end
end

#has_no_roles_for!(object = nil) ⇒ Object



101
102
103
# File 'lib/id_please/model_extensions/for_subject.rb', line 101

def has_no_roles_for!(object = nil)
  roles_for(object).each { |role| remove_from_role(role) }
end

#has_role!(role_name, object = nil) ⇒ Object



62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# File 'lib/id_please/model_extensions/for_subject.rb', line 62

def has_role!(role_name, object = nil)
  role = get_role(role_name, object)
  
  if role.nil?
    role_attrs = case object
    when Class 
      { :authorizable_type => object.to_s }
    when nil 
      {}
    else 
      { :authorizable => object }
    end.merge(:name => role_name.to_s)
    
    role = self._auth_assigned_roles.create!(role_attrs)
  else
    unless assigned_to_role?(role)
      self._auth_assigned_roles << role
    end
  end
  
  role
end

#has_role?(role_name, object = nil, option_hash = {}) ⇒ Boolean

Returns:

  • (Boolean)


56
57
58
59
60
# File 'lib/id_please/model_extensions/for_subject.rb', line 56

def has_role?(role_name, object = nil, option_hash = {})
  subjects_to_check = option_hash[:check_groups] == false ? [self] : self_and_groups

  !Role.authorizable_eq(object).name_eq(role_name.to_s).assignments_subject_eq(*subjects_to_check).empty?
end

#has_roles_for?(object) ⇒ Boolean Also known as: has_role_for?

Returns:

  • (Boolean)


85
86
87
# File 'lib/id_please/model_extensions/for_subject.rb', line 85

def has_roles_for?(object)
  !get_assigned_roles_for(object).empty?
end

#in_group!(group) ⇒ Object



4
5
6
7
8
9
# File 'lib/id_please/model_extensions/for_subject.rb', line 4

def in_group!(group)
  raise "Groups must be enabled for this model" unless _auth_groups_enabled
  raise "Object passed in not a group" unless group.kind_of?(_auth_group_class)
  
  self.has_role!(_auth_group_role, group)
end

#in_group?(group) ⇒ Boolean

Returns:

  • (Boolean)


11
12
13
14
15
16
# File 'lib/id_please/model_extensions/for_subject.rb', line 11

def in_group?(group)
  raise "Groups must be enabled for this model" unless _auth_groups_enabled
  raise "Object passed in not a group" unless group.kind_of?(_auth_group_class)
  
  self.has_role?(_auth_group_role, group)
end

#not_in_any_group!Object



25
26
27
28
29
# File 'lib/id_please/model_extensions/for_subject.rb', line 25

def not_in_any_group!
  raise "Groups must be enabled for this model" unless _auth_groups_enabled
  
  all_groups.each { |group| self.not_in_group!(group) }
end

#not_in_group!(group) ⇒ Object



18
19
20
21
22
23
# File 'lib/id_please/model_extensions/for_subject.rb', line 18

def not_in_group!(group)
  raise "Groups must be enabled for this model" unless _auth_groups_enabled
  raise "Object passed in not a group" unless group.kind_of?(_auth_group_class)
  
  self.has_no_role!(_auth_group_role, group)
end

#roles_for(object) ⇒ Object



91
92
93
# File 'lib/id_please/model_extensions/for_subject.rb', line 91

def roles_for(object)
  get_assigned_roles_for(object)
end