Sha256: 901a393d0e3fe25d21fadaa7dff90e890836c9cc3be269aa325aca4c6c76198d

Contents?: true

Size: 769 Bytes

Versions: 11

Compression:

Stored size: 769 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
    # :reek:PrimaDonnaMethod
    class Strategy < Warden::Strategies::Base
      # :reek:NilCheck
      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 => exception
        fail!(exception.message)
      end

      private

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

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

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
warden-jwt_auth-0.5.0 lib/warden/jwt_auth/strategy.rb
warden-jwt_auth-0.4.2 lib/warden/jwt_auth/strategy.rb
warden-jwt_auth-0.4.1 lib/warden/jwt_auth/strategy.rb
warden-jwt_auth-0.4.0 lib/warden/jwt_auth/strategy.rb
warden-jwt_auth-0.3.6 lib/warden/jwt_auth/strategy.rb
warden-jwt_auth-0.3.5 lib/warden/jwt_auth/strategy.rb
warden-jwt_auth-0.3.4 lib/warden/jwt_auth/strategy.rb
warden-jwt_auth-0.3.3 lib/warden/jwt_auth/strategy.rb
warden-jwt_auth-0.3.2 lib/warden/jwt_auth/strategy.rb
warden-jwt_auth-0.3.1 lib/warden/jwt_auth/strategy.rb
warden-jwt_auth-0.3.0 lib/warden/jwt_auth/strategy.rb