فیلامنت، ورود با نام کاربری به جای ایمیل

در FilamentPHP صفحه لاگین به صورت پیش فرض این جوریه که با ایمیل و کلمه عبور کار می کنه، در ادامه می نویسم که چطور باید تغییرات بدیم که با نام کاربری (مثلا شماره همراه) و کلمه عبور بتونیم لاگین کنیم:

0- قبل از هر چیز یادتون باشه که در جدول کاربران فیلد user_name رو ایجاد کنید.

1- فایلی رو در مسیر زیر ایجاد می کنیم:

app/Filament/Auth/Login.php

2- کدهای زیر رو در فایل مورد نظر کپی کنید:

<?php
namespace App\Filament\Pages;

use Filament\Facades\Filament;
use Filament\Pages\Auth\Login;
use Filament\Forms\Components\Component;
use Filament\Forms\Components\TextInput;
use Illuminate\Contracts\Support\Htmlable;

class CustomLogin extends Login
{
    public function mount(): void
    {
        if (Filament::auth()->check()) {
            redirect()->intended(Filament::getUrl());
        }

        /* if (app()->environment('local')) {
            $this->form->fill([
                'user_name' => 'admin',
                'password' => 'password',
            ]);
        } */
    }
    protected function getCredentialsFromFormData(array $data): array
    {
        return [
            'user_name' => $data['user_name'],
            'password' => $data['password'],
        ];
    }

    public function getTitle(): string|Htmlable
    {
        return __(' ورود به حساب کاربری ');
    }

    public function getHeading(): string|Htmlable
    {
        return __(' ورود به حساب کاربری ');
    }

    protected function getEmailFormComponent(): Component
    {
        return TextInput::make('user_name')
            ->label('نام کاربری')
            ->required()
            ->autofocus()
            ->extraInputAttributes(['tabindex' => 1])
            ->autocomplete();
    }
}

3- در فایل AdminPanelProvider.php در قسمت panel$ قطعه کد زیر رو تغییر بدین:

->login(CustomLogin::class)

و تمام