File Manager Lite
Dir:
/home/codewavebd/public_html/app/Http/Controllers
Upload
[..]
Admin/
Rename
Del
ChatController.php (2.34 KB)
Edit
Rename
Del
Controller.php (77 B)
Edit
Rename
Del
HomeController.php (4.47 KB)
Edit
Rename
Del
LeadController.php (4.42 KB)
Edit
Rename
Del
Edit: LeadController.php
<?php namespace App\Http\Controllers; use App\Models\ContactRequest; use App\Models\LeadRequest; use App\Models\ActivityLog; use Illuminate\Http\Request; use Illuminate\Support\Facades\RateLimiter; class LeadController extends Controller { public function submitContact(Request $request) { // 1. Rate Limiting: Max 3 requests per IP per minute $ipKey = 'contact-submit:' . $request->ip(); if (RateLimiter::tooManyAttempts($ipKey, 3)) { $seconds = RateLimiter::availableIn($ipKey); return back()->withInput()->withErrors(['captcha' => "Too many requests. Please try again in {$seconds} seconds."]); } // 2. Validate Inputs $request->validate([ 'name' => 'required|string|max:100', 'phone' => 'required|string|max:20', 'whatsapp' => 'nullable|string|max:20', 'email' => 'nullable|email|max:100', 'budget' => 'nullable|string|max:50', 'service_id' => 'required|exists:services,id', 'description' => 'required|string|max:2000', 'math_answer' => 'required|integer', ]); // 3. Captcha Check if ($request->input('math_answer') != session('math_captcha')) { return back()->withInput()->withErrors(['captcha' => 'Invalid math captcha answer. Please try again.']); } // Hit Rate Limiter RateLimiter::hit($ipKey, 60); // 4. Save to Database $lead = ContactRequest::create([ 'name' => $request->name, 'phone' => $request->phone, 'whatsapp' => $request->whatsapp, 'email' => $request->email, 'budget' => $request->budget, 'service_id' => $request->service_id, 'description' => $request->description, 'status' => 'new', ]); // Log client action ActivityLog::create([ 'action' => "New Service Request Lead submitted by {$request->name} (Phone: {$request->phone})", 'ip_address' => $request->ip(), 'user_agent' => $request->userAgent(), ]); // Regenerate captcha session()->forget('math_captcha'); return back()->with('success', 'Your service request has been received. Our team will contact you via WhatsApp shortly!'); } public function submitDemo(Request $request) { // 1. Rate Limiting: Max 3 requests per IP per minute $ipKey = 'demo-submit:' . $request->ip(); if (RateLimiter::tooManyAttempts($ipKey, 3)) { $seconds = RateLimiter::availableIn($ipKey); return back()->withInput()->withErrors(['captcha' => "Too many requests. Please try again in {$seconds} seconds."]); } // 2. Validate Inputs $request->validate([ 'name' => 'required|string|max:100', 'company' => 'nullable|string|max:100', 'phone' => 'required|string|max:20', 'whatsapp' => 'nullable|string|max:20', 'email' => 'nullable|email|max:100', 'software_id' => 'required|exists:software_products,id', 'custom_requirements' => 'nullable|string|max:2000', 'math_answer' => 'required|integer', ]); // 3. Captcha Check if ($request->input('math_answer') != session('math_captcha')) { return back()->withInput()->withErrors(['captcha' => 'Invalid math captcha answer. Please try again.']); } // Hit Rate Limiter RateLimiter::hit($ipKey, 60); // 4. Save to Database $lead = LeadRequest::create([ 'name' => $request->name, 'company' => $request->company, 'phone' => $request->phone, 'whatsapp' => $request->whatsapp, 'email' => $request->email, 'software_id' => $request->software_id, 'custom_requirements' => $request->custom_requirements, 'status' => 'new', ]); // Log client action ActivityLog::create([ 'action' => "New Software Demo Lead submitted by {$request->name} for Product ID: {$request->software_id}", 'ip_address' => $request->ip(), 'user_agent' => $request->userAgent(), ]); // Regenerate captcha session()->forget('math_captcha'); return back()->with('success', 'Your demo request has been submitted. Our team will reach out shortly to schedule the session.'); } }
Simpan