JwtAdminMiddleware.php 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. <?php
  2. namespace App\Http\Middleware;
  3. use App\Constants\HttpStatus;
  4. use App\Models\Admin;
  5. use Closure;
  6. use App\Services\JwtService;
  7. use Illuminate\Http\Request;
  8. class JwtAdminMiddleware
  9. {
  10. protected $jwtService;
  11. public function __construct(JwtService $jwtService)
  12. {
  13. $this->jwtService = $jwtService;
  14. }
  15. public function handle(Request $request, Closure $next)
  16. {
  17. $authHeader = $request->header('Authorization');
  18. if (empty($authHeader)) {
  19. $code = HttpStatus::AUTHORIZATION_HEADER_NOT_FOUND;
  20. return response()->json([
  21. 'code' => $code,
  22. 'timestamp' => time(),
  23. 'msg' => __('messages.' . $code),
  24. 'data' => []
  25. ]);
  26. }
  27. $token = str_replace('Bearer ', '', $authHeader);
  28. $user = $this->jwtService->validateToken($token);
  29. if ($user) {
  30. $request->user = Admin::findOrFail($user->user_id);
  31. return $next($request);
  32. }
  33. $code = HttpStatus::AUTHORIZATION_HEADER_NOT_FOUND;
  34. return response()->json([
  35. 'code' => $code,
  36. 'timestamp' => time(),
  37. 'msg' => __('messages.' . $code),
  38. 'data' => []
  39. ]);
  40. }
  41. }