Laravel nova in-dashboard 2FA feature.
Original code from Visanduma/nova-two-factor
- ✅ Global enable / disable
- ✅ Mandatory / Not mandatory
- ✅ Google 2FA encrypted
- ✅ BancodeQrCode / Google API
You can install the package via composer:
composer require gabrielesbaiz/nova-two-factor
You can publish and run the migrations with:
php artisan vendor:publish --tag="nova-two-factor-migrations"
php artisan migrate
You can publish the config file with:
php artisan vendor:publish --tag="nova-two-factor-config"
This is the contents of the published config file:
return [
'enabled' => env('NOVA_TWO_FA_ENABLE', true),
'mandatory' => env('NOVA_TWO_FA_MANDATORY', false),
'user_table' => 'users',
'user_id_column' => 'id',
'connection_name' => env('DB_CONNECTION'),
/* Encrypt the google secret values saved in database */
'encrypt_google2fa_secrets' => false,
/* QR code can be generate using Google API or inbuilt 'BaconQrCode' package */
'use_google_qr_code_api' => true,
'user_model' => App\Models\User::class,
/* Change visibility of Nova Two Fa menu in right sidebar */
'showin_sidebar' => true,
'menu_text' => 'Two FA',
'menu_icon' => 'lock-closed',
/* Exclude any routes from 2fa security */
'except_routes' => [],
/*
* reauthorize these urls before access, within given timeout
* you are allowed to use wildcards pattern for url matching
*/
'reauthorize_urls' => [
// 'nova/resources/users/new',
// 'nova/resources/users/*/edit',
],
/* timeout in minutes */
'reauthorize_timeout' => 5,
];
-
Pubish config & migration
-
Use ProtectWith2FA trait in configured model
namespace App\Models;
use Gabrielesbaiz\NovaTwoFactor\ProtectWith2FA;
class User extends Authenticatable{
use ProtectWith2FA;
}
- Add TwoFa middleware to nova config file
/*
|--------------------------------------------------------------------------
| Nova Route Middleware
|--------------------------------------------------------------------------
|
| These middleware will be assigned to every Nova route, giving you the
| chance to add your own middleware to this stack or override any of
| the existing middleware. Or, you can just stick with this stack.
|
*/
'middleware' => [
...
\Gabrielesbaiz\NovaTwoFactor\Http\Middleware\TwoFa::class
],
- Register NovaTwoFactor tool in Nova Service Provider
<?php
class NovaServiceProvider extends NovaApplicationServiceProvider{
public function tools()
{
return [
...
new \Gabrielesbaiz\NovaTwoFactor\NovaTwoFactor()
];
}
}
composer test
Please see CHANGELOG for more information on what has changed recently.
Please see CONTRIBUTING for details.
Please review our security policy on how to report security vulnerabilities.
The MIT License (MIT). Please see License File for more information.