6 0
Login email or mobile Laravel orchiddev.ir

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

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

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

کد زیردر فایل 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 38

دیدگاهی بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *


طراحی و کد نویسی شده توسط توسعه دهنده ارکید