AuthMiddleware.php 981 B

1234567891011121314151617181920212223242526272829303132333435
  1. <?php
  2. declare(strict_types=1);
  3. namespace SixShop\Auth\Middleware;
  4. use Closure;
  5. use SixShop\Auth\Contracts\AuthInterface;
  6. use SixShop\Core\Request;
  7. readonly class AuthMiddleware
  8. {
  9. public function __construct(private AuthInterface $authService)
  10. {
  11. }
  12. public function handle(Request $request, Closure $next, bool $isLogin = true)
  13. {
  14. $authorization = $request->header('Authorization');
  15. if ($authorization) {
  16. $jwt = trim(ltrim($authorization, 'Bearer'));
  17. try {
  18. $request->{$this->authService->getUserType()->value . 'ID'} = $this->authService->verifyToken($jwt);
  19. $request->token = $jwt;
  20. } catch (\Exception $e) {
  21. if ($isLogin) {
  22. return abort(401, $e->getMessage());
  23. }
  24. }
  25. } else if ($isLogin) {
  26. return abort(401, 'Authorization header is required');
  27. }
  28. return $next($request);
  29. }
  30. }