Module: IdPlease::ModelExtensions::ForSubject
- Defined in:
- lib/id_please/model_extensions/for_subject.rb
Instance Method Summary collapse
- #groups(*args) ⇒ Object
- #has_no_role!(role_name, object = nil) ⇒ Object
-
#has_no_roles! ⇒ Object
Unassign all roles from
self
. - #has_no_roles_for!(object = nil) ⇒ Object
- #has_role!(role_name, object = nil) ⇒ Object
- #has_role?(role_name, object = nil, option_hash = {}) ⇒ Boolean
- #has_roles_for?(object) ⇒ Boolean (also: #has_role_for?)
- #in_group!(group) ⇒ Object
- #in_group?(group) ⇒ Boolean
- #not_in_any_group! ⇒ Object
- #not_in_group!(group) ⇒ Object
- #roles_for(object) ⇒ Object
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 = args. all_groups = direct_parent_groups(self) if _auth_nested_groups && [: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
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.(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?
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
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 |