Module: ErpTechSvcs::Extensions::ActiveRecord::HasSecurityRoles::InstanceMethods
- Defined in:
- lib/erp_tech_svcs/extensions/active_record/has_security_roles.rb
Instance Method Summary collapse
- #add_role(role) ⇒ Object
- #add_roles(*passed_roles) ⇒ Object
- #has_role?(*passed_roles) ⇒ Boolean
- #join_parties_security_roles ⇒ Object
- #remove_all_roles ⇒ Object
- #remove_role(role) ⇒ Object
- #remove_roles(*passed_roles) ⇒ Object
- #roles ⇒ Object
- #roles_not ⇒ Object
Instance Method Details
#add_role(role) ⇒ Object
41 42 43 44 45 46 47 |
# File 'lib/erp_tech_svcs/extensions/active_record/has_security_roles.rb', line 41 def add_role(role) role = role.is_a?(SecurityRole) ? role : SecurityRole.find_by_internal_identifier(role.to_s) unless self.has_role?(role) self.security_roles << role self.save end end |
#add_roles(*passed_roles) ⇒ Object
49 50 51 52 53 54 55 |
# File 'lib/erp_tech_svcs/extensions/active_record/has_security_roles.rb', line 49 def add_roles(*passed_roles) passed_roles.flatten! passed_roles = passed_roles.first if passed_roles.first.is_a? Array passed_roles.each do |role| self.add_role(role) end end |
#has_role?(*passed_roles) ⇒ Boolean
74 75 76 77 78 79 80 81 82 83 84 85 86 |
# File 'lib/erp_tech_svcs/extensions/active_record/has_security_roles.rb', line 74 def has_role?(*passed_roles) result = false passed_roles.flatten! passed_roles.each do |role| role_iid = role.is_a?(SecurityRole) ? role.internal_identifier : role.to_s self.security_roles.each do |this_role| result = true if (this_role.internal_identifier == role_iid) break if result end break if result end result end |
#join_parties_security_roles ⇒ Object
29 30 31 |
# File 'lib/erp_tech_svcs/extensions/active_record/has_security_roles.rb', line 29 def join_parties_security_roles "parties_security_roles ON parties_security_roles.security_role_id=security_roles.id" end |
#remove_all_roles ⇒ Object
69 70 71 72 |
# File 'lib/erp_tech_svcs/extensions/active_record/has_security_roles.rb', line 69 def remove_all_roles self.security_roles = [] self.save end |
#remove_role(role) ⇒ Object
57 58 59 60 |
# File 'lib/erp_tech_svcs/extensions/active_record/has_security_roles.rb', line 57 def remove_role(role) role = role.is_a?(SecurityRole) ? role : SecurityRole.find_by_internal_identifier(role.to_s) self.security_roles.delete(role) if has_role?(role) end |
#remove_roles(*passed_roles) ⇒ Object
62 63 64 65 66 67 |
# File 'lib/erp_tech_svcs/extensions/active_record/has_security_roles.rb', line 62 def remove_roles(*passed_roles) passed_roles.flatten! passed_roles.each do |role| self.remove_role(role) end end |
#roles ⇒ Object
37 38 39 |
# File 'lib/erp_tech_svcs/extensions/active_record/has_security_roles.rb', line 37 def roles self.security_roles end |
#roles_not ⇒ Object
33 34 35 |
# File 'lib/erp_tech_svcs/extensions/active_record/has_security_roles.rb', line 33 def roles_not SecurityRole.joins("LEFT JOIN #{join_parties_security_roles}").where("parties_security_roles.party_id IS NULL") end |