class JWT::Claims::JwtId

The JwtId class is responsible for validating the JWT ID claim ('jti') in a JWT token.

Attributes

validator[R]

Public Class Methods

new(validator:) click to toggle source

Initializes a new JwtId instance.

@param validator [#call] an object responding to `call` to validate the JWT ID.

# File lib/jwt/claims/jwt_id.rb, line 10
def initialize(validator:)
  @validator = validator
end

Public Instance Methods

verify!(context:, **_args) click to toggle source

Verifies the JWT ID claim ('jti') in the JWT token.

@param context [Object] the context containing the JWT payload. @param _args [Hash] additional arguments (not used). @raise [JWT::InvalidJtiError] if the JWT ID claim is invalid or missing. @return [nil]

# File lib/jwt/claims/jwt_id.rb, line 20
def verify!(context:, **_args)
  jti = context.payload['jti']
  if validator.respond_to?(:call)
    verified = validator.arity == 2 ? validator.call(jti, context.payload) : validator.call(jti)
    raise(JWT::InvalidJtiError, 'Invalid jti') unless verified
  elsif jti.to_s.strip.empty?
    raise(JWT::InvalidJtiError, 'Missing jti')
  end
end