Свой способ проверки в Filament
Давайте сделаем свой способ. Класс провайдера задаёт поле кода на /admin/login и регистрируется в панели.
PinAuthentication.php
реализует контракт
MultiFactorAuthenticationProvider.
Метод схемы входа
отдаёт TextInput
с именем code.
<?php
namespace App\Filament\Auth;
use Filament\Auth\MultiFactor\Contracts\MultiFactorAuthenticationProvider;
use Filament\Forms\Components\TextInput;
use Illuminate\Contracts\Auth\Authenticatable;
class PinAuthentication implements MultiFactorAuthenticationProvider
{
public static function make(): static
{
return app(static::class);
}
public function getId(): string
{
return 'pin';
}
public function getLoginFormLabel(): string
{
return 'PIN';
}
public function isEnabled(Authenticatable $user): bool
{
return true;
}
public function getManagementSchemaComponents(): array
{
return [];
}
public function getChallengeFormComponents(Authenticatable $user): array
{
return [
TextInput::make('code')
->label('PIN code')
->required(),
];
}
}
?>
Подключим провайдер
в AdminPanelProvider.php:
<?php
namespace App\Providers\Filament;
use App\Filament\Auth\PinAuthentication;
use Filament\Panel;
use Filament\PanelProvider;
class AdminPanelProvider extends PanelProvider
{
public function panel(Panel $panel): Panel
{
return $panel
->default()
->id('admin')
->path('admin')
->login()
->multiFactorAuthentication([
PinAuthentication::make(),
]);
}
}
?>
Спросите при входе короткий цифровой код своим способом.