<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
danieledesantis / laravel-cloudflare-turnstile-react-blade example snippets
use DanieleDeSantis\LaravelTurnstile\Http\Rules\TurnstileValidation;
public function store(Request $request)
{
$request->validate([
'email' => '
use DanieleDeSantis\LaravelTurnstile\Facades\Turnstile;
public function store(Request $request)
{
try {
Turnstile::verify(
$request->input('cf-turnstile-response'),
$request->ip()
);
// Verification successful
} catch (\Exception $e) {
return back()->withErrors(['turnstile' => $e->getMessage()]);
}
}
use DanieleDeSantis\LaravelTurnstile\Http\Middleware\VerifyTurnstile;
// In routes/web.php
Route::post('/contact', [ContactController::class, 'store'])
->middleware('turnstile');
// With custom token field
Route::post('/register', [RegisterController::class, 'store'])
->middleware('turnstile:captcha-token');
use DanieleDeSantis\LaravelTurnstile\Facades\Turnstile;
class LoginTest extends TestCase
{
public function test_user_can_login()
{
// Turnstile is automatically disabled in testing
$response = $this->post('/login', [
'email' => '[email protected]',
'password' => 'password',
'cf-turnstile-response' => 'test-token', // Any value works
]);
$response->assertRedirect('/dashboard');
}
public function test_turnstile_verification()
{
// Enable verification for specific tests
Turnstile::disableTesting();
// Your test logic
// Re-enable testing mode
Turnstile::enableTesting();
}
}
use DanieleDeSantis\LaravelTurnstile\Facades\Turnstile;
// Check if Turnstile is enabled
if (Turnstile::isEnabled()) {
// Get the site key
$siteKey = Turnstile::getSiteKey();
}
// Verify a token
try {
$verified = Turnstile::verify($token, $ipAddress);
} catch (TurnstileVerificationException $e) {
// Handle verification failure
$errorCodes = $e->getErrorCodes();
}
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use App\Http\Requests\Auth\LoginRequest;
use Illuminate\Http\RedirectResponse;
use Inertia\Inertia;
use Inertia\Response;
class AuthenticatedSessionController extends Controller
{
public function create(): Response
{
return Inertia::render('Auth/Login', [
'turnstile_sitekey' => config('turnstile.sitekey'),
]);
}
public function store(LoginRequest $request): RedirectResponse
{
// Validation happens in LoginRequest with TurnstileValidation rule
$request->authenticate();
$request->session()->regenerate();
return redirect()->intended(route('dashboard'));
}
}
namespace App\Http\Requests\Auth;
use DanieleDeSantis\LaravelTurnstile\Http\Rules\TurnstileValidation;
use Illuminate\Foundation\Http\FormRequest;
class LoginRequest extends FormRequest
{
public function rules(): array
{
$rules = [
'email' => ['