Skip to content

Commit 26b4f07

Browse files
committed
Refactored LaravelFormsSubmitController, renamed LaravelFormSubmitController to LaravelFormsSubmitController, and updated routes and dependencies accordingly.
1 parent 5940c26 commit 26b4f07

10 files changed

+138
-81
lines changed

config/forms.php

+5
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,9 @@
1717
'development_url' => 'https://development.fuelforms.com/api/f/n6vyojfwjfvyqmylt0th',
1818
'gtm_event' => 'Painter_Application_Form_Submission',
1919
],
20+
21+
'spam_redirects' => [
22+
'yelp' => 'https://yelp.com',
23+
'bbb' => 'https://bbb.org',
24+
],
2025
];
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<!doctype html>
2+
<html lang="en">
3+
<head>
4+
<meta charset="utf-8">
5+
<meta name="viewport" content="width=device-width, initial-scale=1">
6+
@include('googletagmanager::head')
7+
8+
@vite(['resources/css/app.css', 'resources/js/app.js'])
9+
@livewireStyles
10+
</head>
11+
<body>
12+
@yield('content')
13+
14+
@include('googletagmanager::body')
15+
@livewireScripts
16+
</body>
17+
</html>

resources/views/thank-you.blade.php

+14-16
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,16 @@
1-
<div>
2-
<div class="md:h-26 relative h-24 bg-prime lg:h-32"></div>
3-
<div class="prose text-center justify-center mx-auto bg-white py-12 md:py-24 lg:py-48">
4-
@if(session('status') === 'success')
5-
<h1>Someone will be in touch with you soon.</h1>
6-
<h2>Take care.</h2>
7-
@elseif(session('status') === 'failure')
8-
<h1>There was a problem with your submission, please try again later.</h1>
9-
@else
10-
<h1>Hmmmmm.</h1>
11-
@endif
1+
@extends('laravel-forms::components.layouts.app')
122

13-
@if(session('status') === 'failure')
14-
<h1>There was a problem with your submission, please try again later.</h1>
15-
<p>{{ session('error') }}</p>
16-
@endif
3+
@section('content')
4+
<div>
5+
<div class="prose text-center justify-center mx-auto bg-white py-12 md:py-24 lg:py-48">
6+
@if(session('status') === 'success')
7+
<h1>Someone will be in touch with you soon.</h1>
8+
<h2>Take care.</h2>
9+
@elseif(session('status') === 'failure')
10+
<h1>There was a problem with your submission, please try again later.</h1>
11+
@else
12+
<h1>Hmmmmm.</h1>
13+
@endif
14+
</div>
1715
</div>
18-
</div>
16+
@endsection

src/Commands/LaravelFormsCommand.php

-19
This file was deleted.

src/Http/Controllers/LaravelFormSubmitController.php src/Http/Controllers/LaravelFormsSubmitController.php

+26-19
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,10 @@
55
use Illuminate\Http\Request;
66
use Fuelviews\LaravelForms\Contracts\LaravelFormsHandlerService;
77
use Illuminate\Routing\Controller;
8+
use Illuminate\Support\Carbon;
9+
use Spatie\GoogleTagManager\GoogleTagManager;
810

9-
class LaravelFormSubmitController extends Controller
11+
class LaravelFormsSubmitController extends Controller
1012
{
1113
protected LaravelFormsHandlerService $formHandler;
1214

@@ -15,18 +17,11 @@ public function __construct(LaravelFormsHandlerService $formHandler)
1517
$this->formHandler = $formHandler;
1618
}
1719

