Fix endpoints, validate dates.

This commit is contained in:
James Cole
2025-01-25 09:17:21 +01:00
parent 949d818bad
commit 6d89485792
8 changed files with 28 additions and 5 deletions

View File

@@ -73,6 +73,6 @@ class BudgetController extends Controller
} }
); );
return response()->api($filtered); return response()->api($filtered->toArray());
} }
} }

View File

@@ -73,6 +73,6 @@ class CategoryController extends Controller
} }
); );
return response()->api($filtered); return response()->api($filtered->toArray());
} }
} }

View File

@@ -157,7 +157,15 @@ abstract class Controller extends BaseController
$value = null; $value = null;
} }
if (null !== $value) { if (null !== $value) {
$bag->set($integer, (int) $value); $value = (int) $value;
if ($value < 1) {
$value = 1;
}
if ($value > 2 ** 16) {
$value = 2 ** 16;
}
$bag->set($integer, $value);
} }
if (null === $value if (null === $value
&& 'limit' === $integer // @phpstan-ignore-line && 'limit' === $integer // @phpstan-ignore-line

View File

@@ -58,6 +58,7 @@ class AutocompleteRequest extends FormRequest
public function rules(): array public function rules(): array
{ {
return [ return [
'date' => 'date|after:1900-01-01|before:2099-12-31'
]; ];
} }
} }

View File

@@ -25,6 +25,7 @@ declare(strict_types=1);
namespace FireflyIII\Api\V1\Requests\Data; namespace FireflyIII\Api\V1\Requests\Data;
use FireflyIII\Exceptions\FireflyException; use FireflyIII\Exceptions\FireflyException;
use FireflyIII\Exceptions\ValidationException;
use FireflyIII\Support\Request\ChecksLogin; use FireflyIII\Support\Request\ChecksLogin;
use FireflyIII\Support\Request\ConvertsDataTypes; use FireflyIII\Support\Request\ConvertsDataTypes;
use Illuminate\Foundation\Http\FormRequest; use Illuminate\Foundation\Http\FormRequest;
@@ -49,7 +50,7 @@ class DateRequest extends FormRequest
$start->startOfDay(); $start->startOfDay();
$end->endOfDay(); $end->endOfDay();
if ($start->diffInYears($end, true) > 5) { if ($start->diffInYears($end, true) > 5) {
throw new FireflyException('Date range out of range.'); throw new ValidationException('Date range out of range.');
} }
return [ return [

View File

@@ -57,6 +57,10 @@ class CronRequest extends FormRequest
if ($this->has('date')) { if ($this->has('date')) {
$data['date'] = $this->getCarbonDate('date'); $data['date'] = $this->getCarbonDate('date');
} }
// catch NULL.
if(null === $data['date']) {
$data['date'] = today(config('app.timezone'));
}
return $data; return $data;
} }

View File

@@ -133,6 +133,13 @@ class Handler extends ExceptionHandler
return response()->json(['message' => $e->getMessage(), 'exception' => 'BadHttpHeaderException'], $e->statusCode); return response()->json(['message' => $e->getMessage(), 'exception' => 'BadHttpHeaderException'], $e->statusCode);
} }
if($e instanceof ValidationException && $expectsJson) {
$errorCode = 422;
return response()->json(
['message' => sprintf('Validation exception: %s', $e->getMessage()), 'errors' => ['date' => 'Date is invalid']],
$errorCode
);
}
if ($expectsJson) { if ($expectsJson) {
$errorCode = 500; $errorCode = 500;

View File

@@ -419,7 +419,9 @@ class CreateRecurringTransactions implements ShouldQueue
/** @var RecurrenceTransaction $transaction */ /** @var RecurrenceTransaction $transaction */
foreach ($transactions as $index => $transaction) { foreach ($transactions as $index => $transaction) {
$single = [ $single = [
'type' => null === $transaction->transactionType->type ? strtolower($recurrence->transactionType->type) : strtolower($transaction->transactionType->type), 'type' => null === $transaction?->transactionType?->type ?
strtolower($recurrence->transactionType->type) :
strtolower($transaction->transactionType->type),
'date' => $date, 'date' => $date,
'user' => $recurrence->user_id, 'user' => $recurrence->user_id,
'currency_id' => $transaction->transaction_currency_id, 'currency_id' => $transaction->transaction_currency_id,