Sha256: e1cde8a3c635e9461b62c34194b83b1502935ebe4a8c7f8105c43032a38d3dbe

Contents?: true

Size: 1.54 KB

Versions: 4

Compression:

Stored size: 1.54 KB

Contents

class Institution < Struct.new(:display_name, :name, :default_institution, 
  :application_layout, :ip_addresses, :parent_institution, :view_attributes, :login_attributes)

  # Better initializer than Struct gives us, take a hash instead
  # of an ordered array. :services=>[] is an array of service ids,
  # not actual Services!
  def initialize(h={}, controller)
    members.each {|m| self.send( ("#{m}=").to_sym , (h.delete(m.to_sym) || h.delete(m))) }
    default_institution = false unless default_institution
    # Log the fact that there are left overs in the hash
    # Rails.logger.warn("The following institution settings were ignored: #{h.inspect}.") unless h.empty?
  end

  # Instantiates a new copy of all services included in this institution,
  # returns an array. 
  def instantiate_services!
    services.collect {|s|  }
  end
  
  # Check the list of IP addresses for the given IP
  def includes_ip?(prospective_ip_address)
    return false if ip_addresses.nil?
    require 'ipaddr'
    ip_prospect = IPAddr.new(prospective_ip_address)
    ip_addresses.each do |ip_address|
      ip_range = (ip_address.match(/[\-\*]/)) ? 
        (ip_address.match(/\-/)) ? 
          (IPAddr.new(ip_address.split("-")[0])..IPAddr.new(ip_address.split("-")[1])) :
            (ip_address.gsub(/\*/, "0")..ip_address.gsub(/\*/, "255")) :
              IPAddr.new(ip_address).to_range 
      return true if ip_range === ip_prospect unless ip_range.nil?
    end
    return false;
  end
  
  def to_h
    h = {}
    members.each {|m| h[m.to_sym] = self.send(m)}
    h
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
authpds-0.0.4 lib/authpds/institution.rb
authpds-0.0.3 lib/authpds/institution.rb
authpds-0.0.2 lib/authpds/institution.rb
authpds-0.0.1 lib/authpds/institution.rb