Sha256: 5ad1a1c1842dedfbe979139ad0800aa01d48994b91b23dc99c137678f86481f6

Contents?: true

Size: 701 Bytes

Versions: 3

Compression:

Stored size: 701 Bytes

Contents

# frozen_string_literal: true

require 'warden'

module Warden
  module JWTAuth
    # Warden strategy to authenticate an user through a JWT token in the
    # `Authorization` request header
    class Strategy < Warden::Strategies::Base
      def valid?
        !token.nil?
      end

      def store?
        false
      end

      def authenticate!
        aud = EnvHelper.aud_header(env)
        user = UserDecoder.new.call(token, scope, aud)
        success!(user)
      rescue JWT::DecodeError => e
        fail!(e.message)
      end

      private

      def token
        @token ||= HeaderParser.from_env(env)
      end
    end
  end
end

Warden::Strategies.add(:jwt, Warden::JWTAuth::Strategy)

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
warden-jwt_auth-0.8.0 lib/warden/jwt_auth/strategy.rb
warden-jwt_auth-0.7.0 lib/warden/jwt_auth/strategy.rb
warden-jwt_auth-0.6.0 lib/warden/jwt_auth/strategy.rb