شرح صفوف ومحتوى الفقرة
بوابات الصلاحيات Gates هي قواعد تفويض تعتمد على الدوال المغلقة ويتم تعريفها عبر دالة Gate::define داخل دالة boot في المزود AppServiceProvider. تستقبل دالة البوابة دائماً كائن المستخدم المسجل حالياً كمعامل أول، متبوعاً بأي كائن نموذج إضافي مطلوب لاتخاذ قرار السماح أو المنع.
- تعريف البوابة (Gate::define): تسجل قاعدة صلاحية مسماة داخل دالة boot في ملف AppServiceProvider.
- حقن المستخدم تلقائياً (Auto User Arg): يمرر Laravel كائن المستخدم الحالي كأول معامل للدالة المغلقة.
- القرار المنطقي (Boolean Return): أعد القيمة true لمنح الصلاحية أو false لرفض تنفيذ الإجراء.
PHP
use App\Models\Post;
use App\Models\User;
use Illuminate\Support\Facades\Gate;
Gate::define('update-post', function (User $user, Post $post):
return $user->id === $post->user_id;
});