<?php

namespace App\Http\Middleware;

use Closure;
use Tymon\JWTAuth\Exceptions\JWTException;
use Illuminate\Http\Request;

class RefreshToken extends \Tymon\JWTAuth\Http\Middleware\BaseMiddleware
{
    public function handle($request, Closure $next)
    {
        //If not logged or no token is present, simply let it pass
        if (!$this->checkForToken($request)) {
            return $next($request);
        }

        try {
            $token = $this->auth->parseToken()->refresh();
        } catch (JWTException $e) {
            return $next($request);
        }

        $response = $next($request);

        // Send the refreshed token back to the client.
        return $this->setAuthenticationHeader($response, $token);
    }

    public function checkForToken(Request $request)
    {
        return $this->auth->parser()->setRequest($request)->hasToken();
    }
}
