мой проект использует laravel fortify, inertia с vue. Мне нужно добавить разрешения на основе ролей (как и пакет пространственных разрешений). Я еще новичок в подкреплении и инерции. но у меня есть опыт работы с пространственным пакетом. Я застрял в том, как добавлять роли и разрешение на укрепление. в настоящее время я планирую создать структуру таблицы, такую как пакет spatie (роли, разрешения, роли_хас_пермиссии и т. д.). есть ли пакет для каждой сборки или лучший способ реализовать роли и разрешения? и использовать @can в файлах vue? Спасибо.
изменить
Привет, ребята, это я сделал сейчас (я использую это сейчас). он работает, но все еще нуждается в некоторых улучшениях (любое лучшее решение, я очень ценю это)
1) установлен и настроен как обычно spatie / laravel-permission
2) добавлены предопределенные разрешения и роли в таблицы с помощью сидера
создана функция в пользовательской модели для получения списка массивов разрешений
// user model function public function getPermissionArray() { return $this->getAllPermissions()->mapWithKeys(function($pr){ return [$pr['name'] => true]; }); }
и добавил эту функцию в промежуточное ПО инерции
//App\Http\Middleware\HandleInertiaRequests
public function share(Request $request)
{
return array_merge(parent::share($request), [
'auth'=>['user' => $request->user() ? $request->user()->only('id', 'name', 'email') : null,
'can' =>$request->user() ? $request->user()->getPermissionArray() : []
],
]);
}
теперь $page.props.auth.can
может получить глобальный доступ
- добавлена проверка разрешений в файле vue
<div class="row">
<div class="col-sm-12 col-md-6" v-if="$page.props.auth.can['user_create']">
<inertia-link
class="btn btn-primary"
:href="$route('admin.user.create')"
>Create New
</inertia-link>
</div>
</div>