Files
Dalan/lib/barong/middleware/jwt_authenticator.rb
2026-08-13 19:56:46 +03:30

47 lines
1.1 KiB
Ruby

# frozen_string_literal: true
module Barong
module Middleware
# Authenticate a user by a bearer token
class JWTAuthenticator < Grape::Middleware::Base
def initialize(app, options)
super(app, options)
raise(Peatio::Auth::Error, 'Public key missing') unless options[:pubkey]
@keypub = options[:pubkey]
end
def before
return if request.path.include? 'swagger'
raise(Peatio::Auth::Error, 'Header Authorization missing') \
unless authorization_present?
token = request.headers['Authorization']
env[:current_payload] = authenticator.authenticate!(token)
end
private
# JWT Authenticator instance from peatio-core
#
# @return [Peatio::Auth::JWTAuthenticator]
def authenticator
@authenticator ||=
Peatio::Auth::JWTAuthenticator.new(@keypub)
end
def authorization_present?
request.headers.key?('Authorization')
end
# Request entity
#
# @return [Grape::Request]
def request
@request ||= Grape::Request.new(env)
end
end
end
end