المدونة مدونة المهندس محمد خطيب

Laravel Policy: تعزيز الأمان والتحكم في الوصول في تطبيقات لارافيل

laravel-policy-taazyz-alaman-oalthkm-fy-alosol-fy-ttbykat-larafyl

تعد سياسات Laravel (Laravel Policy) أحد الميزات الرائعة المتوفرة في إطار العمل Laravel. تهدف هذه السياسات إلى تسهيل وتبسيط عملية التحكم في صلاحيات الوصول وتطبيق قواعد الأمان في تطبيقات Laravel. تعد سياسات Laravel حلاً ممتازًا لتنفيذ تفويض وتوجيه المستخدمين إلى الإجراءات والموارد المناسبة وفقًا لصلاحياتهم.

ستوضح هذه المقالة مفهوم Laravel Policies وكيفية تعريفها وتنفيذها، بالإضافة إلى تقديم مثال تطبيقي يوضح استخدام Laravel Policies في سيناريو واقعي.

فرضًا أن لدينا تطبيق ويب لإدارة المقالات، ونرغب في تنفيذ سياسة تسمح للمستخدمين المسجلين فقط بتحرير المقالات الخاصة بهم. يمكننا استخدام Laravel Policy لتحقيق ذلك بسهولة.

أولاً، سنقوم بإنشاء سياسة جديدة باستخدام الأمر التالي: 

php artisan make:policy ArticlePolicy --model=Article

سيتم إنشاء ملف سياسة جديد بالاسم "ArticlePolicy". سنقوم بتحديث هذا الملف لتنفيذ قاعدة السياسة الخاصة بنا. داخل الوظيفة "update" في الملف "ArticlePolicy"، يمكننا التحقق مما إذا كان المستخدم المقدم لديه صلاحية لتحرير المقالة أم لا.
 

public function update(User $user, Article $article)
{
    return $user->id === $article->user_id;
}

في هذا المثال، نتحقق من أن معرف المستخدم يطابق معرف المستخدم المرتبط بالمقالة. إذا كان الشرط صحيحًا، فسيتمكن المستخدم من تحرير المقالة،

وإلا فسيتم منعه.

بعد تعريف السياسة، يمكننا استخدامها في وحدة التحكم (Controller) الخاصة بتحرير المقالات. يمكننا تحقيق ذلك عن طريق استيراد السياسة واستخدامها في وظيفة التحرير المناسبة:

use App\Policies\ArticlePolicy;

public function edit(Article $article)
{
    $this->authorize('update', $article);
    
    // تنفيذ عملية تحرير المقالة
}

 

مع استخدام الدالة "$this->authorize()"، يتم فحص صلاحيات المستخدم وتنفيذ السياسة المحددة. إذا فشل المستخدم في اجتياز الفحص، فسيتم إرجاع استثناء يمكننا التعامل معه بشكل مناسب (مثلاً، عرض رسالة خطأ للمستخدم).

بهذه الطريقة، يمكننا استخدام Laravel Policy لتنفيذ سياسات مختلفة لحماية تطبيقات الويب الخاصة بنا. سياسات Laravel توفر إطارًا قويًا لإدارة الصلاحيات وحماية البيانات، مما يسهم في تحسين أمان تطبيقات الويب بشكل كبير.