1. Go to this page and download the library: Download sh4msi/filament-otp library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
sh4msi / filament-otp example snippets
return [
/**
* The panel IDs where Filament OTP routes should be registered.
* When set to null, routes will be registered for panels that have the FilamentOtpPlugin installed,
* or for all panels if no panel explicitly registered the plugin.
* Example: ['app', 'admin']
*/
'panels' => null,
/**
* The authentication model to use.
*/
'user_model' => \App\Models\User::class,
/**
* login columns
*/
'login_key' => 'email',
'login_key_rule' => ['email', 'TokenGeneratorInterface
*/
'token_generator' => \Sh4msi\FilamentOtp\Utility\TokenGenerator::class,
/**
* Token notification class
*/
'token_notification' => \Sh4msi\FilamentOtp\Notifications\NotificationOTP::class,
/**
* Login confirmation page component
*
* If you want to change something, place your component here.
*/
'confirm_token_component' => \Sh4msi\FilamentOtp\Http\Livewire\Auth\ConfirmOTP::class,
'login_otp_component' => \Sh4msi\FilamentOtp\Http\Livewire\Auth\LoginOTP::class,
];
use Illuminate\Foundation\Auth\User as Authenticatable;
use Sh4msi\FilamentOtp\Traits\OtpLogin;
class User extends Authenticatable
{
use OtpLogin;
// ...
}
use Filament\Panel;
use Illuminate\Contracts\View\View;
use Sh4msi\FilamentOtp\FilamentOtpPlugin;
public function panel(Panel $panel): Panel
{
return $panel
// ...
->plugin(FilamentOtpPlugin::make())
->renderHook(
'panels::auth.login.form.after',
fn (): View => view('filament-otp::livewire.login-otp-btn'),
);
}
// Route name scoped by panel ID:
route('filament-otp.' . Filament::getCurrentPanel()->getId() . '.login')
// Or helper methods (auto-resolves current active panel):
\Sh4msi\FilamentOtp\Facades\FilamentOtp::getLoginUrl()
\Sh4msi\FilamentOtp\Facades\FilamentOtp::getConfirmUrl()
// Only register OTP routes for specific panels:
'panels' => ['app'],
// Or set to null to automatically register on all panels that