Как в Laravel использовать «нельзя» в группе Route::middleware?

У меня есть собственные ворота Laravel, определенные "isAdmin" и "isManager". Промежуточное ПО "auth" просто означает, что пользователь вошел в систему. Мои маршруты выглядят следующим образом (значительно упрощено):

      Route::middleware(['auth', 'can:isAdmin'])->group(
    function () {
        Route::get('/', function() { return response("Admin home"); });
    }
);

Route::middleware(['auth', 'can:isManager'])->group(
    function () {
        Route::get('/', function() { return response("Manager home"); });
    }
);

Но что мне делать для маршрута для вошедшего в систему пользователя, который не является ни администратором, ни менеджером? Я бы хотел это сделать:

      Route::middleware(['auth', 'cannot:isManager', 'cannot:isAdmin'])->group(
    function () {
        Route::get('/', function() { return response("Who are you, anyway?"); });
    }
);

У кого-нибудь есть идеи? Спасибо.

1 ответ

вы можете установить новое правило (гейт) как notAdminAndManager в app/Providers/AuthServiceProvider.php для метода загрузки, вот пример

      Gate::define('isNotAdminAndManager', function (User $user) {
    return (! in_array($);
});
Другие вопросы по тегам