Sha256: 290e1fb43ea94b7c92680122e0d7451009eb76ec0fd351b99d11d435ef4c43e1
Contents?: true
Size: 1.56 KB
Versions: 9
Compression:
Stored size: 1.56 KB
Contents
class Institution < Struct.new(:display_name, :name, :default_institution, :application_layout, :ip_addresses, :parent_institution, :view_attributes, :login_attributes) 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}"))) } 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? 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
9 entries across 9 versions & 1 rubygems