راکت

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

4 پاسخ

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

ثبت پرسش جدید

پاسخ‌ها

4
حسام موسوی
حسام موسوی
@hesammousavi

تخصص: طراح و برنامه نویس

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

عمو پدی
عمو پدی
@pedram6195

تخصص: برنامه نویس خرده پای ری اکت

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

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

captan
captan
@captanayak

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

عمو پدی
عمو پدی
@pedram6195

تخصص: برنامه نویس خرده پای ری اکت

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

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

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

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