class Dbhero::RouterConstraint

Public Class Methods

matches?(request, options = {}) click to toggle source
# File lib/dbhero/router_constraint.rb, line 5
def self.matches? request, options = {}
  _ = new(request, options)
  _.match?
end
new(request, options) click to toggle source
# File lib/dbhero/router_constraint.rb, line 10
def initialize(request, options)
  @request = request
  @options = options
  @devise_mapping = options[:devise_mapping] || :user
  @devise_auth = options[:devise_auth] || false
  @enable_public_clip = options[:enable_public_clip] || false
end

Public Instance Methods

match?() click to toggle source
# File lib/dbhero/router_constraint.rb, line 18
def match?
  return ((@enable_public_clip && check_if_is_public_dataclip) ||
          (@devise_auth && authenticate_warden && check_custom_condition))
end

Private Instance Methods

auth_condition() click to toggle source
# File lib/dbhero/router_constraint.rb, line 39
def auth_condition
  @options[:custom_auth_condition]
end
authenticate_warden() click to toggle source
# File lib/dbhero/router_constraint.rb, line 31
def authenticate_warden
  @request.env['warden'].send(:authenticate!, scope: @devise_mapping)
end
check_custom_condition() click to toggle source
# File lib/dbhero/router_constraint.rb, line 35
def check_custom_condition
  auth_condition.is_a?(Proc) && auth_condition.call( @request.env['warden'].user(@devise_mapping) )
end
check_if_is_public_dataclip() click to toggle source
# File lib/dbhero/router_constraint.rb, line 25
def check_if_is_public_dataclip
  if @request.path.match(/\/dataclips\/([\w\-]{36}+)(\.[\w]{1,6})?$/)
    return Dbhero::Dataclip.where(token: $1).exists?
  end
end