Class: EgovUtils::Principal
- Inherits:
-
ApplicationRecord
- Object
- ActiveRecord::Base
- ApplicationRecord
- EgovUtils::Principal
- Defined in:
- app/models/egov_utils/principal.rb
Instance Method Summary collapse
- #auth_source ⇒ Object
- #has_role?(role) ⇒ Boolean
- #ldap? ⇒ Boolean
- #ldap_dn ⇒ Object
- #ldap_domain ⇒ Object
- #organization_by_domain(ldap_domain = self.ldap_domain) ⇒ Object
- #organization_id ⇒ Object
- #organization_id_by_key(organization_key = self.organization_key) ⇒ Object
- #organization_key ⇒ Object
- #organization_with_suborganizations_ids(organization_id = self.organization_id) ⇒ Object
- #organization_with_suborganizations_keys(organization_key = self.organization_key) ⇒ Object
- #reload(*attrs) ⇒ Object
Instance Method Details
#auth_source ⇒ Object
16 17 18 |
# File 'app/models/egov_utils/principal.rb', line 16 def auth_source @auth_source ||= EgovUtils::AuthSource.new(provider) if provider.present? end |
#has_role?(role) ⇒ Boolean
12 13 14 |
# File 'app/models/egov_utils/principal.rb', line 12 def has_role?(role) Array(roles).include?(role) end |
#ldap? ⇒ Boolean
20 21 22 |
# File 'app/models/egov_utils/principal.rb', line 20 def ldap? !!auth_source end |
#ldap_dn ⇒ Object
24 25 26 |
# File 'app/models/egov_utils/principal.rb', line 24 def ldap_dn raise NotImplementedError end |
#ldap_domain ⇒ Object
28 29 30 |
# File 'app/models/egov_utils/principal.rb', line 28 def ldap_domain ldap? && ldap_dn.scan(/dc=([^,]*)/i).flatten.join('.') end |
#organization_by_domain(ldap_domain = self.ldap_domain) ⇒ Object
32 33 34 |
# File 'app/models/egov_utils/principal.rb', line 32 def organization_by_domain(ldap_domain=self.ldap_domain) @organization_by_domain ||= EgovUtils::Organization.where(domain: ldap_domain).first if ldap_domain end |
#organization_id ⇒ Object
40 41 42 |
# File 'app/models/egov_utils/principal.rb', line 40 def organization_id organization_by_domain.try(:id) end |
#organization_id_by_key(organization_key = self.organization_key) ⇒ Object
44 45 46 |
# File 'app/models/egov_utils/principal.rb', line 44 def organization_id_by_key(organization_key=self.organization_key) EgovUtils::Organization.find_by_key(organization_key).try(:id) end |
#organization_key ⇒ Object
36 37 38 |
# File 'app/models/egov_utils/principal.rb', line 36 def organization_key organization_by_domain.try(:key) end |
#organization_with_suborganizations_ids(organization_id = self.organization_id) ⇒ Object
55 56 57 58 59 |
# File 'app/models/egov_utils/principal.rb', line 55 def organization_with_suborganizations_ids(organization_id=self.organization_id) Rails.cache.fetch("organizations/#{organization_key}/org_with_suborgs_ids") do [organization_id] + ( organization_id && EgovUtils::Organization.where(superior_id: organization_id).collect(&:id) || [] ) end end |
#organization_with_suborganizations_keys(organization_key = self.organization_key) ⇒ Object
48 49 50 51 52 53 |
# File 'app/models/egov_utils/principal.rb', line 48 def organization_with_suborganizations_keys(organization_key=self.organization_key) return [] unless organization_key Rails.cache.fetch("organizations/#{organization_key}/org_with_suborgs_keys") do [organization_key] + ( organization_key && EgovUtils::Organization.where(superior_id: organization_id_by_key(organization_key)).collect(&:key) || [] ) end end |
#reload(*attrs) ⇒ Object
7 8 9 10 |
# File 'app/models/egov_utils/principal.rb', line 7 def reload(*attrs) @auth_source = nil super end |