@morteza14
خب شما میدلور رو داخل روت های تکی ثبت کردید و الان داری روی گروهی از روت ها امتحان میکنی .
اول میدلور رو فقط روی یه روت تکی تست کن اگر مشکلی نبود بعد داخل kernel بخش group ثبتش کن و بعد به همین صورتی ک نوشتی استفاده کن ، الان اون میدولر رو از گروه بردار و فقط روی یه روت بزار
<?php
namespace App\Http\Middleware;
use Closure;
class CheckRole
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if (auth()->check() && auth()->user()->role == 1) {
return $next($request);
}
return redirect(route('home'));
}
}
@morteza14
و این میدلور خودتون رو ثبت کردید داخل اپلیکیشن؟
داخل فایل kernel.php لیست میدلور های برنامه هست ، با توجه به این ک اون میدلور میخواد کجا اجرا بشه باید ثبتش کنید مثلا روی روت ها باید اجرا بشه داخل بخش protected $routeMiddleware اضافش کنید
همینطور که فرشید گفت شما باید Middlewareرو به kernel.php معرفی کنید که بتونید ازش استفاده کنید.اگر بازم موفق نشدید یه نگاه به این لینک بندازید
https://laravel.com/docs/8.x/middleware#global-middleware
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class,
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
'checkrole' => \App\http\Middleware\CheckRole::class,
];
use App\Http\Controllers;
use App\http\Middleware\CheckRole;
use Illuminate\Support\Facades\Auth;
Auth::routes();
Auth::routes(['verify' => 'true']);
Route::get('/', 'front\HomeController@index')->name('home');
Route::prefix('admin')->middleware(CheckRole::class)->group(function () {
Route::get('/', 'back\AdminController@index')->name('admin.index');
Route::get('/users', 'back\UserController@index')->name('admin.users');
Route::get('/profile/{user}', 'back\UserController@edit')->name('admin.profile');
Route::post('/profileupdate/{user}', 'back\UserController@update')->name('admin.profileupdate');
Route::get('/users/delete/{user}', 'back\UserController@destroy')->name('admin.user.delete');
Route::get('/users/status/{user}', 'back\UserController@updatestatus')->name('admin.user.status');
});
@morteza14
خب شما میدلور رو داخل روت های تکی ثبت کردید و الان داری روی گروهی از روت ها امتحان میکنی .
اول میدلور رو فقط روی یه روت تکی تست کن اگر مشکلی نبود بعد داخل kernel بخش group ثبتش کن و بعد به همین صورتی ک نوشتی استفاده کن ، الان اون میدولر رو از گروه بردار و فقط روی یه روت بزار
فقط یه مشکل پیش میاد اینه که صفحه اصلی نمایش داده نمیشه
@eniack
This page isn’t workingmorteza14.ir redirected you too many times.
Try clearing your cookies.
ERR_TOO_MANY_REDIRECTS
این خطارو میده
اینم روت صفحه اصلی
Route::get('/', 'front\HomeController@index')->name('home');
Auth::routes();
Auth::routes(['verify' => 'true']);
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