راکت
ali jvn.
ali jvn.
توسط ali jvn. مطرح شد
حل
12 پاسخ

احراز هویت برای ۳ جدول جداگانه در لاراول

سلام
من ۳ تا جدول دارم که میخوام برای هر کدام احراز هویت جداگانه بنویسم
یکی که ادمین ها هستن که با auth خوده لاراول اوکی میشه
یکی برای مشریانم هست که با شماره تلفن و ارسال پیامک بهشون انجام میشه
یکی هم برای فروشندگانم هست که اونم با ایمیل و پسوورده
لطفا راهنمایی کنید چطوری این کار امکان پذیر هست؟
خیل ممنونم


ثبت پرسش جدید
حسن محمدزاده
حسن محمدزاده
تخصص :مدیر فنی
@hassan7 سال پیشمطرح شد
1

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

https://github.com/Hesto/multi-auth


bardia
bardia
تخصص :Golang/Laravel
@mrbardia727 سال پیشمطرح شد
1

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


محمد صادقیان
محمد صادقیان
تخصص :برنامه نویس وب - فریم ورک Laravel
@drcode.ir7 سال پیشمطرح شد
1

کجا کار مشکل دارید؟ چون خیلی راحت می تونید با Guard خود لاراول همه دسته کاربرهارو مدیریت کنید.

https://laravel.com/docs/5.7/authentication#adding-custom-guards


ali jvn.
ali jvn.
تخصص :توسعه دهنده وب (back-end)
@alijavanmardi7 سال پیشمطرح شد
0

@drcode.ir
من میخوام یکی از جداولم با ایمیل وارد شه
یکی با username
و یکی هم با شماره موبایل

هرکاری میکنم با guard این کار رو نمیتونم انجام بدم این خط کدم کار نمیکنه:

if($this->guard('store')->attempt($this->credentials(request()), false)){
            return redirect()->intended('/');
        }

ali jvn.
ali jvn.
تخصص :توسعه دهنده وب (back-end)
@alijavanmardi7 سال پیشمطرح شد
0

@hasan2i2
این پکیج میتونه برای هرکدوم از جداولم یک روش ورود جدا داشته باشه؟
مثلا یکی با موبایل یکی با ایمیل و یکی با یوزرنیم؟


حسن محمدزاده
حسن محمدزاده
تخصص :مدیر فنی
@hassan7 سال پیشمطرح شد
1

@alijavanmardi1996
اره میتونی از داخل کنترلری که برای اون نوع کاربری میسازه به نام LoginController متد username رو Override کنی


سیدعلی موسوی
سیدعلی موسوی
تخصص :سی شارپ و پی اچ پی
@juza667 سال پیشمطرح شد
0

خب برای اینجور کارها باید auth کنترلر خودت روبنویسی و زیاد هم سخت نیست به نظرم چون خودم پیاده کردم

AuthController رو ببین و بازنویسیش کن واس خودت


ali jvn.
ali jvn.
تخصص :توسعه دهنده وب (back-end)
@alijavanmardi7 سال پیشمطرح شد
0

من از پکیج hesto استفاده کردم
برای تغییر email از تابع زیر استفاده کردم:

public function username()
    {
        return 'userName';
    }

ولی ارور زیر رو میده:

These credentials do not match our records.

سرچ کردم خیلیا نوشته بودن این رو اضافه کن به مدلت:

public function setPasswordAttribute($password)
    {
        $this->attributes['password'] = Hash::make($password);
    }

ولی بازم درست نمیشه
@hasan2i2
@juza666

چکار کنم درست شه؟


سیدعلی موسوی
سیدعلی موسوی
تخصص :سی شارپ و پی اچ پی
@juza667 سال پیشمطرح شد
1

بیا و اینجوری فکر کن
شما یک فرم داری (حالا هرچندتا فرم)
یکسری داده رو به سمت route مورد نظرت ارسال میکنی
سمت روت اون داده ها رو میفرسته سمت یک کنترلر مثلا AuthController
حالا داده رو میگیری و با eloquent و متد where میای جستجو رو انجام میدی در صورت وجود داشتن میای کاربر رو لاگین میکنی. تا اینجا فکر کنم متوجه شدی که با هر ایتمی دوس داری با هر روتی که دوست داری میتونی با یک متد Where جستجو رو انجام بدی.

حالا میمونه استفاده از کدها و نحوه پیاده سازیش،

use IlluminateFoundationAuthAuthenticatesUsers;

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

public function login(Request $request)
{

    $c = array('email' => $request->LoginEmailOrPhone, 'password' => $request->LoginPassword);
    if(Auth::attempt($c, true)){
        Auth::login(Auth::user(), true);
        return redirect()->to('/');
    } else {
        return redirect()->to('/login');
    }
{

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

لاراول از سیستم احراز هویت پیش‌فرض خودش استفاده میکنه٬ اگر نمی‌تونید اون طور که میخواهید شخصی‌سازیش کنید٬ از پایه کدشو بنویسید. مسئله پیچیده‌ای نیست.

باید اطلاعات رو از کاربر بگیرید و با دیتابیس مطابقت بدید. اگر اطلاعات صحیح بود که کاربر وارد سیستم میشه اگر هم نه که..


ali jvn.
ali jvn.
تخصص :توسعه دهنده وب (back-end)
@alijavanmardi7 سال پیشمطرح شد
1

@hassan
سلام آقا من توی لوکال این پکیج رو نصب کردم و فایل ها رو توی هاستم کپی کردم ولی این ارور رو توی لاگین میده:

Trait 'HestoMultiAuthTraitsLogsoutGuard' not found
فایل های composer.json و package.json و package.lock و همینظور فایل های این پکیج که توی vendor بود هم کپی کردم بعدش ولی برای login و logout این ارور رو میده

متوجه شدم باید trait رو میاوردم توی app
ولی نتونستم این پاسخ رو پاک کنم
بازم ممنون از پکیجی که معرفی کردی


حسن محمدزاده
حسن محمدزاده
تخصص :مدیر فنی
@hassan7 سال پیشمطرح شد
0

@alijavanmardi1996
خواهش میکنم
موفق باشی


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

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