ARON
5 سال پیش توسط ARON مطرح شد
5 پاسخ

تغییر گزینه های لاگین

دوستان میشه برای کاربرانی که با یه گارد خاص لاگین میشن تعریف کرد که به جای ایمیل شماره موبایل وارد کنن؟


ثبت پرسش جدید
علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 5 سال پیش مطرح شد
1

شما در یه گارد شخصی سازی شده می‌تونید همه چیز رو تغییر بدید


ARON
تخصص : برنامه نویس
@aron 5 سال پیش مطرح شد
0

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

            $this->validate($request, [
                    'mobile'   => 'required',
                    'password' => 'required|min:6'
            ]);

            if (Auth::guard('endUser')->attempt(['mobile'=> $request->mobile , 'password' =>$request->password ] , $request->get('remmember'))){
                    $user_data = auth('endUser')->user();
                    if($user_data->b2b_user->business_id == 0){
                            return redirect()->intended('/user_dashboard');
                    }
                    return redirect()->intended('/dashboard');
            }

علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 5 سال پیش مطرح شد
1

سیستم احراز هویت لاراول در اصل با Guard ها و Provider ها مدیریت میشه

Guard: راهی برای ارائه منطق یا لاجیکی که برای مشخص کردن کاربران لاگین شده استفاده میشه.. مثل session , token

برای اینکه شما بجای ایمیل بتونید شماره تلفن وارد کنید به LoginController مراجعه کنید. میبینید که این کنترلر از تریت AuthenticatesUsers استفاده میکنه.. که اگر این تریت رو باز کنید (/vendor/laravel/framework/src/Illuminate/Foundation/Auth/AuthenticatesUsers.php) متدی هست به نام username() که می‌تونید تغییر بدید

اما یه راه دیگه هم هست که متد credentials رو داخل LoginController آپدیت کنید .. تا هم Username, Email , Phone رو دریافت کنه و با یکیشون لاگین کنه:

      /**
       * Get the needed authorization credentials from the request.
       *
       * @param  \Illuminate\Http\Request  $request
       * @return array
       */
        protected function credentials(Request $request)
        {
          if(is_numeric($request->get('email'))){
            return ['phone'=>$request->get('email'),'password'=>$request->get('password')];
          }
          elseif (filter_var($request->get('email'), FILTER_VALIDATE_EMAIL)) {
            return ['email' => $request->get('email'), 'password'=>$request->get('password')];
          }
          return ['username' => $request->get('email'), 'password'=>$request->get('password')];
        }

موفق باشید


ARON
تخصص : برنامه نویس
@aron 5 سال پیش مطرح شد
0

این توضیح اخرتون مرسی


علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 5 سال پیش مطرح شد
1

خواهش میکنم


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام