module LinkedRails::Constraints::Whitelist

Public Instance Methods

log_verdict(allowed, request, ip, remote_ip) click to toggle source
# File lib/linked_rails/constraints/whitelist.rb, line 22
def log_verdict(allowed, request, ip, remote_ip)
  return if Rails.env.production?

  verdict = allowed ? 'pass' : 'fail'
  Rails.logger.debug("[WhitelistConstraint] #{verdict} for #{request.url} by ip: #{ip}, remote ip: #{remote_ip}")
end
matches?(request) click to toggle source
# File lib/linked_rails/constraints/whitelist.rb, line 8
def matches?(request)
  return true unless LinkedRails.whitelisted_spi_ips

  ip = request_ip(request.ip)
  remote_ip = request_ip(request.remote_ip)

  allowed = [ip, remote_ip].all? do |req_ip|
    LinkedRails.whitelisted_spi_ips.any? { |allowed_ip| allowed_ip.include?(req_ip) }
  end
  log_verdict(allowed, request, ip, remote_ip)

  allowed
end
request_ip(ip) click to toggle source
# File lib/linked_rails/constraints/whitelist.rb, line 29
def request_ip(ip)
  return nil unless ip.is_a?(String) && ip.present?

  IPAddr.new(ip)
end