Add (routes): All routes possible

Add (pages): home country page
This commit is contained in:
2023-07-26 03:10:36 +08:00
parent 728fc09474
commit 36efe23dcc
24 changed files with 4125 additions and 51 deletions

View File

@@ -7,23 +7,45 @@
use App\Models\CountryLocale;
use Illuminate\Http\Request;
use Stevebauman\Location\Facades\Location;
class HomeController extends Controller
{
public function index(Request $request)
{
return redirect()->route('home.country', ['country' => 'my']);
$country = strtolower($request->session()->get('country'));
return redirect()->route('home.country', ['country' => $country]);
}
public function country(Request $request, $country)
{
$country = CountryLocale::where('slug', $country)->first();
$country_locale = CountryLocale::where('slug', $country)->first();
if (! is_null($country)) {
$categories = Category::where('country_locale_id', $country->id)->get();
$categories = Category::where('country_locale_id', $country_locale->id)->get();
return view('front.country', ['categories' => $categories, 'country' => $country]);
$request->session()->put('view_country_locale', $country_locale);
return view('front.country', ['categories' => $categories, 'country_locale' => $country_locale]);
}
return redirect()->route('home.country', ['country' => 'my']);
return redirect()->route('home.country', ['country' => config('platform.general.fallback_country_slug')]);
}
public function countryCategory(Request $request, $country, $category)
{
return "{$country} : {$category}";
}
public function posts(Request $request, $country)
{
return "{$country} : all posts";
}
public function post(Request $request, $country, $post)
{
return "{$country} : {$post}";
}
}

View File

@@ -36,6 +36,7 @@ class Kernel extends HttpKernel
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
\App\Http\Middleware\StoreGeoSession::class,
],
'api' => [

View File

@@ -0,0 +1,64 @@
<?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);
}
}