solution-forest/filament-email-2fa

filament-email-2fa

1.1.2 2024-06-21 04:09 UTC

This package is not auto-updated.

Last update: 2024-12-20 06:24:33 UTC


README

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

Secure Your Filament Applications with Email-Based 2FA

This package seamlessly integrates two-factor authentication (2FA) into your Filament PHP applications using email verification codes. Enhance the security of your user accounts and protect sensitive data.

image

Key Features:

  • Easy Integration: Quickly add 2FA to your Filament projects with minimal configuration.
  • Email Verification: Users receive time-sensitive codes via email for secure login.
  • Customizable: Tailor the 2FA experience with configurable options (e.g., code expiry time).
  • Seamless User Experience: Provides a user-friendly interface for setting up and using 2FA.

How it Works:

  • Upon successful login, users are prompted to enter a verification code sent to their email address.
  • The package handles code generation, email delivery, and verification logic.
  • Once verified, users gain access to the protected Filament panel.

Ideal For:

Filament applications handling sensitive user data. Projects requiring an extra layer of account security. Developers seeking a straightforward 2FA solution.

Installation

You can install the package via composer:

composer require solution-forest/filament-email-2fa

You can publish and run the migrations with:

php artisan vendor:publish --tag="filament-email-2fa-migrations"
php artisan migrate

You can publish the config file with:

php artisan vendor:publish --tag="filament-email-2fa-config"

Optionally, you can publish the views using

php artisan vendor:publish --tag="filament-email-2fa-views"

This is the contents of the published config file:

return [
    'code_table' => 'filament_email_2fa_codes',
    'verify_table' => 'filament_email_2fa_verify',

    'code_model' => \Solutionforest\FilamentEmail2fa\Models\TwoFaCode::class,
    'verify_model' => \Solutionforest\FilamentEmail2fa\Models\TwoFaVerify::class,

    'expiry_time_by_mins' => 10,

    '2fa_page' => \Solutionforest\FilamentEmail2fa\Pages\TwoFactorAuth::class,
    'login_success_page' => \Solutionforest\FilamentEmail2fa\Pages\LoginSuccessPage::class,
];

Adding the plugin to a panel

use Solutionforest\FilamentEmail2fa\FilamentEmail2faPlugin;

return $panel
        // ...
        ->plugin(FilamentEmail2faPlugin::make());

Preparing your filament user class

Implement the 'RequireTwoFALogin' interface and use the 'HasTwoFALogin' trait

use Solutionforest\FilamentEmail2fa\Interfaces\RequireTwoFALogin;
use Solutionforest\FilamentEmail2fa\Trait\HasTwoFALogin;

class FilamentUser extends Authenticatable implements FilamentUserContract,RequireTwoFALogin{
    use HasTwoFALogin;
}