شرح صفوف ومحتوى الفقرة
بدلاً من كتابة جملة شرطية بـ Gate::denies واستدعاء abort(403) يدوياً في كل دالة متحكم، استدعِ دالة Gate::authorize في سطر واحد نظيف. عند رفض الصلاحية، تطلق هذه الدالة استثناء AuthorizationException الذي يحوله Laravel تلقائياً إلى استجابة 403 قياسية.
- حارس بسطر واحد (One-Line Guard): يغني عن تكرار الجمل الشرطية ودالة الإيقاف اليدوية في كل إجراء.
- إطلاق الاستثناء تلقائياً (Auto 403): يوقف تنفيذ الدالة فوراً ويعرض صفحة 403 أو استجابة JSON مقابلة.
- نظافة كود المتحكم (Clean Action): لا يتم تنفيذ الأسطر التالية لدالة authorize إلا بعد ثبوت الصلاحية.
PHP
public function update(Request $request, Post $post)
{
Gate::authorize('update-post', $post);
$post->update($request->validated());
return redirect()->route('posts.show', $post);
}