Sha256: ca8de34549cb9634bfadc4e7436b97b5db16ee92f9c0251da31e2bac288619fb
Contents?: true
Size: 1.61 KB
Versions: 2
Compression:
Stored size: 1.61 KB
Contents
module Devise module JWT module Cookie class Middleware ENV_KEY = 'warden-jwt_auth.token' attr_reader :app, :config def initialize(app) @app = app @config = Warden::JWTAuth.config end def call(env) token_should_be_revoked = token_should_be_revoked?(env) if token_should_be_revoked # add the Authorization header, devise-jwt needs this to revoke tokens # we need to make sure this is done before the other middleware is run request = ActionDispatch::Request.new(env) env['HTTP_AUTHORIZATION'] = "Bearer #{CookieHelper.new.read_from(request.cookies)}" end status, headers, response = app.call(env) if headers['Authorization'] && env[ENV_KEY] name, cookie = CookieHelper.new.build(env[ENV_KEY]) Rack::Utils.set_cookie_header!(headers, name, cookie) elsif token_should_be_revoked name, cookie = CookieHelper.new.build(nil) Rack::Utils.set_cookie_header!(headers, name, cookie) end [status, headers, response] end def token_should_be_revoked?(env) path_info = env['PATH_INFO'] || '' method = env['REQUEST_METHOD'] revocation_requests = config.revocation_requests revocation_requests.each do |tuple| revocation_method, revocation_path = tuple return true if path_info.match(revocation_path) && method == revocation_method end false end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
devise-jwt-cookie-0.5.1 | lib/devise/jwt/cookie/middleware.rb |
devise-jwt-cookie-0.5.0 | lib/devise/jwt/cookie/middleware.rb |