Skip to content

Instantly share code, notes, and snippets.

@karakhanyans
Created May 1, 2024 10:13
Show Gist options
  • Save karakhanyans/53c4de9f693934209fb70449d195ba00 to your computer and use it in GitHub Desktop.
Save karakhanyans/53c4de9f693934209fb70449d195ba00 to your computer and use it in GitHub Desktop.
TrafficMiddleware.php
<?php
namespace App\Http\Middleware;
use App\Models\Traffic;
use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Cookie;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Str;
use Symfony\Component\HttpFoundation\Response;
class TrafficMiddleware
{
/**
* Handle an incoming request.
*
* @param \Closure(Request): (Response) $next
*/
public function handle(Request $request, Closure $next): Response
{
try {
if (! Str::contains($request->getRequestUri(), [
'/admin',
'/livewire',
'/build',
'/android-chrome',
'/apple-touch',
'/lemon-squeezy/',
'/api/',
'/images',
'wp-includes',
])) {
if ($request->hasCookie('uuid')) {
$uuid = $request->cookie('uuid');
} else {
$uuid = Str::uuid()->toString();
Cookie::queue('uuid', $uuid, 60 * 24 * 30);
}
Traffic::create([
'ip' => $request->ip(),
'uuid' => $uuid, 'url' => Str::before($request->getRequestUri(), '?'),
'ref' => $request->get('ref') ?? $request->get('referrer'),
'utm_medium' => $request->get('utm_medium'),
'utm_source' => $request->get('utm_source'),
'utm_campaign' => $request->get('utm_campaign'),
'referer' => Str::before($request->server('HTTP_REFERER'), '?'),
'data' => $request->all(),
]);
}
} catch (\Exception $exception) {
Log::error($exception);
}
return $next($request);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment