diff --git a/app/Enums/BankingProvider.php b/app/Enums/BankingProvider.php index cec2ba10..28faca15 100644 --- a/app/Enums/BankingProvider.php +++ b/app/Enums/BankingProvider.php @@ -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> + */ + 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. * diff --git a/app/Http/Requests/OpenBanking/ConnectBinanceRequest.php b/app/Http/Requests/OpenBanking/ConnectBinanceRequest.php index 02597348..78661859 100644 --- a/app/Http/Requests/OpenBanking/ConnectBinanceRequest.php +++ b/app/Http/Requests/OpenBanking/ConnectBinanceRequest.php @@ -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'], ]; } diff --git a/app/Http/Requests/OpenBanking/ConnectBitpandaRequest.php b/app/Http/Requests/OpenBanking/ConnectBitpandaRequest.php index 500152f5..93c8b27b 100644 --- a/app/Http/Requests/OpenBanking/ConnectBitpandaRequest.php +++ b/app/Http/Requests/OpenBanking/ConnectBitpandaRequest.php @@ -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'], ]; } diff --git a/app/Http/Requests/OpenBanking/ConnectCoinbaseRequest.php b/app/Http/Requests/OpenBanking/ConnectCoinbaseRequest.php index 05433830..f74e9129 100644 --- a/app/Http/Requests/OpenBanking/ConnectCoinbaseRequest.php +++ b/app/Http/Requests/OpenBanking/ConnectCoinbaseRequest.php @@ -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'], ]; } diff --git a/app/Http/Requests/OpenBanking/ConnectIndexaCapitalRequest.php b/app/Http/Requests/OpenBanking/ConnectIndexaCapitalRequest.php index 27b0d3c1..894c35ca 100644 --- a/app/Http/Requests/OpenBanking/ConnectIndexaCapitalRequest.php +++ b/app/Http/Requests/OpenBanking/ConnectIndexaCapitalRequest.php @@ -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(); } } diff --git a/app/Http/Requests/OpenBanking/ConnectInteractiveBrokersRequest.php b/app/Http/Requests/OpenBanking/ConnectInteractiveBrokersRequest.php index b471032e..c1ce9e84 100644 --- a/app/Http/Requests/OpenBanking/ConnectInteractiveBrokersRequest.php +++ b/app/Http/Requests/OpenBanking/ConnectInteractiveBrokersRequest.php @@ -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(); } } diff --git a/app/Http/Requests/OpenBanking/ConnectWiseRequest.php b/app/Http/Requests/OpenBanking/ConnectWiseRequest.php index 02262b5a..21e1d402 100644 --- a/app/Http/Requests/OpenBanking/ConnectWiseRequest.php +++ b/app/Http/Requests/OpenBanking/ConnectWiseRequest.php @@ -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> + * @return array> */ public function rules(): array { - return [ - 'api_token' => ['required', 'string', 'min:10'], - ]; + return BankingProvider::Wise->credentialRules(); } /** diff --git a/app/Http/Requests/OpenBanking/UpdateConnectionCredentialsRequest.php b/app/Http/Requests/OpenBanking/UpdateConnectionCredentialsRequest.php index b2009345..ec0f400f 100644 --- a/app/Http/Requests/OpenBanking/UpdateConnectionCredentialsRequest.php +++ b/app/Http/Requests/OpenBanking/UpdateConnectionCredentialsRequest.php @@ -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(); } }