Sha256: 6e52f717983d09f8c60f0e020cc1b4ec1e2444a18cf5bf97919be199339ce66b

Contents?: true

Size: 1.69 KB

Versions: 51

Compression:

Stored size: 1.69 KB

Contents

module EgovUtils
  class Principal < ApplicationRecord
    self.abstract_class = true

    serialize :roles, Array

    def reload(*attrs)
      @auth_source = nil
      super
    end

    def has_role?(role)
      roles.include?(role)
    end

    def auth_source
      @auth_source ||= EgovUtils::AuthSource.new(provider) if provider.present?
    end

    def ldap?
      !!auth_source
    end

    def ldap_dn
      raise NotImplementedError
    end

    def ldap_domain
      ldap? && ldap_dn.scan(/dc=([^,]*)/i).flatten.join('.')
    end

    def organization_by_domain(ldap_domain=self.ldap_domain)
      @organization_by_domain ||= EgovUtils::Organization.where(domain: ldap_domain).first if ldap_domain
    end

    def organization_key
      organization_by_domain.try(:key)
    end

    def organization_id
      organization_by_domain.try(:id)
    end

    def organization_id_by_key(organization_key=self.organization_key)
      EgovUtils::Organization.find_by_key(organization_key).try(:id)
    end

    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

    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
  end
end

Version data entries

51 entries across 51 versions & 1 rubygems

Version Path
egov_utils-1.3.0 app/models/egov_utils/principal.rb
egov_utils-1.2.4 app/models/egov_utils/principal.rb
egov_utils-1.2.3 app/models/egov_utils/principal.rb
egov_utils-1.2.2 app/models/egov_utils/principal.rb
egov_utils-1.2.1 app/models/egov_utils/principal.rb
egov_utils-1.2.0 app/models/egov_utils/principal.rb
egov_utils-1.1.1 app/models/egov_utils/principal.rb
egov_utils-1.1.0 app/models/egov_utils/principal.rb
egov_utils-1.0.3 app/models/egov_utils/principal.rb
egov_utils-1.0.2 app/models/egov_utils/principal.rb
egov_utils-1.0.1 app/models/egov_utils/principal.rb
egov_utils-1.0.0 app/models/egov_utils/principal.rb
egov_utils-0.7.5 app/models/egov_utils/principal.rb
egov_utils-0.7.4 app/models/egov_utils/principal.rb
egov_utils-0.7.3 app/models/egov_utils/principal.rb
egov_utils-0.7.2 app/models/egov_utils/principal.rb
egov_utils-0.7.1 app/models/egov_utils/principal.rb
egov_utils-0.7.0 app/models/egov_utils/principal.rb
egov_utils-0.6.5 app/models/egov_utils/principal.rb
egov_utils-0.6.4 app/models/egov_utils/principal.rb