Initial commit
This commit is contained in:
46
lib/barong/middleware/jwt_authenticator.rb
Normal file
46
lib/barong/middleware/jwt_authenticator.rb
Normal file
@@ -0,0 +1,46 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user