Passed
Push — master ( ac7ac5...67fb51 )
by Roberto
03:29
created
src/routes/routes.php 1 patch
Indentation   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -9,6 +9,6 @@
 block discarded – undo
9 9
  */
10 10
 
11 11
 Route::get(
12
-	config('recaptcha.default_validation_route', 'biscolab-recaptcha/validate'),
13
-	['uses' => 'Biscolab\ReCaptcha\Controllers\ReCaptchaController@validateV3']
12
+    config('recaptcha.default_validation_route', 'biscolab-recaptcha/validate'),
13
+    ['uses' => 'Biscolab\ReCaptcha\Controllers\ReCaptchaController@validateV3']
14 14
 )->middleware('web');
15 15
\ No newline at end of file
Please login to merge, or discard this patch.
src/Controllers/ReCaptchaController.php 1 patch
Indentation   +7 added lines, -7 removed lines patch added patch discarded remove patch
@@ -18,12 +18,12 @@
 block discarded – undo
18 18
  */
19 19
 class ReCaptchaController extends Controller {
20 20
 
21
-	/**
22
-	 * @return array
23
-	 */
24
-	public function validateV3(): array {
21
+    /**
22
+     * @return array
23
+     */
24
+    public function validateV3(): array {
25 25
 
26
-		$token = request()->input(config('recaptcha.default_token_parameter_name', 'token'), '');
27
-		return recaptcha()->validate($token);
28
-	}
26
+        $token = request()->input(config('recaptcha.default_token_parameter_name', 'token'), '');
27
+        return recaptcha()->validate($token);
28
+    }
29 29
 }
30 30
\ No newline at end of file
Please login to merge, or discard this patch.
src/ReCaptchaBuilder.php 1 patch
Indentation   +210 added lines, -210 removed lines patch added patch discarded remove patch
@@ -14,166 +14,166 @@  discard block
 block discarded – undo
14 14
 
