@ChertyakaNUB

Роли и разрешения, как сделать разрешения для записей?

Народ, привет всем!

Стоит пакет laravel-permissions. Даны роли пользователям(admin,manager) и некоторые права(edit,view,delete,create).

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

Но как сделать так, чтобы пользователи видели только те записи выведенные из БД, к которым имеют разрешения?

Допустим, в шаблоне выводится таблица данных из бд, этот шаблон с таблицей виден всем пользователям, а как сделать так или что указать в шаблоне/сервисе, чтобы записи в таблице видели каждый пользователь свои, согласно правам?

Например, создал админ 6 записей в бд, и создал одно разрешение("record-one") под эти виды записей(3 записи имеет поле в бд: "one", остальные три: "two"), затем наградил этим разрешением одного менеджера, чтобы при показе шаблона этому менеджеру показывались только записи, которые имеют поле со значением "one".

Получается нужно узнать имеет ли права пользователь cо slug "record-", если имеет то вынуть все имеющиеся права в массив, из каждого элемента удалить текст "record-", при этом получатся все значения прав на записи, и затем производить поиск в базе по значениям из массива и выводить их в шаблоне.
Правильно ли так делать?
  • Вопрос задан
  • 108 просмотров
Решения вопроса 1
@ChertyakaNUB Автор вопроса
Вообщем, как сам сказал, так и сделал, все работает!
...
$perms = auth()->user()->permissions;
            $records= array();
            foreach($perms as $perm){
                if (strpos($perm->slug, 'record-') !== false) {
                    $records[] = str_replace('record-','',$perm->slug);
                }
            }

            $table = Record::query();
            $table->whereIn('name_record', $records);
            return Datatables::eloquent($table)
...
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы