ورود با شماره موبایل و نام کاربری در لاراول

من با لاراول نسخه 5.7 کار می کنم و از Authentication خود لاراول استفاده و با دستور php artisan make:auth سیستم ثبت نام و عضویت پیش فرض لاراول را نصب کرده ام. حال می خواستم کاری کنم که به هنگام ورود به جای دریافت email (ایمیل) از کاربر، شماره موبایل یا username (نام کاربری) دریافت و اعتبارسنجی انجام شود. برای این کار باید چه مسیرهایی را ویرایش کنم؟

برچسب ها:
پرسیده شده در: 6 سال قبل
آمار بازدید: 5461
pirniak (351)
بیش از ۱ سال عضویت در روکسو بیش از ۱ سال عضویت در روکسو دارای سوال با ۱۰ رأی دارای سوال با ۱۰ رأی ارسال کننده پاسخ با ۱۰ رای ارسال کننده پاسخ با ۱۰ رای دارای ۲۰۰ کارما دارای ۲۰۰ کارما
3

برای انجام اینکار، لاراول امکانات مناسبی را در اختیار ما گذاشته است. هنگامیکه شما لاراول را نصب می کنید یک صفحه لاگین به صورت پیش فرض برای شما در مسیر زیر ایجاد می شود که می توانید آن را بسته به نیاز خود ویرایش کنید:

resources -> views -> auth -> login.blade.php

اما برای بخش کنترلر یا به عبارت دیگر پردازنده مرکزی یک مقداری باید حوصله به خرج بدید و فرآیند زیر را دنبال کنید:

ابتدا به مسیر زیر رفته

app -> Http -> Controllers -> Auth

سپس فایل LoginController.php را باز کنید و یک کلاس مشابه زیر در آن بنویسید:

<?php
 
namespace App\Http\Controllers\Auth;
 
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
 
class LoginController extends Controller
{
 
    use AuthenticatesUsers;
    protected $redirectTo = '/home';
 
    protected $username;
 
    public function __construct()
    {
        $this->middleware('guest')->except('logout');
 
        $this->username = $this->findUsername();
    }
 
    public function findUsername()
    {
        $login = request()->input('login');
 
        $fieldType = filter_var($login, FILTER_VALIDATE_EMAIL) ? 'email' : 'username';
 
        request()->merge([$fieldType => $login]);
 
        return $fieldType;
    }
 
    public function username()
    {
        return $this->username;
    }
}

برای درک بهتر این کدها اجازه بدهید یک مقدار توضیحات بیشتر ارائه کنم. ابتدا ما یک ویژگی جدید به نام username در کلاس تعریف کردیم که در واقع فیلد ورودی مربوط به لاگین (ایمیل، نام کاربری یا شماره موبایل) را در خود ذخیره می کند. سپس در سازنده کلاس (constructor) یک متد به نام findUsername را فراخوانی کردیم.

در متد findUsername مقدار ورودی لاگین را (از طریق فرم) دریافت کرده و سپس بررسی می کنیم که آیا این اطلاعاتی که کاربر ارسال کرده مشابه ایمیل است یا نام کاربری (این کار را با تابع filter_var انجام داده ایم). برای بررسی شماره موبایل شما می توانید نام کاربری را برابر شماره موبایل قرار دهید.

سپس با استفاده از دستور merge فیلدهای موجود در متغییر fieldType را ادغام کرده و به درخواست request خود اضافه می کنیم. در نهایت این مقدار ادغام شده رابه متغییر username نسبت می دهیم (این متغییر در سازنده قبلا مقدار دهی شده بود)

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

ارسال شده در: 6 سال قبل
masoudsalehi (1725)
بیش از ۲ سال عضویت در روکسو بیش از ۲ سال عضویت در روکسو دارای 1000 کارما دارای 1000 کارما نظرات دریافتی:‌ بیش از 50 نظرات دریافتی:‌ بیش از 50 دارای 25 پاسخ صحیح دارای 25 پاسخ صحیح ارسال کننده پاسخ با 25 رای ارسال کننده پاسخ با 25 رای
جهت ارسال پاسخ ابتدا عضو سایت شوید.