* @Link https://gitee.com/xmo/MineAdmin */ declare(strict_types=1); namespace Builder\Exception\Handler; use Hyperf\ExceptionHandler\ExceptionHandler; use Hyperf\HttpMessage\Stream\SwooleStream; use Hyperf\Utils\Codec\Json; use Builder\Exception\TokenException; use Builder\Helper\MineCode; use Psr\Http\Message\ResponseInterface; use Throwable; /** * Class TokenExceptionHandler * @package Builder\Exception\Handler */ class TokenExceptionHandler extends ExceptionHandler { public function handle(Throwable $throwable, ResponseInterface $response): ResponseInterface { $this->stopPropagation(); $format = [ 'success' => false, 'message' => $throwable->getMessage(), 'code' => MineCode::TOKEN_EXPIRED, ]; return $response->withHeader('Server', 'MineAdmin') ->withAddedHeader('content-type', 'application/json; charset=utf-8') ->withStatus(401)->withBody(new SwooleStream(Json::encode($format))); } public function isValid(Throwable $throwable): bool { return $throwable instanceof TokenException; } }