Sha256: 994a6de283be85b3c0f1952319025e0e717ff309b54f57b0804538f692062f8a

Contents?: true

Size: 702 Bytes

Versions: 1

Compression:

Stored size: 702 Bytes

Contents

module MaticJWT
  class Authenticator
    TOKEN_TYPE = 'Bearer: '.freeze

    def initialize(headers)
      @token = extract_token(headers)
    end

    def client_name
      payload.first['client_name']
    end

    def authenticate_with_secret!(secret)
      JWT.decode(@token, secret, true, algorithm: ALGORITHM)
    end

    private

    def extract_token(headers)
      header = headers['Authorization']
      validate_header_presence!(header)
      header.slice(TOKEN_TYPE.length..-1)
    end

    def payload
      JWT.decode(@token, nil, false)
    end

    def validate_header_presence!(header)
      raise(JWT::DecodeError, 'Authorization header is missing') if header.nil?
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
matic-jwt-0.2.5 lib/matic-jwt/authenticator.rb