Пользователи 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/

Другие вопросы по тегам