$user->id, 'provider' => $input['provider'], 'profile' => $input['name'], 'project_id' => isset($input['global']) && $input['global'] ? null : $project->id, ]); $storageProvider->credentials = $storageProvider->provider()->credentialData($input); try { if (! $storageProvider->provider()->connect()) { throw ValidationException::withMessages([ 'provider' => __("Couldn't connect to the provider"), ]); } } catch (\Throwable $e) { throw ValidationException::withMessages([ 'provider' => $e->getMessage(), ]); } $storageProvider->save(); return $storageProvider; } public static function rules(array $input): array { $rules = [ 'provider' => [ 'required', Rule::in(config('core.storage_providers')), ], 'name' => [ 'required', ], ]; if (isset($input['provider'])) { $provider = (new StorageProvider(['provider' => $input['provider']]))->provider(); $rules = array_merge($rules, $provider->validationRules()); } return $rules; } }