whisper-money/app/Services/AuthEntryPointService.php

56 lines
1.4 KiB
PHP

<?php
namespace App\Services;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Cookie;
use Symfony\Component\HttpFoundation\Cookie as HttpFoundationCookie;
class AuthEntryPointService
{
private const COOKIE_NAME = 'whisper_money_returning_user';
private const COOKIE_MINUTES = 60 * 24 * 365 * 5;
/**
* @api Invoked dynamically via the container in bootstrap/app.php's
* redirectGuestsTo callback.
*/
public function guestRedirectRoute(Request $request): string
{
if (
$this->hasAuthenticatedBefore($request)
|| ! config('auth.registration_enabled')
) {
return route('login');
}
return route('register');
}
public function queueReturningUserCookie(): void
{
Cookie::queue($this->makeReturningUserCookie());
}
private function hasAuthenticatedBefore(Request $request): bool
{
return filter_var($request->cookie(self::COOKIE_NAME), FILTER_VALIDATE_BOOL);
}
private function makeReturningUserCookie(): HttpFoundationCookie
{
return Cookie::make(
self::COOKIE_NAME,
'1',
self::COOKIE_MINUTES,
'/',
config('session.domain'),
config('session.secure'),
true,
false,
config('session.same_site', 'lax'),
);
}
}