refactor(banking): derive credential validation rules from the registry
Add BankingProvider::credentialRules(); the connect Form Requests and the update request now derive their credential rules from it instead of each hardcoding them. Removes the rule double-definition (e.g. the Coinbase regex and IB minimums) so they can no longer drift. Connect-only params (country) and custom messages stay in their requests.
This commit is contained in:
parent
ab04258e68
commit
52c00fbc05
|
|
@ -70,6 +70,23 @@ enum BankingProvider: string
|
|||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Validation rules for this provider's credential inputs, keyed by input
|
||||
* name. Shared by the connect Form Requests and the update request.
|
||||
*
|
||||
* @return array<string, array<int, mixed>>
|
||||
*/
|
||||
public function credentialRules(): array
|
||||
{
|
||||
$rules = [];
|
||||
|
||||
foreach ($this->credentialFields() as $field) {
|
||||
$rules[$field->input] = $field->rules;
|
||||
}
|
||||
|
||||
return $rules;
|
||||
}
|
||||
|
||||
/**
|
||||
* Map validated request input to the encrypted connection columns.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
namespace App\Http\Requests\OpenBanking;
|
||||
|
||||
use App\Enums\BankingProvider;
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
|
||||
class ConnectBinanceRequest extends FormRequest
|
||||
|
|
@ -17,8 +18,7 @@ class ConnectBinanceRequest extends FormRequest
|
|||
public function rules(): array
|
||||
{
|
||||
return [
|
||||
'api_key' => ['required', 'string', 'min:10'],
|
||||
'api_secret' => ['required', 'string', 'min:10'],
|
||||
...BankingProvider::Binance->credentialRules(),
|
||||
'country' => ['required', 'string', 'size:2'],
|
||||
];
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
namespace App\Http\Requests\OpenBanking;
|
||||
|
||||
use App\Enums\BankingProvider;
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
|
||||
class ConnectBitpandaRequest extends FormRequest
|
||||
|
|
@ -17,7 +18,7 @@ class ConnectBitpandaRequest extends FormRequest
|
|||
public function rules(): array
|
||||
{
|
||||
return [
|
||||
'api_key' => ['required', 'string', 'min:10'],
|
||||
...BankingProvider::Bitpanda->credentialRules(),
|
||||
'country' => ['required', 'string', 'size:2'],
|
||||
];
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
namespace App\Http\Requests\OpenBanking;
|
||||
|
||||
use App\Enums\BankingProvider;
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
|
||||
class ConnectCoinbaseRequest extends FormRequest
|
||||
|
|
@ -17,8 +18,7 @@ class ConnectCoinbaseRequest extends FormRequest
|
|||
public function rules(): array
|
||||
{
|
||||
return [
|
||||
'api_key_name' => ['required', 'string', 'regex:/^(organizations\/[a-z0-9-]+\/apiKeys\/[a-z0-9-]+|[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12})$/i'],
|
||||
'private_key' => ['required', 'string', 'min:40'],
|
||||
...BankingProvider::Coinbase->credentialRules(),
|
||||
'country' => ['required', 'string', 'size:2'],
|
||||
];
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
namespace App\Http\Requests\OpenBanking;
|
||||
|
||||
use App\Enums\BankingProvider;
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
|
||||
class ConnectIndexaCapitalRequest extends FormRequest
|
||||
|
|
@ -16,8 +17,6 @@ class ConnectIndexaCapitalRequest extends FormRequest
|
|||
*/
|
||||
public function rules(): array
|
||||
{
|
||||
return [
|
||||
'api_token' => ['required', 'string', 'min:10'],
|
||||
];
|
||||
return BankingProvider::IndexaCapital->credentialRules();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
namespace App\Http\Requests\OpenBanking;
|
||||
|
||||
use App\Enums\BankingProvider;
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
|
||||
class ConnectInteractiveBrokersRequest extends FormRequest
|
||||
|
|
@ -16,9 +17,6 @@ class ConnectInteractiveBrokersRequest extends FormRequest
|
|||
*/
|
||||
public function rules(): array
|
||||
{
|
||||
return [
|
||||
'token' => ['required', 'string', 'min:10'],
|
||||
'query_id' => ['required', 'string', 'min:3'],
|
||||
];
|
||||
return BankingProvider::InteractiveBrokers->credentialRules();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
namespace App\Http\Requests\OpenBanking;
|
||||
|
||||
use App\Enums\BankingProvider;
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
|
||||
class ConnectWiseRequest extends FormRequest
|
||||
|
|
@ -12,13 +13,11 @@ class ConnectWiseRequest extends FormRequest
|
|||
}
|
||||
|
||||
/**
|
||||
* @return array<string, array<int, string>>
|
||||
* @return array<string, array<mixed>>
|
||||
*/
|
||||
public function rules(): array
|
||||
{
|
||||
return [
|
||||
'api_token' => ['required', 'string', 'min:10'],
|
||||
];
|
||||
return BankingProvider::Wise->credentialRules();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -26,12 +26,6 @@ class UpdateConnectionCredentialsRequest extends FormRequest
|
|||
return [];
|
||||
}
|
||||
|
||||
$rules = [];
|
||||
|
||||
foreach ($connection->provider->credentialFields() as $field) {
|
||||
$rules[$field->input] = $field->rules;
|
||||
}
|
||||
|
||||
return $rules;
|
||||
return $connection->provider->credentialRules();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue