[ATTACHMENTS] In sendFile, check that file exists or show a custom exception

This commit is contained in:
Hugo Sales 2021-05-01 13:02:14 +00:00
parent 38cf8f8efe
commit 6d31945401
Signed by: someonewithpc
GPG Key ID: 7D0C7EAFC9D835A0

View File

@ -27,6 +27,7 @@ use App\Entity\Attachment;
use App\Util\Common; use App\Util\Common;
use App\Util\Exception\ClientException; use App\Util\Exception\ClientException;
use App\Util\Exception\NoSuchFileException; use App\Util\Exception\NoSuchFileException;
use App\Util\Exception\ServerException;
use Symfony\Component\HttpFoundation\BinaryFileResponse; use Symfony\Component\HttpFoundation\BinaryFileResponse;
use Symfony\Component\HttpFoundation\File\File as SymfonyFile; use Symfony\Component\HttpFoundation\File\File as SymfonyFile;
use Symfony\Component\HttpFoundation\HeaderUtils; use Symfony\Component\HttpFoundation\HeaderUtils;
@ -95,6 +96,7 @@ class GSFile
*/ */
public static function sendFile(string $filepath, string $mimetype, ?string $output_filename, string $disposition = 'inline'): Response public static function sendFile(string $filepath, string $mimetype, ?string $output_filename, string $disposition = 'inline'): Response
{ {
if (is_file($filepath)) {
$response = new BinaryFileResponse( $response = new BinaryFileResponse(
$filepath, $filepath,
Response::HTTP_OK, Response::HTTP_OK,
@ -113,6 +115,9 @@ class GSFile
$response->trustXSendfileTypeHeader(); $response->trustXSendfileTypeHeader();
} }
return $response; return $response;
} else {
throw new ServerException(_m('This attachment is not stored locally'));
}
} }
/** /**