15 15
 class ReCaptchaBuilder {
16 16
 
17
-	/**
18
-	 * The Site key
19
-	 * please visit https://developers.google.com/recaptcha/docs/start
20
-	 * @var string
21
-	 */
22
-	protected $api_site_key;
23
-
24
-	/**
25
-	 * The Secret key
26
-	 * please visit https://developers.google.com/recaptcha/docs/start
27
-	 * @var string
28
-	 */
29
-	protected $api_secret_key;
30
-
31
-	/**
32
-	 * The chosen ReCAPTCHA version
33
-	 * please visit https://developers.google.com/recaptcha/docs/start
34
-	 * @var string
35
-	 */
36
-	protected $version;
37
-
38
-	/**
39
-	 * Whether is true the ReCAPTCHA is inactive
40
-	 * @var boolean
41
-	 */
42
-	protected $skip_by_ip = false;
43
-
44
-	/**
45
-	 * The API request URI
46
-	 */
47
-	protected $api_url = 'https://www.google.com/recaptcha/api/siteverify';
48
-
49
-	public function __construct($api_site_key, $api_secret_key, $version = 'v2') {
50
-
51
-		$this->setApiSiteKey($api_site_key);
52
-		$this->setApiSecretKey($api_secret_key);
53
-		$this->setVersion($version);
54
-		$this->setSkipByIp($this->skipByIp());
55
-	}
56
-
57
-	/**
58
-	 * @param string $api_site_key
59
-	 *
60
-	 * @return ReCaptchaBuilder
61
-	 */
62
-	public function setApiSiteKey(string $api_site_key): ReCaptchaBuilder {
63
-
64
-		$this->api_site_key = $api_site_key;
65
-
66
-		return $this;
67
-	}
68
-
69
-	/**
70
-	 * @param string $api_secret_key
71
-	 *
72
-	 * @return ReCaptchaBuilder
73
-	 */
74
-	public function setApiSecretKey(string $api_secret_key): ReCaptchaBuilder {
75
-
76
-		$this->api_secret_key = $api_secret_key;
77
-
78
-		return $this;
79
-	}
80
-
81
-	/**
82
-	 * @param string $version
83
-	 *
84
-	 * @return ReCaptchaBuilder
85
-	 */
86
-	public function setVersion(string $version): ReCaptchaBuilder {
87
-
88
-		$this->version = $version;
89
-
90
-		return $this;
91
-	}
92
-
93
-	/**
94
-	 * @return string
95
-	 */
96
-	public function getVersion(): string {
97
-
98
-		return $this->version;
99
-	}
100
-
101
-	/**
102
-	 * @param bool $skip_by_ip
103
-	 *
104
-	 * @return ReCaptchaBuilder
105
-	 */
106
-	public function setSkipByIp(bool $skip_by_ip): ReCaptchaBuilder {
107
-
108
-		$this->skip_by_ip = $skip_by_ip;
109
-
110
-		return $this;
111
-	}
112
-
113
-	/**
114
-	 * Checks whether the user IP address is among IPs "to be skipped"
115
-	 *
116
-	 * @return boolean
117
-	 */
118
-	public function skipByIp(): bool {
119
-
120
-		return (in_array(request()->ip(), config('recaptcha.skip_ip', [])));
121
-	}
122
-
123
-	/**
124
-	 * Write script HTML tag in you HTML code
125
-	 * Insert before </head> tag
126
-	 *
127
-	 * @param string|null $formId
128
-	 * @param array|null  $configuration
129
-	 *
130
-	 * @return string
131
-	 * @throws Exception
132
-	 */
133
-	public function htmlScriptTagJsApi(?string $formId = '', ?array $configuration = []): string {
134
-
135
-		if ($this->skip_by_ip) {
136
-			return '';
137
-		}
138
-
139
-		switch ($this->version) {
140
-			case 'v3':
141
-				$html = "<script src=\"https://www.google.com/recaptcha/api.js?render={$this->api_site_key}\"></script>";
142
-				break;
143
-			default:
144
-				$html = "<script src=\"https://www.google.com/recaptcha/api.js\" async defer></script>";
145
-		}
146
-
147
-		if ($this->version == 'invisible') {
148
-			if (!$formId) {
149
-				throw new Exception("formId required", 1);
150
-			}
151
-			$html .= '<script>
17
+    /**
18
+     * The Site key
19
+     * please visit https://developers.google.com/recaptcha/docs/start
20
+     * @var string
21
+     */
22
+    protected $api_site_key;
23
+
24
+    /**
25
+     * The Secret key
26
+     * please visit https://developers.google.com/recaptcha/docs/start
27
+     * @var string
28
+     */
29
+    protected $api_secret_key;
30
+
31
+    /**
32
+     * The chosen ReCAPTCHA version
33
+     * please visit https://developers.google.com/recaptcha/docs/start
34
+     * @var string
35
+     */
36
+    protected $version;
37
+
38
+    /**
39
+     * Whether is true the ReCAPTCHA is inactive
40
+     * @var boolean
41
+     */
42
+    protected $skip_by_ip = false;
43
+
44
+    /**
45
+     * The API request URI
46
+     */
47
+    protected $api_url = 'https://www.google.com/recaptcha/api/siteverify';
48
+
49
+    public function __construct($api_site_key, $api_secret_key, $version = 'v2') {
50
+
51
+        $this->setApiSiteKey($api_site_key);
52
+        $this->setApiSecretKey($api_secret_key);
53
+        $this->setVersion($version);
54
+        $this->setSkipByIp($this->skipByIp());
55
+    }
56
+
57
+    /**
58
+     * @param string $api_site_key
59
+     *
60
+     * @return ReCaptchaBuilder
61
+     */
62
+    public function setApiSiteKey(string $api_site_key): ReCaptchaBuilder {
63
+
64
+        $this->api_site_key = $api_site_key;
65
+
66
+        return $this;
67
+    }
68
+
69
+    /**
70
+     * @param string $api_secret_key
71
+     *
72
+     * @return ReCaptchaBuilder
73
+     */
74
+    public function setApiSecretKey(string $api_secret_key): ReCaptchaBuilder {
75
+
76
+        $this->api_secret_key = $api_secret_key;
77
+
78
+        return $this;
79
+    }
80
+
81
+    /**
82
+     * @param string $version
83
+     *
84
+     * @return ReCaptchaBuilder
85
+     */
86
+    public function setVersion(string $version): ReCaptchaBuilder {
87
+
88
+        $this->version = $version;
89
+
90
+        return $this;
91
+    }
92
+
93
+    /**
94
+     * @return string
95
+     */
96
+    public function getVersion(): string {
97
+
98
+        return $this->version;
99
+    }
100
+
101
+    /**
102
+     * @param bool $skip_by_ip
103
+     *
104
+     * @return ReCaptchaBuilder
105
+     */
106
+    public function setSkipByIp(bool $skip_by_ip): ReCaptchaBuilder {
107
+
108
+        $this->skip_by_ip = $skip_by_ip;
109
+
110
+        return $this;
111
+    }
112
+
113
+    /**
114
+     * Checks whether the user IP address is among IPs "to be skipped"
115
+     *
116
+     * @return boolean
117
+     */
118
+    public function skipByIp(): bool {
119
+
120
+        return (in_array(request()->ip(), config('recaptcha.skip_ip', [])));
121
+    }
122
+
123
+    /**
124
+     * Write script HTML tag in you HTML code
125
+     * Insert before </head> tag
126
+     *
127
+     * @param string|null $formId
128
+     * @param array|null  $configuration
129
+     *
130
+     * @return string
131
+     * @throws Exception
132
+     */
133
+    public function htmlScriptTagJsApi(?string $formId = '', ?array $configuration = []): string {
134
+
135
+        if ($this->skip_by_ip) {
136
+            return '';
137
+        }
138
+
139
+        switch ($this->version) {
140
+            case 'v3':
141
+                $html = "<script src=\"https://www.google.com/recaptcha/api.js?render={$this->api_site_key}\"></script>";
142
+                break;
143
+            default:
144
+                $html = "<script src=\"https://www.google.com/recaptcha/api.js\" async defer></script>";
145
+        }
146
+
147
+        if ($this->version == 'invisible') {
148
+            if (!$formId) {
149
+                throw new Exception("formId required", 1);
150
+            }
151
+            $html .= '<script>
152 152
 		       function biscolabLaravelReCaptcha(token) {
153 153
 		         document.getElementById("' . $formId . '").submit();
154 154
 		       }
155 155
 		     </script>';
156
-		}
157
-		elseif ($this->version == 'v3') {
156
+        }
157
+        elseif ($this->version == 'v3') {
158 158
 
159
-			$action = array_get($configuration, 'action', 'homepage');
159
+            $action = array_get($configuration, 'action', 'homepage');
160 160
 
161
-			$js_custom_validation = array_get($configuration, 'custom_validation', '');
161
+            $js_custom_validation = array_get($configuration, 'custom_validation', '');
162 162
 
163
-			// Check if set custom_validation. That function will override default fetch validation function
164
-			if ($js_custom_validation) {
163
+            // Check if set custom_validation. That function will override default fetch validation function
164
+            if ($js_custom_validation) {
165 165
 
166
-				$validate_function = ($js_custom_validation) ? "{$js_custom_validation}(token);" : '';
167
-			}
168
-			else {
166
+                $validate_function = ($js_custom_validation) ? "{$js_custom_validation}(token);" : '';
167
+            }
168
+            else {
169 169
 
170
-				$js_then_callback = array_get($configuration, 'callback_then', '');
171
-				$js_callback_catch = array_get($configuration, 'callback_catch', '');
170
+                $js_then_callback = array_get($configuration, 'callback_then', '');
171
+                $js_callback_catch = array_get($configuration, 'callback_catch', '');
172 172
 
173
-				$js_then_callback = ($js_then_callback) ? "{$js_then_callback}(response)" : '';
174
-				$js_callback_catch = ($js_callback_catch) ? "{$js_callback_catch}(err)" : '';
173
+                $js_then_callback = ($js_then_callback) ? "{$js_then_callback}(response)" : '';
174
+                $js_callback_catch = ($js_callback_catch) ? "{$js_callback_catch}(err)" : '';
175 175
 
176
-				$validate_function = "
176
+                $validate_function = "
177 177
                 fetch('/" . config('recaptcha.default_validation_route', 'biscolab-recaptcha/validate') . "?" . config('recaptcha.default_token_parameter_name', 'token') . "=' + token, {
178 178
                     headers: {
179 179
                         \"X-Requested-With\": \"XMLHttpRequest\",
@@ -186,9 +186,9 @@  discard block
 block discarded – undo
186 186
                 .catch(function(err) {
187 187
                     {$js_callback_catch}
188 188
                 });";
189
-			}
189
+            }
190 190
 
191
-			$html .= "<script>
191
+            $html .= "<script>
192 192
                     var csrfToken = document.head.querySelector('meta[name=\"csrf-token\"]');
193 193
                   grecaptcha.ready(function() {
194 194
                       grecaptcha.execute('{$this->api_site_key}', {action: '{$action}'}).then(function(token) {
@@ -196,63 +196,63 @@  discard block
 block discarded – undo
196 196
                       });
197 197
                   });
198 198
 		     </script>";
199
-		}
200
-
201
-		return $html;
202
-	}
203
-
204
-	/**
205
-	 * @param array|null $configuration
206
-	 *
207
-	 * @return string
208
-	 */
209
-	public function htmlScriptTagJsApiV3(?array $configuration = []): string {
210
-
211
-		return $this->htmlScriptTagJsApi('', $configuration);
212
-	}
213
-
214
-	/**
215
-	 * Call out to reCAPTCHA and process the response
216
-	 *
217
-	 * @param string $response
218
-	 *
219
-	 * @return boolean|array
220
-	 */
221
-	public function validate($response) {
222
-
223
-		if ($this->skip_by_ip) {
224
-			return true;
225
-		}
226
-
227
-		$params = http_build_query([
228
-			'secret'   => $this->api_secret_key,
229
-			'remoteip' => request()->getClientIp(),
230
-			'response' => $response,
231
-		]);
232
-
233
-		$url = $this->api_url . '?' . $params;
234
-
235
-		if (function_exists('curl_version')) {
236
-			$curl = curl_init($url);
237
-			curl_setopt($curl, CURLOPT_HEADER, false);
238
-			curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
239
-			curl_setopt($curl, CURLOPT_TIMEOUT, 1);
240
-			curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
241
-			$curl_response = curl_exec($curl);
242
-		}
243
-		else {
244
-			$curl_response = file_get_contents($url);
245
-		}
246
-		if (is_null($curl_response) || empty($curl_response)) {
247
-			return false;
248
-		}
249
-		$response = json_decode(trim($curl_response), true);
250
-
251
-		if ($this->version == 'v3') {
252
-			return $response;
253
-		}
254
-
255
-		return $response['success'];
256
-
257
-	}
199
+        }
200
+
201
+        return $html;
202
+    }
203
+
204
+    /**
205
+     * @param array|null $configuration
206
+     *
207
+     * @return string
208
+     */
209
+    public function htmlScriptTagJsApiV3(?array $configuration = []): string {
210
+
211
+        return $this->htmlScriptTagJsApi('', $configuration);
212
+    }
213
+
214
+    /**
215
+     * Call out to reCAPTCHA and process the response
216
+     *
217
+     * @param string $response
218
+     *
219
+     * @return boolean|array
220
+     */
221
+    public function validate($response) {
222
+
223
+        if ($this->skip_by_ip) {
224
+            return true;
225
+        }
226
+
227
+        $params = http_build_query([
228
+            'secret'   => $this->api_secret_key,
229
+            'remoteip' => request()->getClientIp(),
230
+            'response' => $response,
231
+        ]);
232
+
233
+        $url = $this->api_url . '?' . $params;
234
+
235
+        if (function_exists('curl_version')) {
236
+            $curl = curl_init($url);
237
+            curl_setopt($curl, CURLOPT_HEADER, false);
238
+            curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
239
+            curl_setopt($curl, CURLOPT_TIMEOUT, 1);
240
+            curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
241
+            $curl_response = curl_exec($curl);
242
+        }
243
+        else {
244
+            $curl_response = file_get_contents($url);
245
+        }
246
+        if (is_null($curl_response) || empty($curl_response)) {
247
+            return false;
248
+        }
249
+        $response = json_decode(trim($curl_response), true);
250
+
251
+        if ($this->version == 'v3') {
252
+            return $response;
253
+        }
254
+
255
+        return $response['success'];
256
+
257
+    }
258 258
 }
259 259
\ No newline at end of file
Please login to merge, or discard this patch.