Я использую разрешение spatie / laravel (https://github.com/spatie/laravel-permission) для определения разрешений и ролей.
Теперь я хотел бы создать представление, в котором перечислены все разрешения в таблице.
Для архивации я создаю ресурс API, который должен содержать:
Это то, что я хочу архивировать:
permissions: [
{ module: 'User', view: true, create: false, delete: false },
{ module: 'Todo', view: true, create: false, delete: false },
],
Имя разрешения всегда verb-model
(view-user
, create-user
, delete-user
, view-todo
, create-todo
, ...)
Поэтому я подумал о разбиении имени каждого Permission
с помощью explode
.
Итак, я получу:
['view', 'user']
['create', 'user']
['delete', 'user']
...
Этот массив может быть сгруппирован в моем ресурсе.
Поэтому я мог бы сделать что-то вроде:
<?php
namespace App\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource;
use Spatie\Permission\Models\Permission;
class UserRoleResource extends JsonResource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request $request
*
* @return array
*/
public function toArray($request)
{
return [
'id' => $this->id,
'name' => $this->name,
'permissions' => Permission::all()->each(function($permission){
//return the exploded array
})
];
}
}
Но может быть с Laravel есть более простой способ?
Спасибо за ваши мысли по этому поводу: -)