18-
public function handle(Request $request)
20+
public function handle(Request $request): \Illuminate\Http\RedirectResponse
1921
{
20-
// Check for UTM parameters and handle their absence
21-
$gclid = $request->input('gclid', 'gclid'); // Provide a default value or handle it differently
22-
23-
\Log::info('Parameters', [
24-
'gclid' => $gclid,
25-
]);
26-
27-
/*if ($this->isSpamRequest($request)) {
28-
return redirect()->to('https://yelp.com');
29-
}*/
22+
if ($this->isSpamRequest($request)) {
23+
return $this->redirectSpam();
24+
}
3025

3126
$validatedData = $request->validate([
3227
'firstName' => 'required|min:2|max:24',
@@ -44,7 +39,6 @@ public function handle(Request $request)
4439
'utm_term' => 'nullable|string',
4540
'utm_content' => 'nullable|string',
4641
]);
47-
4842
$validatedData['ip'] = $request->ip();
4943

5044
$data = [
@@ -56,10 +50,14 @@ public function handle(Request $request)
5650
$result = $this->formHandler->handle($data);
5751

5852
if ($result['status'] === 'success') {
53+
app(GoogleTagManager::class)->flash('event', $data['gtmEventName'], [
54+
'event_label' => $data['gtmEventName'],
55+
]);
56+
5957
return redirect()->route('thank-you')->with('status', 'success');
60-
} else {
61-
return redirect()->route('thank-you')->with('status', 'failure')->with('error', $result['error'] ?? 'An unknown error occurred.');
6258
}
59+
60+
return redirect()->route('thank-you')->with('status', 'failure');
6361
}
6462

6563
private function getApiUrl($formKey, $lastSubmission)
@@ -73,17 +71,26 @@ private function getApiUrl($formKey, $lastSubmission)
7371
return false;
7472
}
7573

76-
/*if (app()->isProduction() && ! config('app.debug') ? 'production_url' : 'development_url' && $lastSubmission && now()->diffInMinutes($lastSubmission) < 60) {
77-
return redirect(route('home'));
78-
}*/
74+
if (app()->isProduction() && !config('app.debug') && $lastSubmission && now()->diffInMinutes(Carbon::parse($lastSubmission)) < 60) {
75+
return redirect()->back();
76+
}
7977

8078
return $url;
8179
}
8280

83-
protected function isSpamRequest(Request $request)
81+
protected function isSpamRequest(Request $request): bool
8482
{
8583
return ! is_null($request->input('_gotcha')) ||
8684
! is_null($request->input('is_spam')) ||
8785
$request->has('fakeSubmitClicked');
8886
}
87+
88+
protected function redirectSpam(): \Illuminate\Http\RedirectResponse
89+
{
90+
$redirects = config('forms.spam_redirects', []);
91+
92+
$randomRedirect = array_rand($redirects);
93+
94+
return redirect()->to($redirects[$randomRedirect]);
95+
}
8996
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
<?php
2+
3+
namespace Fuelviews\LaravelForms\Http\Middleware;
4+
5+
use Closure;
6+
use Illuminate\Http\Request;
7+
use Illuminate\Support\Facades\Cookie;
8+
use Illuminate\Support\Facades\Log;
9+
10+
class CaptureUtmParameters
11+
{
12+
public function handle(Request $request, Closure $next)
13+
{
14+
$response = $next($request);
15+
16+
$utmParameters = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content'];
17+
18+
foreach ($utmParameters as $param) {
19+
if (($value = $request->query($param)) && !Cookie::has($param)) {
20+
Cookie::queue($param, $value, 43200);
21+
}
22+
}
23+
24+
return $response;
25+
}
26+
}
+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<?php
2+
3+
namespace App\Http\Middleware;
4+
5+
use Illuminate\Cookie\Middleware\EncryptCookies as Middleware;
6+
7+
class EncryptCookies extends Middleware
8+
{
9+
/**
10+
* The names of the cookies that should not be encrypted.
11+
*
12+
* @var array<int, string>
13+
*/
14+
protected $except = [
15+
'gclid',
16+
'utm_source',
17+
'utm_medium',
18+
'utm_campaign',
19+
'utm_term',
20+
'utm_content',
21+
];
22+
}

src/Http/Middleware/HandleGclid.php

