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

شرطی کردن اعتبار سنجی با توجه به نوع کاربر

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

من جدول یوزرم دو نوع کاربر داره..

فرض کنید یوزر عادی و ادمین..

با توجه به فیلد زیر:

type = 0 //user
type = 1 //admin

میخوام اعتبار سنجی رو شرطی کنم..

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


ثبت پرسش جدید
میلاد هدایت پور
تخصص : در حال پیشرفت
@miladparsi1070 4 سال پیش آپدیت شد
1

ابتدایی ترین راهش اینه که if بزاری اگه ادمین بود یه ولیدیشن اجرا شه و اگه نبود یه ولیدیشن دیگه اجرا شه

 if ($user->type) {
            $validator = $this->validate($request, [
                //admin-validation
            ]);
        } else {
            $validator = $this->validate($request, [
                //another-validation
            ]);
        }

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


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

به نکات زیر دقت کنید:

  • هر وقت توی کدهاتون مجبور شدید برای انتخاب لاجیک از switch استفاده کنید
  • یا مجبور شدید نوع یک آبجکت رو با instanceof چک کنید
  • و در بعضی موارد اگر از if استفاده کردید تا نوع رو چک کنید.

۹۰٪ مواقع نشانه این هست: که میتونید از پلی مورفیسم (Polymorphism) استفاده کنید
مثلا در اینجا میتونی یک ValidatorInterface بسازی
و ۲ کلاس UserValidator و AdminValidator هم بسازی که از اینترفیس تبعیت می‌کنند.

مزایای این کار:

  • برای سیستم مهم نیست که چه نوع Validation باید اعمال بشه.
  • سیستم فقط میدونه که باید از نوعی از Validation استفاده کنه.
  • در زمان اجرا میتونی الگوریتم رو تغییر بدی.
  • Decoupling رعایت شده و بخش های اپلیکیشن به هم اتکا ندارند.
  • قاعده open-closed principle از قوانین SOLID هم رعایت میشه (بعدا میتونی بدون تغییر کدها، ویژگی های جدید اضافه کنی)

موفق باشی


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

@ali.bayat

آها ممنون بابت راهنماییتون 🌷


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

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