Нет описания

Authenticate.php 1.1KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. <?php namespace App\Http\Middleware;
  2. use Firebase\JWT\JWT;
  3. use Config;
  4. use Closure;
  5. use Illuminate\Contracts\Auth\Guard;
  6. class Authenticate {
  7. /**
  8. * The Guard implementation.
  9. *
  10. * @var Guard
  11. */
  12. protected $auth;
  13. /**
  14. * Create a new filter instance.
  15. *
  16. * @param Guard $auth
  17. * @return void
  18. */
  19. public function __construct(Guard $auth)
  20. {
  21. $this->auth = $auth;
  22. }
  23. /**
  24. * Handle an incoming request.
  25. *
  26. * @param \Illuminate\Http\Request $request
  27. * @param \Closure $next
  28. * @return mixed
  29. */
  30. public function handle($request, Closure $next)
  31. {
  32. if ($request->header('Authorization'))
  33. {
  34. $token = explode(' ', $request->header('Authorization'))[1];
  35. $payload = (array) JWT::decode($token, Config::get('app.token_secret'), array('HS256'));
  36. if ($payload['exp'] < time())
  37. {
  38. return response()->json(['message' => 'Token has expired']);
  39. }
  40. $request['user'] = $payload;
  41. return $next($request);
  42. }
  43. else
  44. {
  45. return response()->json(['message' => 'Please make sure your request has an Authorization header'], 401);
  46. }
  47. }
  48. }