پیاده سازی لاگین با نام کاربری و ایمیل در لاراول

یکی از مهم ترین قسمت های هر پروژه ای که باید بهش توجه داشت، بخش ورود به سایت یا همون Login هست. من توی Evace و چند پروژه ی دیگه که با لاراول داشتم پیاده میکردم، ترجیح دادم کاربر قابلیت اینو داشته باشه که هم با ایمیل و هم با نام کاربری بتونه لاگین کنه.

از اونجایی که سیستم Authentication لاراول بصورت پیشفرض با ایمیل و رمز، لاگین رو انجام میده، شما باید یک سری تغییرات انجام بدین تا فیلد نام کاربری ، هم نام کاربری بگیره و هم ایمیل و در نهایت رمز عبور و وقتی کاربر روی لاگین کلیک کرد، احراز هویت صورت بگیره و کاربر لاگین بشه…

یعنی در اصل میخوایم یه کاری کنیم که اگه کاربر نام کاربری و رمز عبور وارد کرد، بتونه لاگین کنه ، اگه ایمیل و رمز هم وارد کرد بازم لاگین انجام بشه.

برای این کار شما باید یه جدول Users داشته باشید که یک فیلد به اسم مثلا username داشته باشه که نام کاربری هر کاربر بصورت unique توش ذخیره میشه و یه فیلد هم برای ایمیل که توی لاراول بصورت پیشفرض وجود داره ..

خب این کار رو با یه مایگریشن که جدول users رو ویرایش کنه میتونین انجام بدین و توی فانکشن up باید کدتون چیزی شبیه به کد زیر باشه :

کار بعدی اینه که یه Request بسازین که با دستور زیر میتونین این کار رو انجام بدین ( اسم ریکوئست دلخواه هست )

حالا برید توی مسیر ریکوئست ها : app\Http\Requests و اون ریکوئست که ایجاد کردین رو باز کنید.

توی فانکشن authorize مقدار بازگشتی رو به true تغییر بدید، تو فانکشن rules هم باید قوانین اعتبارسنجی فیلدهای فرم لاگین رو بنویسید که من این کد رو نوشتم :

دقت داشته باشید که username و password نام فیلدهایی هستند که توی فرم لاگین به کار رفته اند و شما اینجا مشخص کردید که هر دو فیلد باید پر شده باشند.

کار بعدی که باید بکنید اینه که کنترلر سیستم احراز هویت رو یکم دستکاری کنید.

برای لاراول نسخه 5.2 کنترلر AuthController و برای نسخه 5.3 هم LoginController کارای مربوط به لاگین رو انجام میدن .. نسبت به ورژن لاراولی که استفاده میکنید باید کنترلر مربوطه رو باز کنید و یه متد با نام login بنویسید ( اسم متد حتما باید همین login باشه ) :

خب توی کد بالا هم میگیم اگه کاربر نام کاربری و رمز وارد کرده بود و معتبر بود لاگین انجام بشه و اگر ایمیل و رمز عبور وارد کرده بود و معتبر بود بازم لاگین انجام بشه و در غیر این صورت کاربر به همون صفحه لاگین هدایت بشه.

در نهایت باید بررسی کنید که View مربوط به فرم لاگین شما مثل کد زیر باشه ( قسمتی که form هست ) :

امیدوارم که این مطلب براتون مفید باشه و استفاده کنید. اگه مشکلی یا سوالی داشتید میتونید کامنت بزارید.

ممنون

1 دیدگاه

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

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