Skip to main content

Black Friday 2025! Only until December 1st: coupon FRIDAY25 for 40% off Yearly/Lifetime membership!

Read more here

Loydtafireyi/ZimCart-Laravel-Ecommerce

213 stars
4 code files
View Loydtafireyi/ZimCart-Laravel-Ecommerce on GitHub

app/Validators/ReCaptcha.php

Open in GitHub
use GuzzleHttp\Client;
 
class ReCaptcha
{
public function validate($attribute, $value, $parameters, $validator)
{
$client = new Client;
$response = $client->post(
'https://www.google.com/recaptcha/api/siteverify',
[
'form_params' =>
[
'secret' => config('services.recaptcha.secret'),
'response' => $value
]
]
);
$body = json_decode((string)$response->getBody());
return $body->success;
}
}

resources/views/contact.blade.php

Open in GitHub
//
@section('css')
<script src='https://www.google.com/recaptcha/api.js'></script>
@endsection
//
@if(config('services.recaptcha.key'))
<div class="form-group">
<div class="g-recaptcha"
data-sitekey="{{config('services.recaptcha.key')}}">
</div>
@error('g-recaptcha-response')
<span class="invalid-feedback mt-3" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
@endif
//
<script
src="https://maps.googleapis.com/maps/api/js?key={{ env('GOOGLE_MAPS_KEY') }}&callback=initMap">
</script>
</body>
</html>
 
@endsection

app/Providers/AppServiceProvider.php

Open in GitHub
use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Validator;
 
class AppServiceProvider extends ServiceProvider
{
//
public function boot()
{
//
Validator::extend('recaptcha', 'App\\Validators\\ReCaptcha@validate');
}
}

app/Http/Controllers/FrontendController.php

Open in GitHub
class FrontendController extends Controller
{
//
public function contactStore(Request $request)
{
$request->validate([
'name' => 'required',
'email' => 'required',
'subject' => 'required',
'message' => 'required',
'g-recaptcha-response' => config('services.recaptcha.key') ? 'required|recaptcha' : 'nullable',
]);
//
}
//
}

We'd Love Your Feedback

Tell us what you like or what we can improve

Feel free to share anything you like or dislike about this page or the platform in general.