class Cerberus::Jwt

Constants

JWT_ERRORS
JWT_OPTIONS
JWT_RSA_PUBLIC

Public Class Methods

new(app) click to toggle source
# File lib/cerberus/jwt.rb, line 43
def initialize(app)
  @app = app
end
respond_with(status_code, message) click to toggle source
# File lib/cerberus/jwt.rb, line 62
def self.respond_with(status_code, message)
  [status_code, { "Content-Type" => "text/plain" }, [message]]
end

Public Instance Methods

call(env) click to toggle source
# File lib/cerberus/jwt.rb, line 47
def call(env)
  if Cerberus.config.jwt.enabled.call(env)
    auth_token = env.fetch("HTTP_AUTHORIZATION").gsub(/bearer /i, "")
    _payload, _header = JWT.decode(auth_token, JWT_RSA_PUBLIC, true, JWT_OPTIONS)
  end

  @app.call(env)
rescue StandardError => error
  if JWT_ERRORS.keys.include?(error.class)
    self.class.respond_with(*JWT_ERRORS.fetch(error.class).values)
  else
    raise error
  end
end