1. Go to this page and download the library: Download mustafa-awami/lara2fa library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
mustafa-awami / lara2fa example snippets
use Laravel\Fortify\TwoFactorAuthenticatable;
use MustafaAwami\Lara2fa\Traits\TwoFactorAuthenticatable;
use App\Http\Controllers\Settings\TwoFactorAuthenticationController;
use MustafaAwami\Lara2fa\Http\Controllers\Settings\TwoFactorAuthenticationController;
namespace App\Providers;
use MustafaAwami\Lara2fa\Lara2fa;
class Lara2faServiceProvider extends ServiceProvider
{
public function register(): void
{
Lara2fa::ignoreRoutes();
}
}
namespace App\Providers;
use Illuminate\Support\Str;
use Illuminate\Http\Request;
use Laravel\Fortify\Fortify;
use Illuminate\Support\ServiceProvider;
use Illuminate\Cache\RateLimiting\Limit;
use Illuminate\Support\Facades\RateLimiter;
use Illuminate\Validation\ValidationException;
class Lara2faServiceProvider extends ServiceProvider
{
public function boot(): void
{
RateLimiter::for('passkey-login', function (Request $request) {
$throttleKey = Str::transliterate(Str::lower($request->input(Fortify::username())).'|'.$request->ip());
return Limit::perMinute(5)->by($throttleKey)->response(function (Request $request,array $headers) {
$seconds = $headers['Retry-After'];
throw ValidationException::withMessages([
Fortify::username() => [__('Too many attempts. Please try again after') . $seconds. __(' seconds')],
]);
});
});
RateLimiter::for('two-factor-email-notify', function (Request $request) {
$throttleKey = $request->session()->get('login.id');
return Limit::perMinute(2)->by($throttleKey)->response(function (Request $request,array $headers) {
$seconds = $headers['Retry-After'];
throw ValidationException::withMessages([
'attempts' => [__('Too many attempts. Please try again after ') . $seconds. __(' seconds')],
])->errorBag('EmailTwoFactorAuthenticationNotification');
});
});
RateLimiter::for('two-factor-login', function (Request $request) {
$throttleKey = $request->session()->get('login.id');
return Limit::perMinute(5)->by($throttleKey)->response(function (Request $request,array $headers) {
$seconds = $headers['Retry-After'];
throw ValidationException::withMessages([
'attempts' => [__('Too many attempts. Please try again after ') . $seconds. __(' seconds')],
]);
});
});
}
}