class RackJWTDecode

Constants

BEARER_REGEXP
HTTP_AUTHORIZATION

Public Class Methods

new(app, application_secret) click to toggle source
# File lib/rack_jwt_decode.rb, line 7
def initialize(app, application_secret)
  @app = app
  @application_secret = application_secret
end

Public Instance Methods

call(env) click to toggle source
# File lib/rack_jwt_decode.rb, line 12
def call(env)
  add_jwt_payload_to_env(env)
  @app.call(env)
end

Private Instance Methods

add_jwt_payload_to_env(env) click to toggle source
# File lib/rack_jwt_decode.rb, line 19
def add_jwt_payload_to_env(env)
  return unless @application_secret
  return unless auth = env[HTTP_AUTHORIZATION]
  return unless token = auth.split(BEARER_REGEXP)&.last
  return unless payload = JWT.decode(token, @application_secret)&.first

  payload&.each do |k, v|
    env["jwt.#{k}"] = v
  end
end