علی علیمحمدی
علی علیمحمدی
خواندن ۱ دقیقه·۴ سال پیش

ورود با شماره یا ایمیل در لاراول 8 - login by phone or email laravel 8

Login to Laravel 8 by phone or email
Login to Laravel 8 by phone or email

در لاراول 8 از اونجایی که خودتونم میدونید سیستم Auth با پکیج جت استریم ایجاد شده و در ابتدا شمارو دچار سردرگمی میکنه چون به ظاهر هیچ لاگین کنترلری وجود نداره.

پس ما از کجا ورود به وب سایت شخصی سازی کنیم ؟

حالا میخواهیم کاری کنیم که هم با ایمیل و هم با شماره موبایل بتونیم وارد سایت شویم تنها کاری که میکنیم ستون جدیدی به جدول یوزر با عنوان phone اضافه میکنیم . و موقع ثبت نام یا هر جای دیگه میتونید این فیلد را پر کنید .

اما بحث اصلی ، چطوری کاربر به دلخواه خودش با ایمیل یا شماره تلفن بتونه وارد سایت بشه ابتدا باید داخل صفحه لاگین type اینپوت ایمیل را به text تغییر دهید .

بعد از آن به داخل پوشه app\Providers شوید و در فایل FortifyServiceProvider متد boot را ویرایش کنید

قطعه کد زیر را انتهای متد boot اضافه کنید.

Fortify::authenticateUsing(function (Request $request) { if (preg_match(&quot/[-0-9a-zA-Z.+_]+@[-0-9a-zA-Z.+_]+.[a-zA-Z]{2,4}/&quot, $request->email )){ $user = User::where('email', $request->email)->first(); } if(preg_match(&quot/09(1[0-9]|3[1-9]|2[1-9])-?[0-9]{3}-?[0-9]{4}/&quot, $request->email)){ $user = User::where('phone', $request->email)->first(); } if ($user && Hash::check($request->password, $user->password)) { return $user; } });

در این کد ابتدا ما فرمت رکویست ایمیل را چک میکنیم که به صورت ایمیل هست یا شماره و به نسبت اون کاربر پیدا میکنیم و بعد از پیدا شدن کاربر پسورد کاربر با پسورد ورودی از فرم لاگین را چک میکنیم اگر پسورد ها یکسان باشند کاربر ارسال میشه و ورود به سایت انجام میشه

علاقه مند به تکنولوژی های جدید ، زبان های جدید برنامه نویسی و Backend Developer
شاید از این پست‌ها خوشتان بیاید