0

i added username field at laravel breeze auth and registered a user, it was fine, but when i tried to login by username by replacing email with username than it gives this error:

  Method Illuminate\Validation\Validator::validateUsername does not exist

form code:

   <div class="mt-4">
            <x-label for="username" :value="__('Username')" />

            <x-input id="username" class="block mt-1 w-full" type="username" name="username" :value="old('username')" required autofocus />
        </div>

model:

   protected $fillable = [
    'name',
    'username',
    'email',
    'password',
];

RegisteredUserController:

   public function store(Request $request)
{
    $request->validate([
        'name' => ['required', 'string', 'max:255'],
        'username' => ['required', 'string', 'max:255', 'unique:users'],
        'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
        'password' => ['required', 'confirmed', Rules\Password::defaults()],
    ]);

    $user = User::create([
        'name' => $request->name,
        'username' => $request->username,
        'email' => $request->email,
        'password' => Hash::make($request->password),
    ]);

loginrequest.php

  public function authenticate()
{
    $this->ensureIsNotRateLimited();

    if (! Auth::attempt($this->only('username', 'password'), $this->boolean('remember'))) {
        RateLimiter::hit($this->throttleKey());

        throw ValidationException::withMessages([
            'username' => trans('auth.failed'),
        ]);
    }

    RateLimiter::clear($this->throttleKey());
}

can anyone suggest me why its giving this error, or how to fix it.

cyber dev
  • 13
  • 1
  • 2
  • 6

1 Answers1

0

Add Validator facade class in RegisteredUserController like so:

use Validator;

Change username validation in store function:

  public function store(Request $request)
{
    $request->validate([
        'name' => ['required', 'string', 'max:255'],
        'username' => ['required', 'string', 'max:255', 'unique:users,username'],
        'email' => ['required', 'string', 'email', 'max:255', 'unique:users,email'],
        'password' => ['required', 'confirmed', Rules\Password::defaults()]
    ]);

    $user = User::create([
        'name' => $request->name,
        'username' => $request->username,
        'email' => $request->email,
        'password' => Hash::make($request->password)
    ]);

i just added username at end of its validation line.

key
  • 1,334
  • 1
  • 19
  • 39