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

استفاده از Spatie Permission یا نوشتن گیت اختصاصی

با سلام
من در پروژه شخصی خودم قصد دارم که قابلیت سطح دسترسی به پنل کاربری خودم که با لاراول نوشتم اضافه کنم. با یه جستجو به پکیچ Permission رسیدم که پکیج کامل و جامعی هست.
من در پروژه خودم قصد دارم که به این شیوه رفتار کنم:

نمایش / عدم نمایش بخش هایی از قالب (Blade Template) بر اساس سطح کاربر، مثلا اگر کاربر با سطح admin داشته باشم فقط بخش وبلاگ را ببیند و تنظیمات را که مخصوص superadmin است را نبیند.

البته و طبیعتا من باید از Route های خودم نیز محافظت کنم، مثلا در مثال فوق اگر کاربری با سطح admin بیاید و آدرس www.mysite.com/admin/settings را وارد کند به کاربر خطایی بدهد که شما سطح دسترسی لازم را ندارید. این مورد هم با نوشتن یک Middleware و اعمال آن روی Route Group خاصی امکان پذیر است.

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

به طور خلاصه برای اعمال چنین سطح دسترسی ساده ای استفاده از پکیج Spatie Laravel Permision توصیه می شود یا خیر؟

ممنون میشم باهم در این زمینه گفتگویی داشته باشیم.


ثبت پرسش جدید
ali mohammadzadeh
@alimohammadzade662 4 سال پیش آپدیت شد
2

سلام
این نظر شخصیه و ممکنه درست باشه یا اشتباه .
ولی سنگینی در کار نیست
اینک جدول زیاد داره مبنی بر این نیست که سنگینه. شما میتونید از جدولاش استفاده نکنین
2 تا از جداولش فقط برای اینه که بیاد اسم رول هاتون و اسم پرمیژن هاتون رو داخلش بزارین . که خودتون هم بخواین دسترسی بنویسید باید یجا نگه دارید رول ها و پرمیژن هاتون رو .
3 تا جدول دیگش هم یکیش برای رول هاست که میگه هر یوزر چه رولی داره . و یکی دیگه از جداولش میگه که هر یوزر چه پرمیژن هایی داره .
و یه جدول دیگش هم میگه هر رول چه پرمیژن هایی میتونه داشته باشه
شما بخواین خودتون هم دسترسی درست کنین باید این کار هارو بکنین .
کل این کار ها سنگینی به وجود نمیاره .

بخوام براتون بیشتر باز بکنم .
شما بخواین به هر کاربر رول بدین باید یه جدول اسم رول هاتون باشه و یه حدول میانه که بگین هر یوزر چه رولی داره .
که دقیقا spatie همین کارو میکنه .

شما بخواین به هر یوزر پرمیژن های خاص بدین . باید اول یه لیست داشته باشین که لیست پرمیژن هاتونه . بعد یه جدول میانه داشته باشین که بگین اره هر یوزر چه پرمیژن هایی داره .

اگرم نیاز به کل امکاناتش ندارید میتونین فقط از پرمیژن هاش استفاده کنین . من خودم اصولا پروژه های کوچیک فقط از پرمیژن ها استفاده میکنم .

خب تا اینجا چهار تارو داریم .

پنجمی هم برای اینه که مثلا من یه رول دارم . میخوام رولم یه دسترسی هایی از همون اول داشته باشه . و نیاز نباشه بخوام بهش دسترسی بدم . و مثلا ساخت محتوا و ویرایشش رو بهش بدم . خب این وسط یه جدول میانه میخوره بین رول ها و پرمیژن ها . و شما به هر رول دسترسی میدین .

کل کاری که spatie میکنه همینه و کل کاری که شما هم باید برای دسترسی هاتون انجام بدین قطعا باید همینطور باشه .
اگه فکر میکنین امکاناتش رو نیاز ندارین فقط از پرمیژن هاش استفاده کنین .


مهدی
تخصص : برنامه نویس و طراح وب
@mrmmg 4 سال پیش مطرح شد
0

@alimohammadzade662 سلام، با تشکر از لطف و توضیحات جامع و کامل شما، من حقیقتا توضیحات کاملی از فرایند کار این پکیج نمیدونستم که الان با توضیحات شما به طور کامل کاربرد جداول مذکور رو درک کردم.


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

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