Module: LinkedRails::Constraints::Whitelist

Defined in:
lib/linked_rails/constraints/whitelist.rb

Class Method Summary collapse

Class Method Details

.log_verdict(allowed, request, ip, remote_ip) ⇒ Object



22
23
24
25
26
27
# 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) ⇒ Boolean

Returns:

  • (Boolean)


8
9
10
11
12
13
14
15
16
17
18
19
20
# 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) ⇒ Object



29
30
31
32
33
# 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