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

مدیریت نقش ها و سطوح دسترسی با پکیج ENTRUST

درود
برای مدیریت نقش ها و سطوح دسترسی پیشنهاد می کنید از اول ، نوشته بشه یا اینکه پکیج هایی مثل ENTRUST کارایی لازم رو دارن ؟
آیا با این پکیج کار کردید ؟


ثبت پرسش جدید
حسام موسوی
تخصص : طراح و برنامه نویس
@hesammousavi 6 سال پیش مطرح شد
0

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


عمو پدی
تخصص : برنامه نویس خرده پای ری اکت
@pedram6195 6 سال پیش مطرح شد
0

من با Entrust کار کردم و میگم پکیج خوبیه و برای پروژه های سبک و متوسط کاملا پاسخگو هست. کار باهاش هم خیلی راحته. همه چیو تو گیت هابش نوشته. اما.....
اگه بخوای کلا نقش هات داینامیک باشن، یعنی بعدا ادمین هروقت دلش خاست نقش جدید اضافه کنه و بهش دسترسی های جدید بده، به احتمال زیاد با Entrust به مشکل میخوری!


captan
@captanayak 6 سال پیش مطرح شد
0

سپاس
آقای Pedi منظورتون از اینکه احتمالا به مشکل میخوری چیه دقیقا ؟ دقیقا چه مشکلی ؟


عمو پدی
تخصص : برنامه نویس خرده پای ری اکت
@pedram6195 6 سال پیش مطرح شد
1

منظورم مشکلی نیست که نشه حلش کرد.
فرض کنید شما سه تا رول دارین با اسم های 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...

خیلی پیچیده شد! امیدوارم متوجه شده باشی


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

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