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

4 سال پیش توسط captan مطرح شد
آفلاین
user-avatar
captan ( 1176 تجربه )
4 سال پیش

لینک کوتاه اشتراک گذاری

0

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

آنلاین
user-avatar
حسام موسوی ( 459435 تجربه )
4 سال پیش
تخصص : طراح و برنامه نویس

لینک کوتاه اشتراک گذاری

0

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

آفلاین
user-avatar
عمو پدی ( 11376 تجربه )
4 سال پیش
تخصص : برنامه نویس خرده پای ری اکت

لینک کوتاه اشتراک گذاری

0

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

آفلاین
user-avatar
captan ( 1176 تجربه )
4 سال پیش

لینک کوتاه اشتراک گذاری

0

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

آفلاین
user-avatar
عمو پدی ( 11376 تجربه )
4 سال پیش
تخصص : برنامه نویس خرده پای ری اکت

لینک کوتاه اشتراک گذاری

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...

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

برای ارسال پاسخ لازم است، ابتدا وارد سایت شوید.