راکت

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

7 پاسخ

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

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

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

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

ثبت پرسش جدید

پاسخ‌ها

7
حسین شیری نژاد
حسین شیری نژاد
@hosseinshirinegad98

تخصص: programmer

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


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

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

use Illuminate\Http\Request;
حسین شیری نژاد
حسین شیری نژاد
@hosseinshirinegad98

تخصص: programmer

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

شاید پاسخ شما همین‌جا باشد

وحید
وحید
@forughi.vahid

تخصص: Fullstack

@javadbolouri72

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

@hosseinshirinegad98

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

JBolouri
JBolouri
@javadbolouri72

@forughi.vahid

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

وحید
وحید
@forughi.vahid

تخصص: Fullstack

@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
JBolouri
@javadbolouri72

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

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

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