ItSolutionStuff.com

Laravel Breeze Auth: Login With Email Or Username Example

By Hardik Savani • October 23, 2024
Laravel

In this post, I will show you how to login with email or username with laravel breeze authentication.

Sometimes, we may need to let users log in using either their email or username. How can you achieve this if you've implemented the Laravel breeze authentication scaffold?

I'll walk you through a simple solution that allows users to log in with either their email or username.

we simply go to LoginRequest.php request file and overwrite authenticate() method with the following code:

App/Http/Requests/Auth/LoginRequest.php

<?php

namespace App\Http\Requests\Auth;

use Illuminate\Auth\Events\Lockout;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\RateLimiter;
use Illuminate\Support\Str;
use Illuminate\Validation\ValidationException;

class LoginRequest extends FormRequest
{
    /**
     * Determine if the user is authorized to make this request.
     */
    public function authorize(): bool
    {
        return true;
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules(): array
    {
        return [
            'login' => ['required', 'string'],
            'password' => ['required', 'string'],
        ];
    }

    /**
     * Attempt to authenticate the request's credentials.
     *
     * @throws \Illuminate\Validation\ValidationException
     */
    public function authenticate(): void
    {
        $this->ensureIsNotRateLimited();

        $login_name = filter_var($this->input("login"), FILTER_VALIDATE_EMAIL) ? "email" : "username";

        $this->merge([
            $login_name => $this->input("login")
        ]);

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

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

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

    /**
     * Ensure the login request is not rate limited.
     *
     * @throws \Illuminate\Validation\ValidationException
     */
    public function ensureIsNotRateLimited(): void
    {
        if (! RateLimiter::tooManyAttempts($this->throttleKey(), 5)) {
            return;
        }

        event(new Lockout($this));

        $seconds = RateLimiter::availableIn($this->throttleKey());

        throw ValidationException::withMessages([
            'email' => trans('auth.throttle', [
                'seconds' => $seconds,
                'minutes' => ceil($seconds / 60),
            ]),
        ]);
    }

    /**
     * Get the rate limiting throttle key for the request.
     */
    public function throttleKey(): string
    {
        return Str::transliterate(Str::lower($this->string('email')).'|'.$this->ip());
    }
}

You can also see the following video:

Output:

You can see the output:

I hope it can help you...

Tags: Laravel
Hardik Savani

Hardik Savani

I'm a full-stack developer, entrepreneur, and founder of ItSolutionStuff.com. Passionate about PHP, Laravel, JavaScript, and helping developers grow.

📺 Subscribe on YouTube

We Are Recommending You

Laravel 11 Image Validation Rules Example

Read Now →

Laravel 11 Razorpay Payment Gateway Integration Example

Read Now →

Laravel 11 Dynamic Google Charts Integration Tutorial

Read Now →

How to Get User Location using IP Address in Laravel 11?

Read Now →

How to Generate Barcode in Laravel 11?

Read Now →

Laravel 11 Simple Pagination Example Tutorial

Read Now →

Laravel 11 Socialite Login with Google Account Example

Read Now →

How to Generate QR Code in Laravel 11?

Read Now →

Laravel 11 Resource Route and Controller Example

Read Now →

How to Get Last Executed Query in Laravel 11?

Read Now →

Laravel 11 Ajax CRUD Operation Tutorial Example

Read Now →

Laravel 11 Database Seeder Example Tutorial

Read Now →

Laravel 11 Create Custom Helper Functions Example

Read Now →