JBolouri
4 سال پیش توسط JBolouri مطرح شد
7 پاسخ

چک کردن وضعیت کاربر هنگام احراز هویت

سلام دوستان..

یه احراز هویت جداگانه برای ادمین ها دارم..
یه فیلد توی جدول ادمین ها دارم به نام status که یا مقدار 0 داره یا 1
1 به معنی فعال و
0 به معنی مسدود هست

چطوری میتونم بدون نوشتن میدل ور اضافی همون موقع احراز هویت با سیستم پیشفرض لاراول، از ورود کاربرایی که وضعیتشون 0 هست جلوگیری کنم؟

اگر 0 باشه وضعیتش میخوام پیام نمایش بده که حساب کاربری مسدود هست و اجازه ورود نده..


ثبت پرسش جدید
حسین شیری نژاد
تخصص : programmer
@hosseinshirinegad98 4 سال پیش آپدیت شد
0

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


    protected function credentials(Request $request)
    {
        $array = $request->only($this->username(), 'password');
        $array['status'] = 1;
        return $array;
    }
@javadbolouri72

یه نکته مهم : این کلاسو هم در ابتدای کنترلر مربوطت قرار بده

use Illuminate\Http\Request;

حسین شیری نژاد
تخصص : programmer
@hosseinshirinegad98 4 سال پیش مطرح شد
1

البته فکر نکنم در صورت غیر فعال بودن کاربر بتونی به این صورت پیام مناسبی بهش نشون بدی سیستم به صورت پیش فرض پیام میده که اطلاعات وارد شده اشتباه است، مثل قبل. اگر می خوای یک پیام مناسب جهت غیر فعال بودن کاربر نشون بدی بهتره اول بزاری لاگین کنه بعد با یک میدلور بلافاصله وضعیت status رو برسی کنی اگر غیر فعال بود logout ش کنی و یه پیام مناسب بهش نشون بده.@javadbolouri72


وحید
تخصص : Fullstack
@forughi.vahid 4 سال پیش مطرح شد
1

@javadbolouri72

  • میتونید توی authController توی credential ها status رو هم اضافه کنید. یا قبل از atempt دستی یه where بزنید.
  • ولی کلا لاراول میدلور رو گذاشته دقیقا برای همین کارا ، چرا نمیخواید ازش استفاده کنید ؟!

JBolouri
@javadbolouri72 4 سال پیش مطرح شد
0

@hosseinshirinegad98

بله ظاهرا بهترین راه همینه که میگید..


JBolouri
@javadbolouri72 4 سال پیش مطرح شد
0

@forughi.vahid

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


وحید
تخصص : Fullstack
@forughi.vahid 4 سال پیش مطرح شد
1

@javadbolouri72
من اگر جای شما باشم حتما از میدلور استفاده میکنم ، چون هم کلین کد هست هم بسیار اسکیلبل و همچنین بسیار ساده ، میتونید برای کلین تر شدن هم میدلور هایی که خودتون اضافه میکنید توی یه پوشه جدا بزارید که شلوغ نباشه ، مثلا midleware/custom .
احراز هویت خود لاراول برای موارد پایه هست ، شما الان فقط status ادمین دارید ، بعدا دو تا مورد دیگه هم اضافه بشه یا چند نوع کاربر دیگه اضافه بشه بخواید اونارم چک کنید ، کارتون هم سخت میشه هم تمیز ازآب درنمیاد.
حتما خودتون بلد هستید ولی حالا من یه بار سادش رو میگم شاید نظرتون تغییر کرد ،
شما میخواید یسری از روت هایی که مربوط به ادمینه قبل از اجرا یه شرطی رو پاس کنه ،چهار کار باید انجام بدید

  1. php artisan make:middleware custom/Admin

    این کد تنها کاری که میکنه یه فایل توی پوشه میدلورا اضافه میکنع ، خودتون دستی هم میتونید اضافه کنید.

  2. توی فایلی که اضافه شده شرطتون رو اضافه میکنید ، هر چیزی میتونه باشه ، بعد در صورت پاس شدن شرط مورد نظر میگید next در غیر این صورت هم هر پیامی میخواد نشون میدید ، میتونید view کنید یا throw extention کنید یا abort کنید ، هر چی دوست داشتید.
  3. توی پوشه kernel.php توی http آخرش میدلور خوتون رو اضافه میکنید.
  4. حالا برای هر روتی که خواستید ازش استفاده کنید ، هم به صورت گروهی میتونیدروی چند تا روت اضافه کنید ، هم تکی روی یه روت
    Route:group(["middleware"=> "admin"], ... )
    // یا
    ->middleware("admin")

    اجراش شاید 10 تا 20 دقیقه وقت بگیره ولی خیلی مزیت داره.


JBolouri
@javadbolouri72 4 سال پیش مطرح شد
0

@forughi.vahid
بله کاملا حق با شماست..
حتما همین کارو میکنم..
ممنون از شما 🌷🌷


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

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