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

Custom Gate Responses and Before ردود البوابة المخصصة وصلاحية المدير

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

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

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

عندما تحتاج لتوضيح سبب رفض الإجراء للمستخدم، أعد كائناً من واجهة Response داخل البوابة باستخدام Response::allow أو Response::deny مع رسالة مخصصة. كما يمكنك تسجيل خطاف Gate::before لمنح المدير العام صلاحية شاملة قبل فحص البوابات الفردية.

  • رسالة رفض مخصصة (Response::deny): تمرر رسالة توضيحية دقيقة تظهر في صفحة الخطأ أو عبر دالة inspect.
  • إخفاء السجل بـ 404 (denyWithStatus): تتيح إرجاع 404 بدلاً من 403 لإخفاء وجود السجلات الخاصة تماماً.
  • تجاوز المدير العام (Gate::before): ينفذ قبل كل البوابات؛ فإذا أعاد true يمنح الصلاحية فوراً وإذا أعاد null يكمل الفحص.
PHP
use Illuminate\Auth\Access\Response;

Gate::before(fn (User $u) => $u->is_admin ? true : null);

Gate::define('edit-post', function (User $u, Post $p): Respons
    return $u->id === $p->user_id
        ? Response::allow()
        : Response::deny('Only the author may edit this post.'
});