تکنولوژی نوین اینترنتی
ایجاد یک سیستم مجوز (Permissions) در Laravel یکی از ویژگیهای مهم در ساخت اپلیکیشنهای پیچیده و مدیریتی است. در لاراول، این کار میتواند به راحتی با استفاده از پکیجهای آماده مانند Spatie/laravel-permission یا با استفاده از سیستم built-in لاراول انجام شود.
در اینجا نحوه ایجاد یک سیستم مجوز کامل با استفاده از پکیج Spatie/laravel-permission را توضیح میدهم.
برای استفاده از این پکیج ابتدا باید آن را نصب کنید. این پکیج به شما این امکان را میدهد که Roles و Permissions را به راحتی در پروژهی لاراول مدیریت کنید.
ابتدا پکیج را نصب کنید:
سپس فایلهای مایگریشن پکیج را منتشر کنید:
فایلهای مدل و config رو هم منتشر کنید:
حالا باید مایگریشنها رو اجرا کنید تا جداول مربوط به roles, permissions و model_has_permissions ساخته بشه:
برای اینکه سیستم مجوز در مدل User کار کنه، باید مدل User رو تنظیم کنیم. برای این کار کافی است که از Spatie\Permission\Traits\HasRoles
استفاده کنید.
در فایل app/Models/User.php
:
حالا میخواهیم Roles و Permissions را ایجاد کنیم.
برای ایجاد Permissions (مجوزها) میتوانید از دستور Artisan استفاده کنید یا به صورت دستی در جدول permissions درج کنید.
مثلاً میتوانیم سه مجوز ساده ایجاد کنیم: create-post, edit-post, delete-post.
حالا که مجوزها ساخته شدند، میتوانیم Roles (نقشها) رو بسازیم. مثلاً، یک نقش برای مدیر و یک نقش برای نویسنده:
حالا میتوانیم مجوزها رو به نقشها اختصاص بدیم. برای مثال، به مدیر همهی مجوزها و به نویسنده فقط مجوز create-post و edit-post داده میشود.
برای اختصاص دادن یک Role به یک کاربر، کافی است که از متد assignRole()
استفاده کنید. مثلاً، برای اختصاص دادن نقش admin به یک کاربر:
پس از ایجاد Roles و Permissions و اختصاص دادن آنها به کاربران، میتوانید به راحتی دسترسیهای مختلف کاربران رو بررسی کنید.
شما میتوانید از middleware برای محافظت از روتها استفاده کنید تا فقط کاربرانی که مجوز خاصی دارند، به آنها دسترسی داشته باشند.
برای مثال، برای محافظت از روتها و دسترسی فقط به کاربران با نقش admin:
یا میتوانید به طور مستقیم از مجوزها استفاده کنید:
ساخت یک Route برای مدیریت پستها (فقط برای نویسندگان و مدیران)
در اینجا کاربرانی که نقش admin یا writer دارند میتوانند به روت /posts
دسترسی پیدا کنند.
با استفاده از پکیج Spatie/laravel-permission، به راحتی میتوانید سیستم مجوز (Permissions) و نقشها (Roles) را در لاراول پیادهسازی کنید. این سیستم به شما این امکان را میدهد که امنیت دسترسی به قسمتهای مختلف برنامه را به طور دقیق و آسان کنترل کنید.
اگر نیاز به اضافه کردن ویژگیهای پیچیدهتری مثل مجوزهای پویا (dynamic permissions) یا ساخت API با کنترلهای دسترسی پیشرفته دارید، میتوانید از این روشهای پایهای برای گسترش پروژه استفاده کنید. اگر سوالی داشتید یا نیاز به توضیح بیشتر دارید، حتماً بپرسید! 😎