اموزش ایجاد سطح دسترسی در لاراول

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

تعیین سطح دسترسی به 2 شکل انجام میشود :

روش اول -> گروه کاری

مثلا میتونید تعریف کنید که اگه مدیر بود بتونه این ایتم ها رو ببینه و انجام بده و همه کاربران یک گروه دسترسی برابری دارند و در صورتی که یک دسترسی تعریف کنید برای همه اعمال خواهد شد

روش دوم -> سطح دسترسی انتخابی

در این روش شما مشخص میکنید که مثلا کاربر نوید به ایتم های مشخصی دسترسی داشته باشد و افرادی که در یک گروه هستند دسترسی های برابری ندارند و هرکس بنا به احتیاجات خودش به ایتم های مشخصی دسترسی داره


خوشبختانه در لاراول ما ابزاری به نام Gate و در سطح گسترده تر Policy داریم ، با وجود Gate شما میتوانید با کمترین سطح کد نویسی دسترسی ها رو اعمال کنید


تعریف دسترسی بر اساس گروه کاری

ابتدا در تیبل کاربران خود یک فیلد اضافه میکنیم به نام type

افزودن فیلد type به کاربر

افزودن فیلد user_type به دیتابیس
افزودن فیلد user_type به دیتابیس

سپس در فایل : 'app/Providers/AuthServiceProvider.php'

به شکل زیر 3 عدد Gate برای دسترسی های مدیر ، ویرایشگر و نویسنده تعریف میکنیم :

تعریف Gate ها برای مشخص کردن سطح دسترسی
تعریف Gate ها برای مشخص کردن سطح دسترسی

همچنین اگر از PHP Storm استفاده نمیکنید و import ندارید ، یادتون نره که به شکل زیر Gate رو import کنید

import Gate
import Gate

خب حالا کار ما تمومه .

حالا شما در 2 جا نیاز دارید که از Gate استفاده کنید ، یکی درون فایلهای html و موتور قالب Blade و دیگری درون کنترلر هاست

برای اینکه مشخص کنید که کاربر به چیزی دسترسی داره ، شما میتونید از کلمه کلیدی can استفاده کنید

استفاده درون موتور قالب blade

مثلا در تصویر زیر مشخص کردیم که کاربر به Dashboard - New Post و Edit Post دسترسی داشته باشد

همچنین اگر بخواهید درون کنترلر ها تعیین کنید که کاربر به چه چیزهایی دسترسی داشته باشد به جای can میتوانید از کلمه allows استفاده کنید ، در تصویر زیر ، ما گفتم که اگر کاربر Admin بود به پیغام دسترسی داشته باشد

تعیین سطح دسترسی
تعیین سطح دسترسی


روش دوم ، در پست بعد (بزودی)