Files
aibuddytool/app/Http/Middleware/StoreGeoSession.php
Charles T 36efe23dcc Add (routes): All routes possible
Add (pages): home country page
2023-07-26 03:10:36 +08:00

65 lines
1.6 KiB
PHP

<?php
namespace App\Http\Middleware;
use Closure;
use Stevebauman\Location\Facades\Location;
use Galahad\TimezoneMapper\Facades\TimezoneMapper;
class StoreGeoSession
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
$needs_update = false;
$ip = get_current_ip();
$encoded_ip = base64_encode($ip);
if (! $request->session()->has('geokey')) {
if ($request->session()->get('geokey') != $encoded_ip) {
$request->session()->put('geokey', $encoded_ip);
$needs_update = true;
}
} else {
$request->session()->put('geokey', $encoded_ip);
$needs_update = true;
}
if (!$request->session()->has('timezone')) {
$needs_update = true;
}
if ($needs_update)
{
if ($payload = Location::get($ip))
{
$request->session()->put('geodata', base64_encode(json_encode($payload)));
$isocode = $payload->isoCode;
}
else
{
$isocode = '*';
}
$request->session()->put('country', $isocode);
if (isset($payload->latitude) && isset($payload->longitude))
{
$request->session()->put('timezone', TimezoneMapper::mapCoordinates($payload->latitude, $payload->longitude));
}
}
return $next($request);
}
}