function isWorkTime(): bool {
if (конец < начало) {
return (час > начало И час <= 23) ИЛИ (час >= 0 И час < конец)
} else {
return (час >= начало И час <= конец)
}
}
$this->geoIp->getDetectedCountry()
namespace App\Http\Middleware;
use App\Services\GeoIp;
use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Str;
use Mcamara\LaravelLocalization\Facades\LaravelLocalization;
class DetectCountry
{
/** @var \App\Services\GeoIp */
private GeoIp $geoIp;
public function __construct(GeoIp $geoIp)
{
$this->geoIp = $geoIp;
}
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle(Request $request, Closure $next)
{
// Do not use for the admin panel
if (Str::startsWith(\Route::currentRouteName(), 'platform.')) return $next($request);
if (!session()->has(SK_USER_COUNTRY)) {
$country = \Auth::check() && \Auth::user()->location_country
? \Auth::user()->location_country
: $this->geoIp->getDetectedCountry();
session()->put(SK_USER_COUNTRY, $country);
return redirect(LaravelLocalization::localizeURL($request->getRequestUri(), $country->locale));
}
return $next($request);
}
}