انتقل إلى محتوى الدرس

Defining Closure Authorization Gates تعريف بوابات الصلاحيات Gate Define

التمييز الدقيق بين المصادقة والتفويض وتعريف بوابات الصلاحيات البرمجية عبر Gate::define وفحصها بـ allows و authorize.
1 صفوف تعليمية
إطار العمل Laravel
0 مشاهدة

شرح صفوف ومحتوى الفقرة

الصف 1 شرح توضيحي

بوابات الصلاحيات 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;
});