Class: HeimdallAuth::RouteConstraint

Inherits:
Object
  • Object
show all
Defined in:
lib/heimdall_auth/route_constraint.rb

Instance Method Summary collapse

Constructor Details

#initialize(action, resource, accessible_via_token) ⇒ RouteConstraint

Returns a new instance of RouteConstraint.



35
36
37
38
39
# File 'lib/heimdall_auth/route_constraint.rb', line 35

def initialize(action, resource, accessible_via_token)
  @action = action
  @resource = resource
  @accessible_via_token = accessible_via_token
end

Instance Method Details

#matches?(matching_request) ⇒ Boolean

Returns:

  • (Boolean)


41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/heimdall_auth/route_constraint.rb', line 41

def matches?(matching_request)
  if @accessible_via_token && matching_request.query_parameters["token"]
    @accessible_via_token.keys.each do |path|
      if path.to_s == matching_request.path.to_s
        expected_token = @accessible_via_token[path]
        if expected_token && ActiveSupport::SecurityUtils.secure_compare(matching_request.query_parameters["token"], expected_token)
          return true
        end
      end
    end
  end

  AuthenticationChecker.new(matching_request).can?(@action, @resource)
end