Sha256: 559d708b074bea3e63430b6bf6d8c954db0be8267b107eec8cba1a19c6c61d18

Contents?: true

Size: 1.51 KB

Versions: 2

Compression:

Stored size: 1.51 KB

Contents

module Doorkeeper
  module Helpers
    module Filter
      module ClassMethods
        def doorkeeper_for(*args)
          doorkeeper_for = DoorkeeperForBuilder.create_doorkeeper_for(*args)

          before_filter doorkeeper_for.filter_options do
            return if doorkeeper_for.validate_token(doorkeeper_token)
            render_options = doorkeeper_unauthorized_render_options
            if render_options.nil? || render_options.empty?
              head :unauthorized
            else
              render_options[:status] = :unauthorized
              render_options[:layout] = false if render_options[:layout].nil?
              render render_options
            end
          end
        end
      end

      def self.included(base)
        base.extend ClassMethods
        base.send :private,
                  :doorkeeper_token,
                  :get_doorkeeper_token,
                  :authorization_bearer_token,
                  :doorkeeper_unauthorized_render_options
      end

      def doorkeeper_token
        @token ||= get_doorkeeper_token
      end

      def get_doorkeeper_token
        token = params[:access_token] || params[:bearer_token] || authorization_bearer_token
        if token
          AccessToken.find_by_token(token)
        end
      end

      def authorization_bearer_token
        header = request.env['HTTP_AUTHORIZATION']
        header.gsub(/^Bearer /, '') if header && header.match(/^Bearer /)
      end

      def doorkeeper_unauthorized_render_options
        nil
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
doorkeeper-0.4.2 lib/doorkeeper/helpers/filter.rb
doorkeeper-0.4.1 lib/doorkeeper/helpers/filter.rb