Sha256: 64647788463d026b389ba2d4054034d48c91ae28cd3505d2a8a30ff3d26c904f

Contents?: true

Size: 1.04 KB

Versions: 22

Compression:

Stored size: 1.04 KB

Contents

module Garage
  module Strategy
    module Test
      extend ActiveSupport::Concern

      included do
        before_action :verify_auth, if: -> (_) { verify_permission? }
      end

      def access_token
        if defined? @access_token
          @access_token
        else
          token = AccessToken.new(attributes.merge(token: requested_token, token_type: 'bearer'))
          @access_token = token.token.present? && token.accessible? ? token : nil
        end
      end

      def verify_permission?
        true
      end

      private

      def attribute_names
        %i(application_id expired_at resource_owner_id scope)
      end

      def attributes
        Hash[attribute_names.map {|name| [name, from_header(name)] }]
      end

      def from_header(name)
        canonical = name.to_s.dasherize.split('-').map(&:capitalize).join('-')
        request.headers[canonical]
      end

      def requested_token
        value = request.authorization
        value.present? ? value.gsub(/^Bearer\s(.*)/) { $1 } : nil
      end
    end
  end
end

Version data entries

22 entries across 22 versions & 1 rubygems

Version Path
the_garage-2.8.2 lib/garage/strategy/test.rb
the_garage-2.8.1 lib/garage/strategy/test.rb
the_garage-2.8.0 lib/garage/strategy/test.rb
the_garage-2.7.0 lib/garage/strategy/test.rb
the_garage-2.6.1 lib/garage/strategy/test.rb
the_garage-2.6.0 lib/garage/strategy/test.rb
the_garage-2.5.0 lib/garage/strategy/test.rb
the_garage-2.4.4 lib/garage/strategy/test.rb
the_garage-2.4.3 lib/garage/strategy/test.rb
the_garage-2.4.2 lib/garage/strategy/test.rb
the_garage-2.4.1 lib/garage/strategy/test.rb
the_garage-2.4.0 lib/garage/strategy/test.rb
the_garage-2.3.3 lib/garage/strategy/test.rb
the_garage-2.3.2 lib/garage/strategy/test.rb
the_garage-2.3.1 lib/garage/strategy/test.rb
the_garage-2.3.0 lib/garage/strategy/test.rb
the_garage-2.2.0 lib/garage/strategy/test.rb
the_garage-2.1.0 lib/garage/strategy/test.rb
the_garage-2.0.3 lib/garage/strategy/test.rb
the_garage-2.0.2 lib/garage/strategy/test.rb