در لاراول 8 از اونجایی که خودتونم میدونید سیستم Auth با پکیج جت استریم ایجاد شده و در ابتدا شمارو دچار سردرگمی میکنه چون به ظاهر هیچ لاگین کنترلری وجود نداره.
پس ما از کجا ورود به وب سایت شخصی سازی کنیم ؟
حالا میخواهیم کاری کنیم که هم با ایمیل و هم با شماره موبایل بتونیم وارد سایت شویم تنها کاری که میکنیم ستون جدیدی به جدول یوزر با عنوان phone اضافه میکنیم . و موقع ثبت نام یا هر جای دیگه میتونید این فیلد را پر کنید .
اما بحث اصلی ، چطوری کاربر به دلخواه خودش با ایمیل یا شماره تلفن بتونه وارد سایت بشه ابتدا باید داخل صفحه لاگین type اینپوت ایمیل را به text تغییر دهید .
بعد از آن به داخل پوشه app\Providers شوید و در فایل FortifyServiceProvider متد boot را ویرایش کنید
قطعه کد زیر را انتهای متد boot اضافه کنید.
Fortify::authenticateUsing(function (Request $request) { if (preg_match("/[-0-9a-zA-Z.+_]+@[-0-9a-zA-Z.+_]+.[a-zA-Z]{2,4}/", $request->email )){ $user = User::where('email', $request->email)->first(); } if(preg_match("/09(1[0-9]|3[1-9]|2[1-9])-?[0-9]{3}-?[0-9]{4}/", $request->email)){ $user = User::where('phone', $request->email)->first(); } if ($user && Hash::check($request->password, $user->password)) { return $user; } });
در این کد ابتدا ما فرمت رکویست ایمیل را چک میکنیم که به صورت ایمیل هست یا شماره و به نسبت اون کاربر پیدا میکنیم و بعد از پیدا شدن کاربر پسورد کاربر با پسورد ورودی از فرم لاگین را چک میکنیم اگر پسورد ها یکسان باشند کاربر ارسال میشه و ورود به سایت انجام میشه