Module: LinkedRails::Constraints::Whitelist
- Defined in:
- lib/linked_rails/constraints/whitelist.rb
Class Method Summary collapse
- .log_verdict(allowed, request, ip, remote_ip) ⇒ Object
- .matches?(request) ⇒ Boolean
- .request_ip(ip) ⇒ Object
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
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 |