7
7
use Give \DonationForms \Models \DonationForm ;
8
8
use Give \Framework \FieldsAPI \Actions \CreateValidatorFromFormFields ;
9
9
use Give \Framework \FieldsAPI \Exceptions \NameCollisionException ;
10
+ use Give \Framework \FieldsAPI \Field ;
11
+ use Give \Framework \FieldsAPI \SecurityChallenge ;
10
12
use Give \Framework \Http \Response \Types \JsonResponse ;
11
13
use Give \Framework \Support \Contracts \Arrayable ;
12
14
use WP_Error ;
@@ -44,6 +46,7 @@ public static function fromRequest(array $requestData): self
44
46
* compares the request against the individual fields,
45
47
* their types and validation rules.
46
48
*
49
+ * @unreleased updated to exclude security challenge fields during pre-validation
47
50
* @since 3.22.0 added additional validation for form validity, added givewp_donation_form_fields_validated action
48
51
* @since 3.0.0
49
52
*
@@ -60,8 +63,8 @@ public function validate(): JsonResponse
60
63
throw new DonationFormForbidden ();
61
64
}
62
65
63
- $ formFields = array_filter ($ form ->schema ()->getFields (), static function ($ field ) use ($ request ) {
64
- return array_key_exists ($ field ->getName (), $ request );
66
+ $ formFields = array_filter ($ form ->schema ()->getFields (), function ($ field ) use ($ request ) {
67
+ return array_key_exists ($ field ->getName (), $ request ) && ! $ this -> isSecurityChallengeField ( $ field ) ;
65
68
});
66
69
67
70
$ validator = (new CreateValidatorFromFormFields ())($ formFields , $ request );
@@ -135,4 +138,12 @@ public function toArray(): array
135
138
{
136
139
return get_object_vars ($ this );
137
140
}
141
+
142
+ /**
143
+ * @unreleased
144
+ */
145
+ protected function isSecurityChallengeField (Field $ field ): bool
146
+ {
147
+ return is_subclass_of ($ field , SecurityChallenge::class);
148
+ }
138
149
}
0 commit comments