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: 121

دليلك الشامل لعمل 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

May 13, 2026 • 1 min read
Reading Count: 5
إزاي تخلي مشروعك بـ Inertia صديق لمحركات البحث عن طريق الـ SSR

إزاي تخلي مشروعك بـ Inertia صديق لمحركات البحث عن طريق الـ SSR أكيد مريت بالموقف ده: بدأت مشروعك بـ...

May 12, 2026 • 1 min read
Reading Count: 7
إدارة الحالة (State Management) في تطبيقات Laravel Inertia.. هل لسه محتاج Redux أو Vuex؟

إدارة الحالة (State Management) في تطبيقات Laravel Inertia.. هل لسه محتاج Redux أو Vuex؟ لو أنت مبرم...

May 12, 2026 • 1 min read
Reading Count: 10
دليل احتراف Laravel مع Inertia و React: بناء تطبيقات Single Page بدون تعقيدات الـ API

دليل احتراف Laravel مع Inertia و React: بناء تطبيقات Single Page بدون تعقيدات الـ API كثير مننا كمبر...