module Grape::Tokeeo

Constants

DEFAULT_HEADER
DEFAULT_INVALID_MESSAGE
DEFAULT_MISSING_MESSAGE
VERSION

Public Class Methods

build_model_token_security(options, api_instance) click to toggle source
# File lib/grape/tokeeo.rb, line 98
def build_model_token_security(options, api_instance)
  define_before_for(api_instance, options) do |token|
    Grape::Tokeeo.found_in_model?(options, token)
  end
end
build_preshared_token_security(options, api_instance) click to toggle source
# File lib/grape/tokeeo.rb, line 75
def build_preshared_token_security(options, api_instance)
  define_before_for(api_instance, options) do |token|
    Grape::Tokeeo.verification_passed?(options, token)
  end
end
define_before_for(api_instance, options) { |token| ... } click to toggle source
# File lib/grape/tokeeo.rb, line 62
def define_before_for(api_instance, options, &block)
  api_instance.before do
    token = Grape::Tokeeo.header_token(options, request)
    error!( Grape::Tokeeo.message_for_missing_token(options), 401) unless token.present?
    error!( Grape::Tokeeo.message_for_invalid_token(options), 401) unless yield(token)
  end
end
found_in_model?(options, token) click to toggle source
# File lib/grape/tokeeo.rb, line 90
def found_in_model? (options, token)
  clazz = options[:in]
  field = options[:field]

  raise Error("#{clazz} does not use any of the orm library supported") unless Grape::Tokeeo.use_supported_orm?(clazz)
  clazz.to_adapter.find_first("#{field.to_s}" => token)
end
header_for( key, request ) click to toggle source
# File lib/grape/tokeeo.rb, line 52
def header_for( key, request )
  token = request.headers[key]
  token ||= request.env[key]
end
header_to_verify( options={} ) click to toggle source
# File lib/grape/tokeeo.rb, line 47
def header_to_verify( options={} )
  header_to_use = options[:header]
  header_to_use ||= DEFAULT_HEADER
end
header_token( options, request ) click to toggle source
# File lib/grape/tokeeo.rb, line 57
def header_token( options, request )
  header_key = Grape::Tokeeo.header_to_verify(options)
  token = Grape::Tokeeo.header_for( header_key, request )
end
message_for_invalid_token( options={} ) click to toggle source
# File lib/grape/tokeeo.rb, line 37
def message_for_invalid_token( options={} )
  invalid_message_to_use = options[:invalid_message]
  invalid_message_to_use ||= DEFAULT_INVALID_MESSAGE
end
message_for_missing_token( options= {}) click to toggle source
# File lib/grape/tokeeo.rb, line 42
def message_for_missing_token( options= {})
  missing_message_to_use = options[:missing_message]
  missing_message_to_use ||= DEFAULT_MISSING_MESSAGE
end
use_supported_orm?(clazz) click to toggle source
# File lib/grape/tokeeo.rb, line 81
def use_supported_orm? (clazz)
  supported =   clazz < ActiveRecord::Base            if defined?(ActiveRecord::Base)
  supported ||= clazz < DataMapper::Resource          if defined?(DataMapper::Resource)
  supported ||= clazz < MongoMapper::Document         if defined?(MongoMapper::Document)
  supported ||= clazz < MongoMapper::EmbeddedDocument if defined?(MongoMapper::EmbeddedDocument)
  supported ||= clazz < Mongoid::Document             if defined?(Mongoid::Document)
  supported
end
verification_passed?( options, token) click to toggle source
# File lib/grape/tokeeo.rb, line 70
def verification_passed?( options, token)
  preshared_token = options[:is]
  preshared_token.is_a?(Array) ?  preshared_token.include?(token) : token == preshared_token
end