Custom login page with name, username or email
Custom login page with name, username or email
14 Sheet
class AdminPanelProvider extends PanelProvider { public function panel(Panel $panel): Panel { return $panel // ... ->login(Login::class) // ... } }
class Login extends BaseAuth { // ... }
namespace App\Filament\Pages\Auth;
use Filament\Forms\Form; use Filament\Forms\Components\Component; use Filament\Forms\Components\TextInput; use Filament\Http\Responses\Auth\Contracts\LoginResponse; use Filament\Pages\Auth\Login as BaseAuth; use Illuminate\Validation\ValidationException;
class Login extends BaseAuth { public function form(Form $form): Form { return $form ->schema([ $this->getLoginFormComponent(), $this->getPasswordFormComponent(), $this->getRememberFormComponent(), ]) ->statePath('data'); }
protected function getLoginFormComponent(): Component{ return TextInput::make('login') ->label('Username') ->required() ->autocomplete() ->autofocus() ->extraInputAttributes(['tabindex' => 1]);} protected function getCredentialsFromFormData(array $data): array{ $login_type = filter_var($data['login'], FILTER_VALIDATE_EMAIL ) ? 'email' : 'username'; return [ $login_type => $data['login'], 'password' => $data['password'], ];} public function authenticate(): ?LoginResponse{ try { return parent::authenticate(); } catch (ValidationException) { throw ValidationException::withMessages([ 'data.login' => __('filament-panels::pages/auth/login.messages.failed'), ]); }}}
Komentar
Ada 1 komentar pada episode ini.