| Server IP : 3.138.164.131 / Your IP : 216.73.216.136 Web Server : Apache System : Linux ns1.techtime.me 4.18.0-147.8.1.el8.lve.1.x86_64 #1 SMP Mon Jun 29 09:55:57 EDT 2020 x86_64 User : injazaat ( 1471) PHP Version : 8.1.20 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/injazaat/public_html/vendor/laravel/fortify/src/Http/Requests/ |
Upload File : |
<?php
namespace Laravel\Fortify\Http\Requests;
use Illuminate\Contracts\Auth\StatefulGuard;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Http\Exceptions\HttpResponseException;
use Laravel\Fortify\Contracts\FailedTwoFactorLoginResponse;
use Laravel\Fortify\Contracts\TwoFactorAuthenticationProvider;
class TwoFactorLoginRequest extends FormRequest
{
/**
* The user attempting the two factor challenge.
*
* @var mixed
*/
protected $challengedUser;
/**
* Indicates if the user wished to be remembered after login.
*
* @var bool
*/
protected $remember;
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'code' => 'nullable|string',
'recovery_code' => 'nullable|string',
];
}
/**
* Determine if the request has a valid two factor code.
*
* @return bool
*/
public function hasValidCode()
{
return $this->code && tap(app(TwoFactorAuthenticationProvider::class)->verify(
decrypt($this->challengedUser()->two_factor_secret), $this->code
), function ($result) {
if ($result) {
$this->session()->forget('login.id');
}
});
}
/**
* Get the valid recovery code if one exists on the request.
*
* @return string|null
*/
public function validRecoveryCode()
{
if (! $this->recovery_code) {
return;
}
return tap(collect($this->challengedUser()->recoveryCodes())->first(function ($code) {
return hash_equals($this->recovery_code, $code) ? $code : null;
}), function ($code) {
if ($code) {
$this->session()->forget('login.id');
}
});
}
/**
* Determine if there is a challenged user in the current session.
*
* @return bool
*/
public function hasChallengedUser()
{
if ($this->challengedUser) {
return true;
}
$model = app(StatefulGuard::class)->getProvider()->getModel();
return $this->session()->has('login.id') &&
$model::find($this->session()->get('login.id'));
}
/**
* Get the user that is attempting the two factor challenge.
*
* @return mixed
*/
public function challengedUser()
{
if ($this->challengedUser) {
return $this->challengedUser;
}
$model = app(StatefulGuard::class)->getProvider()->getModel();
if (! $this->session()->has('login.id') ||
! $user = $model::find($this->session()->get('login.id'))) {
throw new HttpResponseException(
app(FailedTwoFactorLoginResponse::class)->toResponse($this)
);
}
return $this->challengedUser = $user;
}
/**
* Determine if the user wanted to be remembered after login.
*
* @return bool
*/
public function remember()
{
if (! $this->remember) {
$this->remember = $this->session()->pull('login.remember', false);
}
return $this->remember;
}
}