I'm always excited to take on new projects and collaborate with innovative minds.

Phone

+20 115 052 9992

Website

https://ibrahimahmed.online/

Social Links

دليلك الشامل لعمل Middleware مخصص في لارافيل Laravel Middleware

دليلك الشامل لعمل Middleware مخصص في لارافيل Laravel Middleware بص يا سيدي، أكيد وأنت بتبني أي مشروع ويب باستخدام إطار العمل لارافيل (Laravel)، عدت عليك لحظة لق

دليلك الشامل لعمل Middleware مخصص في لارافيل Laravel Middleware
Reading Count: 98

دليلك الشامل لعمل Middleware مخصص في لارافيل Laravel Middleware

بص يا سيدي، أكيد وأنت بتبني أي مشروع ويب باستخدام إطار العمل لارافيل (Laravel)، عدت عليك لحظة لقيت نفسك بتقول: "يا ريت كان فيه طريقة أتحكم بيها في الطلبات (Requests) قبل ما توصل للـ Controller". مثلاً عايز تتأكد إن اليوزر مسجل دخول، أو إن عنده صلاحية معينة (Authorization)، أو حتى بتفلتر طلبات جاية من مناطق جغرافية معينة. هنا بيجي دور الـ Middleware، اللي هو يعتبر "حارس البوابة" بتاع تطبيقك.

في المقال ده، هناخد الموضوع من الصفر لحد ما تبقى بروفيشنال في التعامل مع الـ Middleware، ونفهم إزاي نخصصه (Custom Middleware) عشان يناسب احتياجات مشروعنا.

يعني إيه Middleware أصلاً؟

ببساطة، الـ Middleware هو طبقة وسيطة بتترمي بين الطلب (HTTP Request) اللي بييجي من البراوزر، وبين الـ Route أو الـ Controller اللي بيعالج الطلب ده. هو عبارة عن كود بيشتغل قبل أو بعد تنفيذ الـ Request. فلو الشرط اللي حاطه في الـ Middleware متحققش، بنوقف الطلب وبنعمل له Redirect، ولو اتحقق، بنعدي الطلب يكمل طريقه عادي.

الخطوة الأولى: إنشاء الـ Middleware

لارافيل بيسهل علينا الدنيا جداً باستخدام الـ Artisan CLI. عشان تعمل Middleware جديد، افتح التيرمينال (Terminal) واكتب الأمر ده:

php artisan make:middleware CheckUserRole

بعد ما تنفذ الأمر ده، هتلاقي ملف جديد اتكريت عندك في المسار app/Http/Middleware. ده المكان اللي هنكتب فيه المنطق (Logic) بتاعنا.

كتابة منطق التحقق داخل الـ Middleware

دلوقتي افتح الملف اللي اتكريت، هتلاقي دالة (Method) اسمها handle. دي القلب بتاع الـ Middleware. خلينا نفترض إننا عايزين نتأكد إن اليوزر ده "أدمن" (Admin) قبل ما يدخل على صفحة الداشبورد:

public function handle($request, Closure $next, $role){ if ($request->user() && $request->user()->role !== $role) { return redirect('/home')->with('error', 'معندكش صلاحية دخول!'); } return $next($request);}

هنا إحنا بنقول للـ Middleware: لو اليوزر مش واخد الرول اللي أنا باعتها، طلعه بره على صفحة الهوم، غير كده كمل الطريق عادي باستخدام $next($request).

الخطوة الثالثة: تسجيل الـ Middleware

عشان لارافيل يعرف إن فيه Middleware جديد، لازم نسجله في ملف bootstrap/app.php (في الإصدارات الحديثة من لارافيل 11). بتضيفه في جزء الـ withMiddleware زي كده:

->withMiddleware(function (Middleware $middleware) { $middleware->alias([ 'role' => \App\Http\Middleware\CheckUserRole::class, ]);})

الخطوة الرابعة: استخدام الـ Middleware في الـ Routes

دلوقتي جه وقت الاستخدام. تقدر تحط الـ Middleware بتاعك على أي Route أو مجموعة Routes (Route Group) بكل سهولة:

Route::get('/admin/dashboard', function () { // كود الداشبورد هنا})->middleware('role:admin');

لاحظ إني مررت الـ admin كباراميتر (Parameter) للـ Middleware، ودي مرونة كبيرة جداً بتخليك تستخدم نفس الكود لأدوار مختلفة (محرر، كاتب، أدمن).

نصيحة من أخ لمبرمج

يا بطل، الـ Middleware أداة قوية جداً، بس متزودش فيها كتير من غير داعي. حاول دايماً تخلي الكود جوه الـ Middleware بسيط (Clean Code)، لأن أي تعقيد هنا هيأثر على سرعة استجابة التطبيق بتاعك (Performance). ودايماً جرب الـ Middleware بتاعك في حالات الـ Edge Cases عشان تتأكد إن مفيش ثغرات أمنية (Security Vulnerabilities) ممكن تعدي منك.

اتعلم تقرأ الـ Documentation الرسمي للارافيل، وجرب بايدك، لأن المبرمج الشاطر هو اللي بيغلط وبيصلح لنفسه. بالتوفيق في مشروعك الجاي!


Share

Related posts

Apr 20, 2026 • 1 min read
Reading Count: 122
ازاي تسرع تطبيقات لاراڤل (Laravel) وتطير الـ API بتاعك باستخدام Laravel Octane

ازاي تسرع تطبيقات لاراڤل (Laravel) وتطير الـ API بتاعك باستخدام Laravel Octane بتبرمج تطبيق لاراڤل (...

Apr 20, 2026 • 1 min read
Reading Count: 105
إزاي تظبط الـ Queues والـ Background Jobs في Laravel وتريح سيرفرك؟

إزاي تظبط الـ Queues والـ Background Jobs في Laravel وتريح سيرفرك؟ أكيد مريت بالموقف ده: العميل بيطل...

Apr 20, 2026 • 1 min read
Reading Count: 376
إيه هو الـ Service Container في لارافيل (Laravel)؟ خلينا نشرب قهوة ونفهم الحكاية

إيه هو الـ Service Container في لارافيل (Laravel)؟ خلينا نشرب قهوة ونفهم الحكاية أهلاً بيك يا صديقي...