Sha256: 05bbd6ad5b9a98f8cc9be5452ac73032e2f3a754343b1edf28b87ef79f83082e

Contents?: true

Size: 1.69 KB

Versions: 1

Compression:

Stored size: 1.69 KB

Contents

class Institution < Struct.new(:display_name, :name, :default, :parent_institution, 
  :ip_addresses, :login, :layouts, :views, :controllers, :models)
  require 'ipaddr'

  # 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={})
    members.each {|m| self.send( ("#{m}=").to_sym , (h.delete("#{m}".to_sym) || h.delete("#{m}"))) }
    # If the institution is named default, take that as an
    # indication that it's the default institution
    self.default= true if name == "default" or name == "DEFAULT"
    self.default= false unless default
    # 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?
    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])) :
            (IPAddr.new(ip_address.gsub(/\*/, "0"))..IPAddr.new(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

1 entries across 1 versions & 1 rubygems

Version Path
authpds-0.1.2 lib/authpds/institution.rb