Пользователи laravel с несколькими ролями, имеющие несколько разрешений
Я хочу создать систему RBAC в laravel, где пользователь может принадлежать к нескольким ролям, и каждая роль может иметь несколько разрешений. Промежуточное программное обеспечение должно проверить, есть ли у пользователя определенное разрешение (в рамках любой из его ролей), прежде чем оно продолжит выполнение запроса.
Я могу реализовать случай, когда
- Пользователь принадлежит к одной роли, которая имеет много разрешений
- Пользователь принадлежит к нескольким ролям, которые используются для определения контроля доступа (без бита разрешений)
Мне нужно реализовать пользователя с несколькими ролями, имеющими несколько разрешений. Есть указатели?
2 ответа
Если вы не заинтересованы в написании этого кода самостоятельно, такой пакет, как разрешения Laravel, будет делать именно то, что вы хотите.
https://github.com/spatie/laravel-permission
В противном случае вам нужно создать сводные таблицы между пользователями и их ролями, ролями и их разрешениями.
Таким образом, у вас будет таблица user_roles, которая будет состоять из user_id и role_I'd.
У вас также будет таблица role_permissions, в которой будут значения role_id и license_id.
Это позволит вам иметь отношения многие ко многим и многие из них, чтобы напрямую переходить от пользователя к роли и роли к пользователю.
надеюсь, это поможет
В качестве обзора. Вам нужно иметь roles
таблица в вашей базе данных, которая определяет различные типы пользователей, которые может иметь ваше приложение, например, (администратор, автор, редактор, модератор и т. д.)
Вам также нужно определить таблицу role_user
который содержит данные о том, какую роль пользователь имеет. Это будет отношение "многие ко многим", поскольку пользователь может иметь несколько ролей.
Далее вам нужно определить промежуточное ПО CheckRole
который в основном проверяет, играет ли пользователь определенную роль. Вы можете использовать это промежуточное ПО в разных частях вашего приложения для ограничения аутентификации.
Вы можете найти этот урок полезным:
https://www.5balloons.info/user-role-based-authentication-and-access-control-in-laravel/