البرمجة

تمرير متعدد للمعلمات في وسيط Middleware Laravel 5.2

في Laravel 5.2، عندما ترغب في تمرير متعدد من المعلمات إلى وسيط Middleware مع شرط OR، يمكنك القيام بذلك بطريقة معينة. في البداية، يجب عليك تعديل محور المسار Route ليكون أكثر تفصيلًا لتضمين جميع الحالات الممكنة للأدوار التي يجب أن تمر بها الطلبات. بدلاً من استخدام مصفوفة من السلاسل كما فعلت، يمكنك تمرير واحدة من خلال فصل الأدوار بفاصلة أو أي حرف آخر يمكنك استخدامه كفاصلة.

للقيام بذلك، قم بتعديل محور المسار Route كما يلي:

php
Route::group(['middleware' => ['role_check:Normal_User,Admin']], function() { Route::get('/user/{user_id}', array('uses' => 'UserController@showUserDashboard', 'as' => 'showUserDashboard')); });

تمرير الأدوار بفاصلة بينها يسمح للوسيط بفهم أن أي من الأدوار المحددة يمكن أن يمر بها الطلب. بعد ذلك، يجب تعديل وسيط Middleware نفسه ليتمكن من فهم ومعالجة الأدوار المتعددة بدلاً من التحقق فقط من واحد.

في وسيطك Middleware، يمكنك تعديله ليتعامل مع الأدوار المتعددة كما يلي:

php
public function handle($request, Closure $next, $roles) { $roles = explode(',', $roles); // تحويل السلسلة إلى مصفوفة من الأدوار $authorized = false; foreach ($roles as $role) { if ($role == Auth::user()->user_role->role) { $authorized = true; break; } } if (!$authorized) { if ($request->ajax() || $request->wantsJson()) { return response('Unauthorized.', 401); } else { return response('Unauthorized.', 401); } } return $next($request); }

في هذا التغيير، تم تحويل المعامل $role إلى متغير $roles المستخدم لتمثيل مجموعة من الأدوار. ثم يتم تحليل هذه السلسلة لفصل الأدوار باستخدام الفواصل، ومن ثم يتم التحقق من أن أي من هذه الأدوار مطابق لدور المستخدم الحالي. إذا كان أي منها مطابقًا، يتم تعيين $authorized إلى true ويتم السماح بالمرور. في حالة عدم وجود أي تطابق، يتم إرجاع رسالة غير مصرح بها.

باستخدام هذا النهج، يمكنك الآن تمرير أدوار متعددة إلى وسيط Middleware باستخدام شرط OR، مما يتيح للمستخدمين بأي من هذه الأدوار الوصول إلى المسار.

المزيد من المعلومات

بالطبع، سأقدم المزيد من المعلومات حول كيفية تمرير المعلمات المتعددة وتطبيق شرط OR في وسيط Middleware في Laravel 5.2.

  1. تمرير المعلمات المتعددة:
    في Laravel، يمكنك تمرير معلمات إلى وسيط Middleware من خلال محور المسار Route. في مثالنا، قمنا بتمرير معلمتين: أولهما هو الوسيط الذي يحتاجه المسار (في حالتنا، ‘role_check’) والثانية هي المعاملات التي تريد تمريرها إلى الوسيط (‘Normal_User,Admin’).

  2. تفسير المعلمات في وسيط Middleware:
    في وسيط Middleware، نحن نستقبل المعاملات باستخدام الدالة handle. في مثالنا، تم استقبال المعاملات باسم $roles. ثم قمنا بتقسيم السلسلة إلى مصفوفة باستخدام الدالة explode()، حيث أن كل قيمة تفصل بواسطة فاصلة.

  3. التحقق من الصلاحيات:
    بعد ذلك، قمنا بتكرار المصفوفة المحتوية على الأدوار التي تم تمريرها والتحقق مما إذا كانت إحدى الأدوار تتطابق مع دور المستخدم الحالي. إذا كان هناك تطابق، يتم تعيين متغير $authorized إلى true، وإلا فإنه يظل false.

  4. رد الطلب:
    إذا لم يكن المستخدم مصرحًا، فإننا نقوم بإرجاع استجابة غير مصرح بها برمز الاستجابة 401 “Unauthorized”، والذي يمكن أن يكون مناسبًا للطلبات الـ Ajax أو JSON أو حتى الاستجابات العادية.

  5. استخدام شرط OR:
    عند استخدام فاصلة لتمرير الأدوار، فإن ذلك يعني أن المستخدم يمكن أن يكون أيًا من الأدوار المحددة، وليس ضروريًا أن يكون في كل الأدوار المعينة. هذا يتيح لك استخدام شرط OR بين الأدوار المختلفة.

باستخدام هذه الطريقة، يمكنك بسهولة تنفيذ شرط OR في وسيط Middleware في Laravel 5.2، مما يتيح لك إدارة الصلاحيات بشكل مرن وفعال.

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر