Skip to content
This repository was archived by the owner on Jun 10, 2024. It is now read-only.

Commit 1900e03

Browse files
committed
Default validate method response is of type array when reCAPTCHA v3 is used
1 parent 0ce0061 commit 1900e03

File tree

1 file changed

+42
-2
lines changed

1 file changed

+42
-2
lines changed

src/ReCaptchaBuilder.php

Lines changed: 42 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -110,14 +110,27 @@ public function setSkipByIp(bool $skip_by_ip): ReCaptchaBuilder {
110110
return $this;
111111
}
112112

113+
/**
114+
* @return array|mixed
115+
*/
116+
protected function getIpWhitelist() {
117+
$whitelist = config('recaptcha.skip_ip', []);
118+
119+
if(!is_array($whitelist)) {
120+
$whitelist = explode(',', $whitelist);
121+
}
122+
123+
return $whitelist;
124+
}
125+
113126
/**
114127
* Checks whether the user IP address is among IPs "to be skipped"
115128
*
116129
* @return boolean
117130
*/
118131
public function skipByIp(): bool {
119132

120-
return (in_array(request()->ip(), config('recaptcha.skip_ip', [])));
133+
return (in_array(request()->ip(), $this->getIpWhitelist()));
121134
}
122135

123136
/**
@@ -221,6 +234,15 @@ public function htmlScriptTagJsApiV3(?array $configuration = []): string {
221234
public function validate($response) {
222235

223236
if ($this->skip_by_ip) {
237+
if ($this->returnArray()) {
238+
// Add 'skip_by_ip' field to response
239+
return [
240+
'skip_by_ip' => true,
241+
'score' => 0.9,
242+
'success' => true
243+
];
244+
}
245+
224246
return true;
225247
}
226248

@@ -243,16 +265,34 @@ public function validate($response) {
243265
else {
244266
$curl_response = file_get_contents($url);
245267
}
268+
246269
if (is_null($curl_response) || empty($curl_response)) {
270+
if ($this->returnArray()) {
271+
// Add 'error' field to response
272+
return [
273+
'error' => 'cURL response empty',
274+
'score' => 0.1,
275+
'success' => false
276+
];
277+
}
278+
247279
return false;
248280
}
249281
$response = json_decode(trim($curl_response), true);
250282

251-
if ($this->version == 'v3') {
283+
if ($this->returnArray()) {
252284
return $response;
253285
}
254286

255287
return $response['success'];
256288

257289
}
290+
291+
/**
292+
* @return bool
293+
*/
294+
protected function returnArray(): bool {
295+
296+
return ($this->version == 'v3');
297+
}
258298
}

0 commit comments

Comments
 (0)