Mohammad Yousef3 نشر 3 أبريل 2021 أرسل تقرير نشر 3 أبريل 2021 أقوم بإنشاء routes مخصصة للادمن, بحيث لا يستطيع المستخدم الدخول إليها إلا إن كان يمتلك صلاحية ادمن وإن حاول المستخدم الوصول إليها يقوم باعادة التوجيه مع خطأ 403 هذا ملف routes الخاص بالبرنامج <!-- Route group --> $router->group(['middleware' => 'auth'], function() { Route::get('dashboard','WelcomeController@index'); <!—جزء الادمن --> if(Auth::check()){ if ( Auth::user()->type == "Admin" ){ //Report Route::get('report','ReportController@index'); Route::get('report/create', array('as'=>'report.create', 'uses'=>'ReportController@create')); Route::post('report/store','ReportController@store'); Route::get('report/{id}', array('before' =>'profile', 'uses'=>'ReportController@show')); Route::get('report/{id}/edit', 'ReportController@edit'); Route::put('report/{id}/update', array('as'=>'report.update', 'uses'=>'ReportController@update')); Route::delete('report/{id}/destroy',array('as'=>'report.destroy', 'uses'=>'ReportController@destroy')); } } }); ولكن لا يعمل ولا يقوم بإعادة التوجيه حيث أريد اقتباس
0 Waleed Alfakiat نشر 3 أبريل 2021 أرسل تقرير نشر 3 أبريل 2021 يمكنك استخدام Middleware يتحقق من صلاحية المستخدم والتحكم بإعادة التوجيه وتطبيقه على routes التي تريدها بدايةً نقوم بإنشاء middleware باسم AdminMiddleware عن طريق الأمر: php artisan make:middleware AdminMiddleware ^^^^^^^^^^^^^^^ اسم ملف middleware وبداخله نقوم بالتحقق من امتلاك المستخدم لصلاحية admin والسماح له بالمرور, وغير ذلك نقوم بإعادة توجيهه إلى الخطأ 403 namespace App\Http\Middleware; use Auth; ... class AdminMiddleware { public function handle($request, Closure $next){ if (Auth::user()->type !== "admin") { // إن كان المستخدم لا غير مصرح له بالدخول abort(403, 'Unauthorized action.'); // توليد الخطأ 403 } return $next($request); // غير ذلك نقوم بالسماح له بالمرور } } ولا ننسى استدعاء use Auth; للوصول لبيانات المستخدم بعد ذلك: نقوم بتسجيل AdminMiddleware ضمن قائمة الـ middleware لنتمكن من استدعائه مباشرة عن طريق الاسم, وذلك في ملف Kernel.php بداخل المسار: app\Http\Kernel.php: نبحث عن $routeMiddleware ونضيف بداخله مسار AdminMiddleware والاسم المستعار الذي سنستخدمه في routes ... protected $routeMiddleware = [ ... 'admin' => 'App\Http\Middleware\AdminMiddleware', ]; ... وبهذا نكون قد سجلنا AdminMiddleware باسم admin ونقوم بتطبيقه على routes المحددة كمجموعة Route::group(['middleware' => ['auth', 'admin']], function() { Route::get('report','ReportController@index'); Route::get('report/create', array('as'=>'report.create', 'uses'=>'ReportController@create')); ... }); 1 اقتباس
0 بلال زيادة نشر 4 أبريل 2021 أرسل تقرير نشر 4 أبريل 2021 توفر لارافل Middlewars لتعطيك قابلية تحكم أكثر في مشروعك فيمكنك من خلال Middlewase تحديد صلاحيات و أدوار الأعضاء و السماح بالتحكم في الصفحات من خلال المشاهدة والتحكم و الحذف والتعديل, فيمكنك إنشاء Middleware باستخدام الأمر التالي php artisan make:middleware IsAdmin فستلاحظ أنه تم إنشاء هذا الملف في المسار التالي app\Http\Middleware\IsAdmin.php فيتم وضع التالي if (Auth::user() && Auth::user()->type !== "admin") { return redirect('home')->with('error','You have not admin access'); } return $next($request); بداخل الملف في دالة handle فيصبح الملف كاملاً بهذا الشكل <?php namespace App\Http\Middleware; use Closure; use Auth; class IsAdmin { /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { if (Auth::user() && Auth::user()->type !== "admin") { return redirect('home')->with('error','You have not admin access'); } return $next($request); } } وفي المسار التالي لملف Kernel.php app\Http\Kernel.php يمكنك في المصفوفة $routeMiddleware وضع مسار ملف Middleware الذي تم إنشاءه بهذه الطريقة 'admin' => \App\Http\Middleware\IsAdmin::class, ويمكنك تحديد المسارات لمسؤولين الموقع وهم Admins عن طريق استخدام هذا Middleware Route::group(['middleware' => ['auth', 'admin']], function() { ... }); اقتباس
السؤال
Mohammad Yousef3
أقوم بإنشاء routes مخصصة للادمن, بحيث لا يستطيع المستخدم الدخول إليها إلا إن كان يمتلك صلاحية ادمن
وإن حاول المستخدم الوصول إليها يقوم باعادة التوجيه مع خطأ 403
هذا ملف routes الخاص بالبرنامج
ولكن لا يعمل ولا يقوم بإعادة التوجيه حيث أريد
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.