JwtAuthMiddleware.php 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. <?php
  2. namespace App\Http\Middleware;
  3. use Closure;
  4. use function FastRoute\TestFixtures\empty_options_cached;
  5. use Tymon\JWTAuth\Exceptions\JWTException;
  6. use Tymon\JWTAuth\Exceptions\TokenExpiredException;
  7. use Tymon\JWTAuth\Exceptions\TokenInvalidException;
  8. use Tymon\JWTAuth\Facades\JWTAuth;
  9. class JwtAuthMiddleware
  10. {
  11. /**
  12. * Handle an incoming request.
  13. *
  14. * @param \Illuminate\Http\Request $request
  15. * @param \Closure $next
  16. * @return mixed
  17. */
  18. public function handle($request, Closure $next)
  19. {
  20. try {
  21. $token = JWTAuth::getToken();
  22. if(empty($token)){
  23. $error = [
  24. 'message' => 'token is required',
  25. 'code' => 401,
  26. ];
  27. return response()->json($error);
  28. }
  29. $data = JWTAuth::decode($token)['user'];
  30. if ($data->sign !== md5($data->uid . env('JWT_SECRET'))) {
  31. $error = [
  32. 'message' => 'request is not allow',
  33. 'code' => 401,
  34. ];
  35. return response()->json($error);
  36. }
  37. } catch (TokenExpiredException $e) {
  38. $error = [
  39. 'message' => 'Token is Expired',
  40. 'code' => 401,
  41. ];
  42. return response()->json($error)->setStatusCode(401);
  43. } catch (TokenInvalidException $e) {
  44. $error = [
  45. 'message' => $e->getMessage(),
  46. 'code' => 401,
  47. ];
  48. return response()->json($error)->setStatusCode(401);
  49. } catch (JWTException $e) {
  50. $error = [
  51. 'message' => $e->getMessage(),
  52. 'code' => 401,
  53. ];
  54. return response()->json($error)->setStatusCode(401);
  55. }catch (\Exception $e){
  56. $error = [
  57. 'message' => $e->getMessage(),
  58. 'code' => 401,
  59. ];
  60. return response()->json($error)->setStatusCode(401);
  61. }
  62. return $next($request);
  63. }
  64. }