From 48a641286c1e0d5b5495743023bd8e0821bcdb01 Mon Sep 17 00:00:00 2001 From: James Cole Date: Wed, 29 Oct 2025 19:47:35 +0100 Subject: [PATCH] Fix account type list. --- .../Models/Account/AccountTypesApiRequest.php | 5 +- app/Rules/Account/IsValidAccountTypeList.php | 56 +++++++++++++++++++ resources/lang/en_US/validation.php | 1 + 3 files changed, 61 insertions(+), 1 deletion(-) create mode 100644 app/Rules/Account/IsValidAccountTypeList.php diff --git a/app/Api/V1/Requests/Models/Account/AccountTypesApiRequest.php b/app/Api/V1/Requests/Models/Account/AccountTypesApiRequest.php index 638dc284e5..84e36aefd3 100644 --- a/app/Api/V1/Requests/Models/Account/AccountTypesApiRequest.php +++ b/app/Api/V1/Requests/Models/Account/AccountTypesApiRequest.php @@ -24,6 +24,8 @@ declare(strict_types=1); namespace FireflyIII\Api\V1\Requests\Models\Account; use FireflyIII\Api\V1\Requests\ApiRequest; +use FireflyIII\Rules\Account\IsValidAccountType; +use FireflyIII\Rules\Account\IsValidAccountTypeList; use FireflyIII\Support\Http\Api\AccountFilter; use Illuminate\Validation\Validator; @@ -33,8 +35,9 @@ class AccountTypesApiRequest extends ApiRequest public function rules(): array { + // sprintf('in:%s', implode(',', array_keys($this->types))), return [ - 'types' => sprintf('in:%s', implode(',', array_keys($this->types))), + 'types' => new IsValidAccountTypeList(), ]; } diff --git a/app/Rules/Account/IsValidAccountTypeList.php b/app/Rules/Account/IsValidAccountTypeList.php new file mode 100644 index 0000000000..23792c5a6d --- /dev/null +++ b/app/Rules/Account/IsValidAccountTypeList.php @@ -0,0 +1,56 @@ +translate(); + } + $keys = array_keys($this->types); + foreach ($values as $entry) { + $entry = (string) $entry; + if (!in_array($entry, $keys, true)) { + $fail('validation.invalid_account_list')->translate(); + } + } + } +} diff --git a/resources/lang/en_US/validation.php b/resources/lang/en_US/validation.php index f2b03091aa..008eee28b2 100644 --- a/resources/lang/en_US/validation.php +++ b/resources/lang/en_US/validation.php @@ -24,6 +24,7 @@ declare(strict_types=1); return [ + 'invalid_account_list' => 'Invalid account type list', 'limit_exists' => 'There is already a budget limit (amount) for this budget and currency in the given period.', 'invalid_sort_instruction' => 'The sort instruction is invalid for an object of type ":object".', 'invalid_sort_instruction_index' => 'The sort instruction at index #:index is invalid for an object of type ":object".',