afsakar / filament-otp-login
FilamentPHP 的OTP登录
v1.3.5
2024-09-03 19:18 UTC
Requires
- php: ^8.1
- filament/filament: ^3.0
- spatie/laravel-package-tools: ^1.15.0
Requires (Dev)
- larastan/larastan: ^2.9
- laravel/pint: ^1.0
- nunomaduro/collision: ^7.9
- orchestra/testbench: ^8.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
- spatie/laravel-ray: ^1.26
README
此包是FilamentPHP的OTP登录。它是一个简单的包,允许您使用OTP登录到您的FilamentPHP应用程序。
安装
您可以通过composer安装此包
composer require afsakar/filament-otp-login
您可以使用以下命令发布和运行迁移
php artisan vendor:publish --tag="filament-otp-login-migrations"
php artisan migrate
您可以使用以下命令发布配置和翻译文件
php artisan vendor:publish --tag="filament-otp-login-config" php artisan vendor:publish --tag="filament-otp-login-translations"
可选地,您可以使用以下命令发布视图
php artisan vendor:publish --tag="filament-otp-login-views"
这是已发布配置文件的内容
return [ 'table_name' => 'otp_codes', // Table name to store OTP codes 'otp_code' => [ 'length' => env('OTP_LOGIN_CODE_LENGTH', 6), // Length of the OTP code 'expires' => env('OTP_LOGIN_CODE_EXPIRES_SECONDS', 120), // Expiration time of the OTP code in seconds ], ];
使用方法
只需在您的面板提供者文件中注册 Afsakar\FilamentOtpLogin\FilamentOtpLoginPlugin
插件。
use Afsakar\FilamentOtpLogin\FilamentOtpLoginPlugin; public function panel(Panel $panel): Panel { return $panel ->plugins([ FilamentOtpLoginPlugin::make(), ]); }
如果您想忽略OTP登录的特定用户组,只需在您的用户模型中实现 Afsakar\FilamentOtpLogin\Models\Contracts\CanLoginDirectly
特性。
use Afsakar\FilamentOtpLogin\Models\Contracts\CanLoginDirectly; class User extends Authenticatable implements CanLoginDirectly { use HasFactory, Notifiable; // other user model code public function canLoginDirectly(): bool { return str($this->email)->endsWith('@example.com'); } }
注意:对于中大型应用程序,您只需运行 "php artisan model:prune" 命令作为cron,以防止otp_code表膨胀和性能问题。
自定义登录页面
如果您想自定义登录页面,可以扩展 \Afsakar\FilamentOtpLogin\Filament\Pages\Login
页面,并在面板提供者文件中使用 loginPage
方法设置您的自定义登录页面。
<?php namespace App\Filament\Pages; use Afsakar\FilamentOtpLogin\Filament\Pages\Login as OtpLogin; use Illuminate\Contracts\Support\Htmlable; class OverrideLogin extends OtpLogin { public function getHeading(): string | Htmlable { return 'Example Login Heading'; } }
use App\Filament\Pages\OverrideLogin; public function panel(Panel $panel): Panel { return $panel ->plugins([ FilamentOtpLoginPlugin::make() ->loginPage(OverrideLogin::class), ]); }
测试
composer test
更新日志
有关最近更改的更多信息,请参阅 更新日志。
贡献
有关详细信息,请参阅 贡献指南。
安全漏洞
请查看 我们的安全策略 了解如何报告安全漏洞。
鸣谢
许可证
MIT许可证(MIT)。请参阅 许可证文件 了解更多信息。