ورود با ایمیل یا موبایل در لاراول ۹

ورود با ایمیل یا موبایل در لاراول ۹

در اکثرا سایت ها مثل فروشگاه ها سیستم ورود با موبایل دارند که کاربر بدون دردسر با شماره موبایل خود وارد پنل کاربری شود. می خواهیم این سناریو ورود با ایمیل یا موبایل در لاراول ۹ پیاده کنیم.

اول باید برای عضویت جدول موبایل ایجاد شود.

کد زیردر فایل create_users_table در مسیر database/migrations وارد کنید:

$table->string('mobile', 14)->unique();

دوم وارد RegisterController در مسیر app/Http/Controller/Auth شوید و کدهای زیر را وارد کنید:

۱. بخش validator :

'mobile' => ['nullable', 'string', 'min:9', 'max:14', 'unique:users'],

۲. بخش create :

'mobile' => $data['mobile'],

سوم وارد register.blade.php در مسیر resources/views/auth شوید.

کد زیر در فایل register.blade.php وارد کنید:

<div class="row mb-3">
   <label for="mobile" class="col-md-4 col-form-label text-md-end">{{ __('Mobile') }}</label>

    <div class="col-md-6">
       <input id="mobile" type="text" class="form-control @error('mobile') is-invalid @enderror" name="mobile" value="{{ old('mobile') }}" required autocomplete="mobile">

        @error('mobile')
           <span class="invalid-feedback" role="alert">
                <strong>{{ $message }}</strong>
           </span>
        @enderror
    </div>
</div>

کد بالا فیلد بر اساس جدول mobile است که هنگامی که کاربر این فیلد پر می کند به عنوان شماره موبایل در پایگاه داده ثبت می شود.

چهارم وارد LoginControllter در مسیر app/Http/Controller/Auth شوید و در انتهای آن کد زیر را وارد کنید:

public function username()
    {
        $login = request()->input('username');

        if(is_numeric($login)){
            $field = 'mobile';
        } elseif (filter_var($login, FILTER_VALIDATE_EMAIL)) {
            $field = 'email';
        } else {
            $field = 'username';
        }

        request()->merge([$field => $login]);

        return $field;
    }

سناریو کد بالا اینکه ورود با شماره موبایل امکان پذیر می کند و البته در کنار می توان با ایمیل وارد شد.

و در آخر در register.blade.php در مسیر resources/views/auth کد زیر را جایگزین کنید:

<div class="row mb-3">
   <label for="username" class="col-md-4 col-form-label text-md-end">{{ __('Email Address') }}</label>
<div class="col-md-6">
   <input id="username" type="text" class="form-control @error('username') is-invalid @enderror" name="username" value="{{ old('username') }}" required autocomplete="username" autofocus>
      @error('username')
          <span class="invalid-feedback" role="alert">
               <strong>{{ $message }}</strong>
          </span>
       @enderror
    </div>
</div>

موفق باشید 🙂

پیوند منابع
لاراول (Laravel) دسامبر/13/2022 420
https://rayium.ir/?p=541

دیدگاه شما