Morteza14
3 سال پیش توسط Morteza14 مطرح شد
10 پاسخ

Target class CheckRole does not exist


ثبت پرسش جدید
فرشید مرادی
تخصص : noob
@eniack 3 سال پیش آپدیت شد
0

@morteza14
خب شما میدلور رو داخل روت های تکی ثبت کردید و الان داری روی گروهی از روت ها امتحان میکنی .
اول میدلور رو فقط روی یه روت تکی تست کن اگر مشکلی نبود بعد داخل kernel بخش group ثبتش کن و بعد به همین صورتی ک نوشتی استفاده کن ، الان اون میدولر رو از گروه بردار و فقط روی یه روت بزار


Morteza Khodarahmi
تخصص : Backend Developer
@mrkhodarahmii 3 سال پیش مطرح شد
0

سورس checkrole رو قرار بدین لطفا


فرشید مرادی
تخصص : noob
@eniack 3 سال پیش آپدیت شد
0

@morteza14
سلام ، یا شما اسم مدل رو اشتباه نوشتید یا این مدل رو نساختید


Morteza14
تخصص : برنامه نویس لاراول
@morteza14 3 سال پیش مطرح شد
0

من مدل نساختم
middleware ساختم
@eniack


Morteza14
تخصص : برنامه نویس لاراول
@morteza14 3 سال پیش آپدیت شد
0

<?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'));
    }
}

@mrkhodarahmii


فرشید مرادی
تخصص : noob
@eniack 3 سال پیش آپدیت شد
1

@morteza14
و این میدلور خودتون رو ثبت کردید داخل اپلیکیشن؟
داخل فایل kernel.php لیست میدلور های برنامه هست ، با توجه به این ک اون میدلور میخواد کجا اجرا بشه باید ثبتش کنید مثلا روی روت ها باید اجرا بشه داخل بخش protected $routeMiddleware اضافش کنید


Morteza Khodarahmi
تخصص : Backend Developer
@mrkhodarahmii 3 سال پیش مطرح شد
0

همینطور که فرشید گفت شما باید Middlewareرو به kernel.php معرفی کنید که بتونید ازش استفاده کنید.اگر بازم موفق نشدید یه نگاه به این لینک بندازید
https://laravel.com/docs/8.x/middleware#global-middleware


Morteza14
تخصص : برنامه نویس لاراول
@morteza14 3 سال پیش آپدیت شد
0
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');
});

@eniack
@ali.bayat
@hesammousavi


فرشید مرادی
تخصص : noob
@eniack 3 سال پیش آپدیت شد
0

@morteza14
خب شما میدلور رو داخل روت های تکی ثبت کردید و الان داری روی گروهی از روت ها امتحان میکنی .
اول میدلور رو فقط روی یه روت تکی تست کن اگر مشکلی نبود بعد داخل kernel بخش group ثبتش کن و بعد به همین صورتی ک نوشتی استفاده کن ، الان اون میدولر رو از گروه بردار و فقط روی یه روت بزار


moha li
تخصص : توسعه دهنده لاراول و Vue
@mohaligateway 3 سال پیش مطرح شد
0

اگه کلاس رو به صورت دستی ساختید با یه بار دستور
Composer dump-autoload رو وارد کنید


Morteza14
تخصص : برنامه نویس لاراول
@morteza14 3 سال پیش مطرح شد
0

فقط یه مشکل پیش میاد اینه که صفحه اصلی نمایش داده نمیشه
@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']);

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام