ipunkt / laravel-two-factor-authentication
Two factor authentication (2FA) with TOTP tokens. (RFC 6238)
Requires
- php: >=5.6.4
- bacon/bacon-qr-code: ~1.0
- illuminate/database: ^5.3
- illuminate/http: ^5.3
- ipunkt/laravel-package-manager: ^0.2.0
- paragonie/constant_time_encoding: ~2.0
- pragmarx/google2fa: ~1.0
Requires (Dev)
- mockery/mockery: ~0.9
- phpunit/phpunit: ~5.0
This package is auto-updated.
Last update: 2023-06-23 04:01:10 UTC
README
Introduction
This package adds 2FA (Two Factor Authentication) to your laravel application.
Installation
Just install the package by adding to composer requirements
composer require ipunkt/laravel-two-factor-authentication
and add the Service Provider in your config/app.php
\Ipunkt\Laravel\TwoFactorAuthentication\TwoFactorAuthenticationServiceProvider::class,
After adding the provider the database migration should run
php artisan migrate
Setup
User Model Trait
The package adds a google2fa_secret
column to your users table. This can be null, but should hold the secret key, being generated with the help of a trait: Ipunkt\Laravel\TwoFactorAuthentication\TwoFactorSupport
This trait has to be added to the authorization based user model class.
Authentication Controller
The Ipunkt\Laravel\TwoFactorAuthentication\AuthenticatesWith2FA
trait overrides the authenticated
method within the LoginController
. So please update your LoginController
use App\Http\Controllers\Controller;
use Ipunkt\Laravel\TwoFactorAuthentication\AuthenticatesWith2FA;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
class LoginController extends Controller
{
use AuthenticatesUsers,
AuthenticatesWith2FA {
AuthenticatesWith2FA::authenticated insteadof AuthenticatesUsers;
}
//...
}
So we can interact with the user after authenticating with user credentials and display a TOTP field to get the Authenticator App displayed One-Time-Token.
Customizing Package Content
Config
You can change config settings by publishing config file
$> php artisan vendor:publish --provider="Ipunkt\Laravel\TwoFactorAuthentication\ServiceProvider" --tag=config
and edit /config/2fa.php
to suit your needs.
Views
You can change delivered views by publishing view files
$> php artisan vendor:publish --provider="Ipunkt\Laravel\TwoFactorAuthentication\ServiceProvider" --tag=view
and edit views in /resources/views/vendor/2fa
.
Migrations
You can change the packaged migrations by publishing migrations
$> php artisan vendor:publish --provider="Ipunkt\Laravel\TwoFactorAuthentication\ServiceProvider" --tag=migrations
and edit migrations in /database/migrations
.
License
Two Factor Authentication is open-sourced software licensed under the MIT license