class Grnds::Sso::VpnConstraint

Constants

LOCALHOST
VPN

Attributes

pattern[RW]
require_login[RW]
require_login?[RW]

Public Class Methods

new() click to toggle source
# File lib/grnds/sso/vpn_constraint.rb, line 15
def initialize
  self.require_login = (Rails.env != 'development')

  # Our deployments use nginx in a way that hides the source IP address
  self.pattern = LOCALHOST
end

Public Instance Methods

authenticated?(request) click to toggle source
# File lib/grnds/sso/vpn_constraint.rb, line 32
def authenticated?(request)
  session = request.session
  session[:init] = true unless session.loaded?

  return session['uid'].present?
end
configure() { |self| ... } click to toggle source
# File lib/grnds/sso/vpn_constraint.rb, line 22
def configure
  yield self
end
matches?(request) click to toggle source
# File lib/grnds/sso/vpn_constraint.rb, line 26
def matches?(request)
  return false unless !require_login? || authenticated?(request)

  return on_the_vpn?(request)
end
on_the_vpn?(request) click to toggle source
# File lib/grnds/sso/vpn_constraint.rb, line 39
def on_the_vpn?(request)
  case pattern
  when String
    return pattern == request.remote_ip
  else
    return pattern.match(request.remote_ip)
  end
  raise "VPN not defined"
end