gabrielesbaiz / nova-two-factor
Laravel nova in-dashboard 2FA feature.
Fund package maintenance!
Gabriele Sbaiz
Requires
- php: ^8.0
- bacon/bacon-qr-code: ^2.0
- illuminate/contracts: ^10.0||^11.0||^12.0
- laravel/nova: ^4.0
- pragmarx/google2fa-laravel: ^2.0
- spatie/laravel-package-tools: ^1.16
Requires (Dev)
- laravel/pint: ^1.14
- nunomaduro/collision: ^8.1.1||^7.10.0
- orchestra/testbench: ^10.0.0||^9.0.0||^8.22.0
- pestphp/pest: ^3.0
- pestphp/pest-plugin-arch: ^3.0
- pestphp/pest-plugin-laravel: ^3.0
README
Laravel nova in-dashboard 2FA feature.
Original code from Visanduma/nova-two-factor
Features
- ✅ Global enable / disable
- ✅ Mandatory / Not mandatory
- ✅ Google 2FA encrypted
- ✅ BancodeQrCode / Google API
Installation
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, ];
Usage
-
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() ]; } }
Testing
composer test
Changelog
Please see CHANGELOG for more information on what has changed recently.
Contributing
Please see CONTRIBUTING for details.
Security Vulnerabilities
Please review our security policy on how to report security vulnerabilities.
Credits
License
The MIT License (MIT). Please see License File for more information.