пользователи laravel с несколькими ролями, имеющие несколько разрешений - PullRequest
0 голосов
/ 01 декабря 2018

Я хочу создать систему RBAC в laravel, где пользователь может принадлежать к нескольким ролям, и каждая роль может иметь несколько разрешений.Промежуточное программное обеспечение должно проверить, есть ли у пользователя определенное разрешение (в рамках любой из его ролей), прежде чем оно продолжит выполнение запроса.

Я могу реализовать случай, когда

  • Пользователь принадлежит одной роли, которая имеет много разрешений
  • Пользователь принадлежит нескольким ролям, которые используются для определенияконтроль доступа (без бита разрешений)

Мне нужно реализовать пользователя с несколькими ролями, имеющими несколько разрешений.Есть указатели?

Ответы [ 2 ]

0 голосов
/ 01 декабря 2018

Если вы не заинтересованы в написании этого кода самостоятельно, такой пакет, как разрешения Laravel, будет делать именно то, что вы хотите.

https://github.com/spatie/laravel-permission

В противном случае вам необходимо создать сводные таблицы между пользователями.и их роли, роли и права доступа

Таким образом, у вас будет таблица user_roles, которая будет состоять из user_id и role_I'd.

У вас также будет таблица role_permissions, которая будет содержать role_id иpermission_id.

Это позволило бы вам иметь отношения многие ко многим и иметь множество сквозных связей, чтобы переходить от пользователя к роли и от роли к пользователю.

Надеюсь, что это поможет

0 голосов
/ 01 декабря 2018

В качестве обзора.В вашей базе данных должна быть таблица roles, которая определяет различные типы пользователей, которые может иметь ваше приложение, например (администратор, автор, редактор, модератор и т. Д.)

Также необходимо определить таблицу role_userкоторый содержит данные о том, какую роль пользователь имеет.Это будет отношение «многие ко многим», поскольку пользователь может иметь несколько ролей.

Далее необходимо определить промежуточное программное обеспечение CheckRole, которое в основном проверяет, играет ли пользователь определенную роль.Вы можете использовать это промежуточное программное обеспечение в различных частях вашего приложения для ограничения аутентификации.

Вы можете найти это руководство полезным:

https://www.5balloons.info/user-role-based-authentication-and-access-control-in-laravel/

...