شرح صفوف ومحتوى الفقرة
يرفض Laravel افتراضياً أي فحص سياسة إذا كان الزائر غير مسجل؛ ولكن إضافة علامة الاستفهام لتلميح النوع ?User تسمح للزوار بالمرور لفحص عرض السجلات المنشورة. كما يمكنك تعريف دالة before داخل كلاس السياسة نفسه لمنح المديرين صلاحية كاملة على ذلك النموذج.
- معامل المستخدم الاختياري (?User Type-Hint): يسمح بدخول الزوار غير المسجلين لفحص إمكانية قراءة المقالات المنشورة.
- مرشح السياسة المحلي (Policy before): ينفذ قبل أي دالة أخرى داخل نفس كلاس السياسة.
- إرجاع null للمتابعة (Fall-Through): إرجاع null من دالة before ينقل الفحص إلى دالة الصلاحية المطلوبة.
PHP
public function before(User $user, string $ability): ?bool
{
return $user->is_admin ? true : null;
}
public function view(?User $user, Post $post): bool
{
return $post->is_published || $user?->id === $post->user_i
}