في هذا الدرس 6تصفّح المواضيع
لفحص بوابة صلاحية بشكل شرطي داخل دالة المتحكم، استدعِ دالة Gate::allows أو Gate::denies ومرر اسم الصلاحية مع النموذج المستهدف. لا تحتاج لتمرير كائن المستخدم الحالي يدوياً؛ إذ يتولى Laravel جلبه وحقنه في البوابة تلقائياً.
- فحص السماح (Gate::allows): تعيد القيمة true إذا كان المستخدم الحالي يمتلك الصلاحية المطلوبة.
- فحص المنع (Gate::denies): تعيد القيمة true إذا كان المستخدم الحالي ممنوعاً من تنفيذ الإجراء.
- الفحص لمستخدم آخر (Gate::forUser): تتيح فحص الصلاحية لحساب مستخدم معين غير المستخدم النشط في الجلسة.
if (Gate::denies('update-post', $post)) {
abort(403, 'You do not own this post.');
}
$post->update($request->validated());
عندما تحتاج لتوضيح سبب رفض الإجراء للمستخدم، أعد كائناً من واجهة Response داخل البوابة باستخدام Response::allow أو Response::deny مع رسالة مخصصة. كما يمكنك تسجيل خطاف Gate::before لمنح المدير العام صلاحية شاملة قبل فحص البوابات الفردية.
- رسالة رفض مخصصة (Response::deny): تمرر رسالة توضيحية دقيقة تظهر في صفحة الخطأ أو عبر دالة inspect.
- إخفاء السجل بـ 404 (denyWithStatus): تتيح إرجاع 404 بدلاً من 403 لإخفاء وجود السجلات الخاصة تماماً.
- تجاوز المدير العام (Gate::before): ينفذ قبل كل البوابات؛ فإذا أعاد true يمنح الصلاحية فوراً وإذا أعاد null يكمل الفحص.
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.'
});
ملخص الدرس
حصاد الدرسمراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي
ماذا تعلّمت في هذا الدرس؟
أتقنت في هذا الدرس حول «تفويض الصلاحيات وبوابات التحكم بالوصول Gates في Laravel» مفاهيم الفرق بين المصادقة وتفويض الصلاحيات، وتعريف بوابات الصلاحيات Gate Define، وفحص البوابات بدالة Gate Allows وفق معايير Laravel 12 الحديثة.
الخطوة التالية والدرس القادم
انتقل الآن إلى الدرس التالي «إنشاء وتسجيل سياسات النماذج Policies في Laravel» للبناء التراكمي على ما تعلمته.
سجّل الدخول لحفظ تقدمك
تابع إنجاز المواضيع والمصطلحات والمهام، وكمّل من آخر خطوة على أي جهاز.
المصطلحات4
راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.
- 01 Access Gates بوابات الصلاحيات
- التمييز الدقيق بين المصادقة والتفويض وتعريف بوابات الصلاحيات البرمجية عبر Gate::define وفحصها بـ allows و authorize.
- للمراجعة
- 02 Authentication Versus Authorization الفرق بين المصادقة وتفويض الصلاحيات
- المفهوم الهندسي والتطبيق العملي المباشر لقسم الفرق بين المصادقة وتفويض الصلاحيات في إطار العمل Laravel 12.
- للمراجعة
- 03 Defining Closure Authorization Gates تعريف بوابات الصلاحيات Gate Define
- المفهوم الهندسي والتطبيق العملي المباشر لقسم تعريف بوابات الصلاحيات Gate Define في إطار العمل Laravel 12.
- للمراجعة
- 04 Checking Gates With Allows Denies فحص البوابات بدالة Gate Allows
- المفهوم الهندسي والتطبيق العملي المباشر لقسم فحص البوابات بدالة Gate Allows في إطار العمل Laravel 12.
- للمراجعة
لا توجد بطاقات تطابق البحث والتصفية.
اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.
الاختصارات4
راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.
- 01 MVC MVC
- Model View Controller
- النمط المعماري الذي يفصل بين نماذج البيانات Models، وطبقات العرض Views، والمتحكمات Controllers في Laravel.
- للمراجعة
- 02 CLI CLI
- Command Line Interface
- واجهة سطر الأوامر التي تعمل عبر أداة php artisan لتوليد الملفات وإدارة التطبيق.
- للمراجعة
- 03 HTTP HTTP
- Hypertext Transfer Protocol
- بروتوكول نقل النص الفائق الذي ينظم طلبات المتصفح واستجابات خادم Laravel.
- للمراجعة
- 04 PSR PSR
- PHP Standards Recommendations
- المعايير القياسية للغة PHP مثل التحميل التلقائي PSR-4 التي يلتزم بها إطار العمل Laravel.
- للمراجعة
لا توجد بطاقات تطابق البحث والتصفية.
اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.
مهامك قبل الاختبار
خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.
-
اكتب ونفّذ المثال البرمجي المشروح في قسم «الفرق بين المصادقة وتفويض الصلاحيات» داخل مشروع Laravel 12 المحلي وتحقق من النتيجة.
-
بدّل بين الحالات الثلاث في المحاكي التفاعلي ضمن قسم «تعريف بوابات الصلاحيات Gate Define» وقارن مخرجات التنفيذ.
تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.
اختبر فهمك.
ووصلها للإتقان.
كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.
أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.
الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.
لمحة عن التحدي8 أسئلة تنتظرك +
ما الهدف الهندسي الأساسي من الفرق بين المصادقة وتفويض الصلاحيات في إطار العمل Laravel 12؟
يسهم الفرق بين المصادقة وتفويض الصلاحيات في تنظيم منطق التطبيق بأسلوب معياري آمن وقابل للصيانة في Laravel 12.
يساعد الالتزام باصطلاحات Laravel 12 الرسمية في قسم «تعريف بوابات الصلاحيات Gate Define» على رفع جودة الكود وسهولة اختباره آلياً.
صواب؛ الالتزام بالمعايير القياسية في Laravel 12 يجعل الكود واضحاً وسهل الفحص والصيانة.
أي آلية في Laravel 12 تتولى إدارة فحص البوابات بدالة Gate Allows بشكل مباشر ومنظم؟
توفر طبقة إطار العمل وحاوية الخدمات في Laravel 12 الأدوات القياسية لإدارة فحص البوابات بدالة Gate Allows.
لماذا يُعد تطبيق إلزام الصلاحية عبر Gate Authorize مهماً عند بناء تطبيقات Laravel 12 جاهزة للإنتاج؟
لأنه يمنع الأخطاء البرمجية الخفية ويوحد سلوك التطبيق بين بيئتي التطوير والإنتاج.
في Laravel 12، يُنصح بكتابة مفاتيح الإنتاج السرية مباشرة داخل ملفات الكود المصدري المرفوعة إلى Git بدلاً من ملفات البيئة.
خطأ؛ يجب حفظ المفاتيح والبيانات السرية في متغيرات البيئة وعدم رفعها أبداً إلى مستودع Git.
ما المزايا الهندسية التي يحققها تطبيق ردود البوابة المخصصة وصلاحية المدير في Laravel 12؟ (اختر كل ما ينطبق)
يوفر فصلاً واضحاً للمسؤوليات، وأماناً أعلى أثناء التنفيذ، وتعاوناً أسهل بين أفراد الفريق.
يوظف إطار العمل Laravel 12 ميزات PHP 8 الحديثة مثل تحديد أنواع القيم المرجعة لجعل الكود أكثر وضوحاً وأماناً.
صواب؛ يعتمد Laravel 12 بشكل كامل على الصياغة الحديثة للغة PHP 8.2+ وسلامة الأنواع.
ما الفرق الجوهري بين معيار Laravel 12 الحديث والملفات اليدوية التقليدية في ملخص بوابات التحكم بالوصول Gates؟
يوفر Laravel 12 واجهات قياسية موحدة وحماية مدمجة تغني عن الكود اليدوي المعرض للأخطاء.