stephenjude / filament-two-factor-authentication
Filament Two Factor Authentication
Fund package maintenance!
stephenjude
Installs: 2 598
Dependents: 0
Suggesters: 0
Security: 0
Stars: 35
Watchers: 3
Forks: 7
Open Issues: 4
Requires
- php: ^8.1
- bacon/bacon-qr-code: ^3.0
- filament/filament: ^3.0
- pragmarx/google2fa: ^8.0
- spatie/laravel-package-tools: ^1.15.0
Requires (Dev)
- laravel/pint: ^1.0
- nunomaduro/collision: ^7.9|^8.0
- nunomaduro/larastan: ^2.0.1
- orchestra/testbench: ^8.0|^9.0
- pestphp/pest: ^2.1
- pestphp/pest-plugin-arch: ^2.0
- pestphp/pest-plugin-laravel: ^2.0
- phpstan/extension-installer: ^1.1
- phpstan/phpstan-deprecation-rules: ^1.0
- phpstan/phpstan-phpunit: ^1.0
README
Filament Two Factor Authentication (2FA)
Add two factor authentication to new and existing Filament applications.
Learn More
Filament Two-Factor Authentication Demo — Filament Daily
Installation
Below, you'll find documentation on installing this plugin. If you have any questions, find a bug, need support, or have a feature request, please don't hesitate to reach out to me at stephenjudesuccess@gmail.com.
You can install the package via composer:
composer require stephenjude/filament-two-factor-authentication
Install the plugin migration using:
php artisan filament-two-factor-authentication:install
Optionally, you can publish the views using
php artisan vendor:publish --tag="filament-two-factor-authentication-views"
Model Configuration
First, ensure that your application's authenticatio model uses the TwoFactorAuthenticatable
trait:
namespace App\Models; ... use Stephenjude\FilamentTwoFactorAuthentication\TwoFactorAuthenticatable; class User extends Authenticatable implements FilamentUser { ... use TwoFactorAuthenticatable;
Plugin Configuration
Add two factor authentication plugin to a panel by instantiating the plugin class and passing it to the plugin() method of the configuration:
... use Stephenjude\FilamentTwoFactorAuthentication\TwoFactorAuthenticationPlugin; public function panel(Panel $panel): Panel { return $panel ->plugins([ TwoFactorAuthenticationPlugin::make() ->addTwoFactorMenuItem() // Add 2FA settings to user menu items ->enforceTwoFactorSetup() // Enforce 2FA setup for all users ]) } ...
Custom 2FA Settings Page
If your application already has a user profile page, you can add a 2FA settings to your profile page view:
<x-filament-panels::page> @livewire(\Stephenjude\FilamentTwoFactorAuthentication\Livewire\TwoFactorAuthentication::class) </x-filament-panels::page>
Events
This package dispatches events which your application can subscribe to. You can listen to these events inside your EventServiceProvider class:
use Stephenjude\FilamentTwoFactorAuthentication\Events\{RecoveryCodeReplaced,RecoveryCodesGenerated,TwoFactorAuthenticationChallenged,TwoFactorAuthenticationConfirmed,TwoFactorAuthenticationDisabled,TwoFactorAuthenticationEnabled,TwoFactorAuthenticationFailed,ValidTwoFactorAuthenticationCodeProvided}; protected $listen = [ TwoFactorAuthenticationChallenged::class => [ // Dispatched when a user is required to enter 2FA code during login. ], TwoFactorAuthenticationFailed::class => [ // Dispatched when a user provides incorrect 2FA code or recovery code during login. ], ValidTwoFactorAuthenticationCodeProvided::class => [ // Dispatched when a user provides a valid 2FA code during login. ] TwoFactorAuthenticationConfirmed::class => [ // Dispatched when a user confirms code during 2FA setup. ], TwoFactorAuthenticationEnabled::class => [ // Dispatched when a user enables 2FA. ], TwoFactorAuthenticationDisabled::class => [ // Dispatched when a user disables 2FA. ], RecoveryCodeReplaced::class => [ // Dispatched after a user's recovery code is replaced. ], RecoveryCodesGenerated::class => [ // Dispatched after a user's recovery codes are generated. ], ];
Screenshot
2FA Authentication
2FA Recovery
2FA Disabled
2FA Setup
2FA Enabled (Recovery Codes)
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.