Class: Liveness::Access

Inherits:
Object
  • Object
show all
Defined in:
lib/liveness/access.rb

Overview

Access Control

Since:

  • 0.3.0

Instance Method Summary collapse

Constructor Details

#initialize(request, config:) ⇒ Access

Returns a new instance of Access.

Parameters:

Since:

  • 0.3.0



14
15
16
17
# File 'lib/liveness/access.rb', line 14

def initialize(request, config:)
  @request = request
  @config = config
end

Instance Method Details

#allowed?Boolean

Is allowed to access

Returns:

  • (Boolean)

Since:

  • 0.3.0



24
25
26
# File 'lib/liveness/access.rb', line 24

def allowed?
  whitelist? && valid_token?
end

#valid_token?Boolean

Is token valid

Returns:

  • (Boolean)

Since:

  • 0.3.0



33
34
35
36
37
# File 'lib/liveness/access.rb', line 33

def valid_token?
  return true if @config.token.nil?

  @config.token == @request.params['token']
end

#whitelist?Boolean

Is ip in whitelist

Returns:

  • (Boolean)

Since:

  • 0.3.0



44
45
46
47
48
49
50
51
52
53
# File 'lib/liveness/access.rb', line 44

def whitelist?
  return true if @config.ip_whitelist.empty?
  return true if IPAddr.new('127.0.0.1').include?(@request.ip)
  return true if IPAddr.new('::1').include?(@request.ip)

  @config
    .ip_whitelist
    .map { |ip| IPAddr.new(ip) }
    .reduce(true) { |curr, addr| curr & addr.include?(@request.ip) }
end