blue-twilight/app/Http/Middleware/CheckMaxPostSizeExceeded.php

51 lines
1.3 KiB
PHP

<?php
namespace App\Http\Middleware;
use App\Helpers\MiscHelper;
use Closure;
use Illuminate\Http\Request;
class CheckMaxPostSizeExceeded
{
protected $exclude = [
'/admin/photos/analyse/*',
'/admin/photos/regenerate-thumbnails/*'
];
public function handle(Request $request, Closure $next)
{
if ($request->method() == 'POST' && !$this->shouldExclude($request))
{
// Check post limit and see if it may have been exceeded
$postLimit = MiscHelper::convertToBytes(ini_get('post_max_size'));
if (
(isset($_SERVER['CONTENT_LENGTH']) && $_SERVER['CONTENT_LENGTH'] > $postLimit) ||
(empty($_POST) && empty($_REQUEST))
)
{
$request->session()->flash('error', trans('global.post_max_exceeded'));
return back();
}
}
return $next($request);
}
protected function shouldExclude(Request $request)
{
foreach ($this->exclude as $exclude)
{
if ($exclude !== '/') {
$exclude = trim($exclude, '/');
}
if ($request->is($exclude)) {
return true;
}
}
return false;
}
}