ENTRUST پکیج خوبیه و مستندات خوبی داره بستگی به خودتون داره که میخواید از اون استفاده کنید یا نه
من با Entrust کار کردم و میگم پکیج خوبیه و برای پروژه های سبک و متوسط کاملا پاسخگو هست. کار باهاش هم خیلی راحته. همه چیو تو گیت هابش نوشته. اما.....
اگه بخوای کلا نقش هات داینامیک باشن، یعنی بعدا ادمین هروقت دلش خاست نقش جدید اضافه کنه و بهش دسترسی های جدید بده، به احتمال زیاد با Entrust به مشکل میخوری!
منظورم مشکلی نیست که نشه حلش کرد.
فرض کنید شما سه تا رول دارین با اسم های user , admin, writer :
حالا هروقت خواستین چک کنید که کاربر مئلا ادمینه یا نه، اینجوری چک میکنید:
$user->hasRole('admin');
خب این رشته ی 'admin' از همون فیلد name از جدول roles گرفته شده دیگه. تا اینجا مشکلی نیست. حالا فرض کنید سیستم داینامیک باشه و شما بعدا بخواین تحت یک فرم (داخل ویو) یک نقش چهارمی هم اضافه کنید به نام مئلا reader که فقط میتونه پست هارو ببینه. خب شما فیلد name این نقش رو هم میذارید reader. اما... داخل سیستم که هیچ شرطی نذاشتین که اگه فلان کاربر نقش reader داشت میتونه فلان کارو بکنه! اینجاست که Entrust کم میاره. و اما راه حل:
داخل جدول roles باید یک فیلد type اضافه کنید که enum باشه و مقادیرش از قبل تعریف شده باشن مثلا: user, admin, writer, reader .
حالا وقتی تو سیستم میخای نقش جدید تعریف کنی باید نوعشم تعریف کنی که ماهیت کلی این نقش چطوری باشه.
حالا دیگه باید شرط هاتو اینجوری تعریف کنی که اگه هرچنتا هم نقش جدید تعریف شد، وابسته به فیلد name نباشه و به type وابسته باشه:
if( $user->roles()->where('type', 'admin')->exists() )
// user has admin role...
else
// user doesn't have admin role...
خیلی پیچیده شد! امیدوارم متوجه شده باشی
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