AppServiceProvider.php 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. <?php
  2. namespace App\Providers;
  3. use Illuminate\Support\Facades\Validator;
  4. use Illuminate\Support\ServiceProvider;
  5. use Tymon\JWTAuth\Exceptions\TokenExpiredException;
  6. use Tymon\JWTAuth\Exceptions\TokenInvalidException;
  7. class AppServiceProvider extends ServiceProvider
  8. {
  9. /**
  10. * Register any application services.
  11. *
  12. * @return void
  13. */
  14. public function register()
  15. {
  16. Validator::extend('mobile', function ($attribute, $value, $parameters) {
  17. return preg_match('/^1[3456789]{1}\d{9}$/', $value);
  18. });
  19. app('Dingo\Api\Exception\Handler')->register(function (\Tymon\JWTAuth\Exceptions\JWTException $e) {
  20. if ($e instanceof TokenExpiredException) {
  21. $error = [
  22. 'message' => 'Token Expired',
  23. 'errors' => [
  24. 'token_expired' => 'token_expired'
  25. ],
  26. 'code' => $e->getStatusCode(),
  27. 'status_code' => $e->getStatusCode(),
  28. ];
  29. } else if ($e instanceof TokenInvalidException) {
  30. $error = [
  31. 'message' => 'Token Invalid',
  32. 'errors' => [
  33. 'token_invalid' => 'token_invalid'
  34. ],
  35. 'code' => $e->getStatusCode(),
  36. 'status_code' => $e->getStatusCode(),
  37. ];
  38. }
  39. return response()->json($error, $e->getStatusCode());
  40. });
  41. app('Dingo\Api\Exception\Handler')->register(function (\Illuminate\Auth\AuthenticationException $e) {
  42. $error = [
  43. 'message' => '请重新登录',
  44. 'code' => '1001',
  45. ];
  46. return response()->json($error);
  47. });
  48. }
  49. }