45 lines
1.2 KiB
PHP
45 lines
1.2 KiB
PHP
<?php
|
|
|
|
namespace App\Services\Auth;
|
|
|
|
use App\Models\User;
|
|
use Illuminate\Http\RedirectResponse;
|
|
use Illuminate\Http\Request;
|
|
|
|
class TwoFactorChallenge
|
|
{
|
|
/**
|
|
* Determine whether the user must enroll in two-factor authentication.
|
|
*/
|
|
public function enrollmentRequiredFor(User $user): bool
|
|
{
|
|
return (bool) config('auth-ui.features.two_factor')
|
|
&& (bool) config('auth-ui.features.two_factor_required')
|
|
&& ! $user->hasEnabledTwoFactorAuthentication();
|
|
}
|
|
|
|
/**
|
|
* Determine whether the user must complete a two-factor challenge.
|
|
*/
|
|
public function requiredFor(User $user): bool
|
|
{
|
|
return (bool) config('auth-ui.features.two_factor')
|
|
&& $user->hasEnabledTwoFactorAuthentication();
|
|
}
|
|
|
|
/**
|
|
* Begin a two-factor challenge without authenticating the user.
|
|
*/
|
|
public function begin(Request $request, User $user, bool $remember = false): RedirectResponse
|
|
{
|
|
$request->session()->put([
|
|
'login.id' => $user->getKey(),
|
|
'login.remember' => $remember,
|
|
'login.started_at' => now()->timestamp,
|
|
]);
|
|
$request->session()->regenerate();
|
|
|
|
return redirect()->route('two-factor.login');
|
|
}
|
|
}
|