Маршрут Laravel не работает при использовании двух промежуточных программ - PullRequest
0 голосов
/ 28 сентября 2018

в моем приложении есть три маршрута, к которым могут обращаться admin и superadmin Middleware, но эти маршруты работают только в одном Middleware, т.е. superadmin Middleware.

Thisмой файл маршрутов, что я делаю не так здесь

// Admin Routes  
Route::middleware(['admin'])->group(function () {
    Route::get('admin', 'AdminController@index');
    Route::get('admin/members', 'AdminController@members');
    Route::get('admin/members/all', 'AdminController@membersAll');
    Route::get('admin/members/unpaid', 'AdminController@membersUnpaid');
    Route::post('admin/members/all', 'AdminController@membersAllAjax');
    Route::get('admin/member/detail/{id}', 'AdminController@memberDetails')
            ->name('memberdetails');

    Route::get('admin/member/remove/{id}', 'AdminController@memberRemove');
    Route::get('admin/member/block/{id}', 'AdminController@memberBlock');
    Route::get('admin/member/unblock/{id}', 'AdminController@memberunBlock');

    Route::post('admin/member/ajax', 'AdminController@memberunAjax');
    Route::get('admin/member/add', 'AdminController@addMember');
    Route::post('admin/member/add', 'AdminController@addMemberDB');

    Route::post('admin/send/message/all', 'AdminController@sendMessageAll');
    Route::post('admin/send/message/single','AdminController@sendMessageSingle');

    Route::post('admin/update/invoice', 'AdminController@updateInvoice');

    Route::post('admin/user/to/member', 'AdminController@addUserMemberDB');

    Route::get('admin/activities', 'AdminController@activities');
    Route::post('admin/activities', 'AdminController@activitiesAdd');

    Route::get('admin/donation', 'AdminController@donation');

    Route::post('admin/edit/user/profile', 'AdminController@editUser');
});

// Admin and SubAdmin Routes
Route::middleware(['superadmin'])->group(function () {
    Route::get('admin/members/all', 'AdminController@membersAll');
    Route::post('admin/members/all', 'AdminController@membersAllAjax');
    Route::get('admin/member/detail/{id}', 'AdminController@memberDetails')
            ->name('memberdetails');
    Route::get('subAdmin', 'SuperAdminController@index');
});

Ответы [ 2 ]

0 голосов
/ 28 сентября 2018

Перепишите ваши маршруты, используя Route::group

Route::group(['prefix' => 'admin', 'middleware' => 'admin'], function () {

    Route::get('/', 'AdminController@index');

    Route::group(['prefix' => 'member'], function () {
        Route::get('remove/{id}', 'AdminController@memberRemove');
        Route::get('block/{id}', 'AdminController@memberBlock');
        Route::get('unblock/{id}', 'AdminController@memberunBlock');

        Route::post('admin/member/ajax', 'AdminController@memberunAjax');
        Route::get('admin/member/add', 'AdminController@addMember');
        Route::post('admin/member/add', 'AdminController@addMemberDB');

        Route::group(['middleware' => 'superadmin'], function () {
            Route::get('detail/{id}', 'AdminController@memberDetails')
                    ->name('memberdetails');
        });
    });

    Route::group(['prefix' => 'members'], function () {
        Route::get('/', 'AdminController@members');

        Route::get('unpaid', 'AdminController@membersUnpaid');
        Route::get('detail/{id}', 'AdminController@memberDetails')
                ->name('memberdetails');

        Route::group(['middleware' => 'superadmin'], function () {
            Route::get('all', 'AdminController@membersAll');
            Route::post('all', 'AdminController@membersAllAjax');
        });
    });

    Route::group(['prefix' => 'send/message'], function () {
        Route::post('all', 'AdminController@sendMessageAll');
        Route::post('single','AdminController@sendMessageSingle');
    });

    Route::group(['prefix' => 'activities'], function () {  
        Route::get('/', 'AdminController@activities');
        Route::post('/', 'AdminController@activitiesAdd');
    });

    Route::post('update/invoice', 'AdminController@updateInvoice');

    Route::post('user/to/member', 'AdminController@addUserMemberDB');

    Route::get('donation', 'AdminController@donation');

    Route::post('edit/user/profile', 'AdminController@editUser');
});
0 голосов
/ 28 сентября 2018

вторая конфигурация маршрута Route::get('admin/members/all'), для которой требуется проверка superadmin промежуточного программного обеспечения, перезаписывается первое, которое необходимо только для admin промежуточного программного обеспечения.

, если вы пытаетесь получить доступ к этому маршруту с помощью superadmin привилегия, это будет работать.

сейчас, если вы хотите, чтобы оба admin && superadmin получили к нему доступ, поместите только одну конфигурацию в группу промежуточного программного обеспечения admin, если superadmin также удовлетворяет этому..

// Admin and SuperAdmin Routes
Route::group(['middleware' => ['admin']], function() {
    Route::get('admin', 'AdminController@index');
    Route::get('admin/members', 'AdminController@members');
}

//only SuperAdmin Routes
Route::group(['middleware' => ['superadmin']], function() {
    Route::get('admin/members/all', 'AdminController@membersAll');
}

в противном случае создайте другое промежуточное ПО adminAndSuperAdmin для этих маршрутов.

// Admin only Routes  
Route::group(['middleware' => ['admin']], function() {
    Route::get('admin', 'AdminController@index');
}

//superAdmin only Routes
Route::group(['middleware' => ['superadmin']], function() {
    Route::get('subAdmin', 'SuperAdminController@index');
});

//Admin and SuperAdmin Routes
Route::group(['middleware' => ['adminAndSuperAdmin']], function() {
    Route::get('admin/members', 'AdminController@members');
    Route::get('admin/members/all', 'AdminController@membersAll');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...