Laravel У пользователя будет разница Роль в зависимости от модели проекта - PullRequest
0 голосов
/ 26 февраля 2020

У меня есть Название модели Проект и Пользователь с использованием отношения laravel.
- Проект и Пользователь с использованием отношения многие ко многим .
Я хочу использовать laravel аутентификацию предоставление ролей пользователю на основе проекта .
Что означает:
пользователь " Али " имеет роль " admin " в проекте " проект a ",
, но в проекте " проект b"пользователь" Али"роль" member".
Как я могу это реализовать?

Проблема решена:

Мое решение - добавить дополнительные данные в хранилище сводных таблиц project_users в виде строки role.

Когда создаете новый проект и добавляете с помощью дополнительные данные, используя:

$user->projects()->save($project, ['role' => 'Manager']);

Когда необходимо вызвать его:

$user_role = $user->projects()->where('user_id', $user['id'])->first()->pivot->role;

Он вернет строку 'Manager' и использует ее для назначения роли.

$user->syncRoles($user_role);

Ответы [ 2 ]

1 голос
/ 26 февраля 2020

Посмотрите на следующие ссылки, которые помогут вам достичь этого.

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

https://www.itsolutionstuff.com/post/laravel-56-user-roles-and-permissions-acl-using-spatie-tutorialexample.html

0 голосов
/ 26 февраля 2020

Вы можете добавить данные Role , например role_id, с отдельной таблицей ролей или просто role в сводную таблицу Project To User project_users и получить информацию о роли из этого отношения.

Проверьте это Сохранение дополнительных данных в сводной таблице * Раздел 1009 * в Обновление взаимосвязи "многие ко многим" Laravel Документация.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...