Laravel nova in-dashboard 2FA security feature.
- Fixed offline QRCode display issue
- Fixed foreign key issue (need to run migration)
- Translation fixes
- Clear option for current Two FA settings
- Reauthorize any routes using 2FA Prompt dialog.
Setup 2FA
Enable/Disable feature
Nova login screen with 2FA security
Reauthorize any route using 2FA prompt
Install the package
composer require visanduma/nova-two-factor
- Pubish config & migration
php artisan vendor:publish --provider="Visanduma\NovaTwoFactor\ToolServiceProvider"
Change configs as your needs
return [
// defaults to app.name when null
'display_name' => null,
// enable or disable 2FA feature. default is enabled
'enabled' => env('NOVA_TWO_FA_ENABLE',true),
// name of authenticatable entity table. usually - users
'user_table' => 'users',
// Entity primary key
'user_id_column' => 'id',
// authenticatable model class
'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, withing given timeout
* you are allowed to use wildcards pattern for url matching
**/
'reauthorize_urls' => [
// 'resources/users/new',
// 'resources/users/*/edit',
],
/* timeout in minutes */
'reauthorize_timeout' => 5,
/* QR code can be generate using online API or inbuilt 'BaconQrCode' package*/
'use_offline_qr' => false,
];
- Use ProtectWith2FA trait in configured model
<?php
namespace App\Models;
use Visanduma\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' => [
...
\Visanduma\NovaTwoFactor\Http\Middleware\TwoFa::class
],
- Register NovaTwoFactor tool in Nova Service Provider
<?php
class NovaServiceProvider extends NovaApplicationServiceProvider{
public function tools()
{
return [
...
new \Visanduma\NovaTwoFactor\NovaTwoFactor()
];
}
}
- Run
php artisan migrate
- You are done !