+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<?php
2+
3+
namespace App\Http\Middleware;
4+
5+
use Closure;
6+
use Illuminate\Http\Request;
7+
use Illuminate\Support\Facades\Cookie;
8+
9+
class HandleGclid
10+
{
11+
public function handle(Request $request, Closure $next)
12+
{
13+
$response = $next($request);
14+
15+
if ($gclid = $request->query('gclid')) {
16+
$cookie = Cookie::make('gclid', $gclid, 60 * 24 * 30);
17+
$response->cookie($cookie);
18+
}
19+
20+
return $response;
21+
}
22+
}

src/LaravelFormsServiceProvider.php

+6-12
Original file line numberDiff line numberDiff line change
@@ -2,37 +2,31 @@
22

33
namespace Fuelviews\LaravelForms;
44

5-
use Fuelviews\LaravelForms\Commands\LaravelFormsCommand;
65
use Fuelviews\LaravelForms\Contracts\LaravelFormsHandlerService;
7-
use Fuelviews\LaravelForms\Http\Controllers\LaravelFormSubmitController;
6+
use Fuelviews\LaravelForms\Http\Controllers\LaravelFormsSubmitController;
87
use Illuminate\Support\Facades\Route;
98
use Spatie\LaravelPackageTools\Package;
109
use Spatie\LaravelPackageTools\PackageServiceProvider;
10+
use Fuelviews\LaravelForms\Services\LaravelFormsSubmitService;
1111

1212
class LaravelFormsServiceProvider extends PackageServiceProvider
1313
{
1414
public function configurePackage(Package $package): void
1515
{
16-
/*
17-
* This class is a Package Service Provider
18-
*
19-
* More info: https://github.com/spatie/laravel-package-tools
20-
*/
2116
$package
2217
->name('laravel-forms')
2318
->hasConfigFile('forms')
24-
->hasViews('laravel-forms')
25-
->hasCommand(LaravelFormsCommand::class);
19+
->hasViews('laravel-forms');
2620
}
2721

2822
public function PackageRegistered(): void
2923
{
3024
$this->app->bind(
31-
'Fuelviews\LaravelForms\Contracts\LaravelFormsHandlerService',
32-
'Fuelviews\LaravelForms\Services\LaravelFormsSubmitService' // Replace with your actual implementation
25+
LaravelFormsHandlerService::class,
26+
LaravelFormsSubmitService::class,
3327
);
3428

35-
Route::post('/validate-form', [LaravelFormSubmitController::class, 'handle'])
29+
Route::post('/validate-form', [LaravelFormsSubmitController::class, 'handle'])
3630
->name('validate.form');
3731

3832
Route::get('/thank-you', function () {

src/Services/LaravelFormsSubmitService.php

-15
Original file line numberDiff line numberDiff line change
@@ -9,21 +9,8 @@
99

1010
class LaravelFormsSubmitService implements LaravelFormsHandlerService
1111
{
12-
/*protected $gtm;
13-
14-
public function __construct(GoogleTagManager $gtm)
15-
{
16-
$this->gtm = $gtm;
17-
}*/
18-
19-
/**
20-
* @throws ConnectionException
21-
*/
2212
public function handle(array $data): array
2313
{
24-
// Debugging the URL
25-
\Log::info("Attempting to post to URL: ", ['url' => $data['url']]);
26-
2714
try {
2815
$response = Http::withOptions(['verify' => false])->asForm()->post($data['url'], $data['validatedData']);
2916

@@ -33,8 +20,6 @@ public function handle(array $data): array
3320
return ['status' => 'success'];
3421
}
3522

36-
\Log::info("Status ", ['status' => $data['status']]);
37-
3823
return ['status' => 'failure', 'error' => $response->body()];
3924
} catch (\Exception $exception) {
4025
return ['status' => 'error', 'message' => $exception->getMessage()];

0 commit comments

Comments
 (0)