Вкратце, что нам нужно сделать для реализации Доверьте пакет Laravel для разрешения на основе роли, как показано ниже.
Установите пакет в соответствии с инструкциями, приведенными в https://github.com/Zizaco/entrust
В конце концов, сделано с вышеупомянутым пакетом (GitHub), как создание таблицы базы данных, Middleware, контроллеры и все.
При входе пользователя в систему, существует массив, предоставляемый Auth, который содержит все действия, которые пользователь может (действия, зарегистрированные в журнале пользователя).
Предположим, что у нас есть контроллер, называемый CategoryController, как показано ниже.
class CategoryController extends Controller
{
public function __construct()
{
$this->middleware('permission:category_index', ['only' => ['index']]);
$this->middleware('permission:category_create', ['only' => ['create', 'store']]);
$this->middleware('permission:category_edit', ['only' => ['edit', 'update']]);
$this->middleware('permission:category_delete', ['only' => ['delete']]);
$this->middleware('permission:category_view', ['only' => ['show']]);
}
}
Мы, как правило, 5 действий в контроллере, если у нас есть один маршрут (называемый также маршрут ресурсов) в нашем файле маршрутизаторы/web.php для всех CRUD действия одного контроллера.
В этом примере предположим, что у нас есть все эти 5 методов. Таким образом, у нас есть запись в разрешении на них в таблице разрешений .. как у меня есть
Разрешение Таблица
id display_name name
5 Delete Category category_delete
4 Edit Category category_edit
3 Create Category category_create
2 List Category category_index
Нам просто нужно добавить эти имена разрешений в контроллерах, как я сделал в CategoryController , Если вы используете hyphon в имени разрешения таблицы подана, а затем использовать как
$this->middleware('permission:category-create', ['only' => ['create', 'store']]);
Записать все разрешения в конструкторе контроллера.
это 'it !!
Он автоматически проверяет введенную пользователем возможность и согласно записи базы данных в разрешении_роли (таблица отношений роли и разрешения), она либо покажет страницу, либо доступ запрещен для этого пользователя.
Надеюсь, это сработает !!