wijzijnweb/laravel-inertia-permissions

一个易于使用的包,可以将Spatie的权限包集成到Inertia Laravel项目中。

1.0.5 2024-04-23 11:17 UTC

This package is auto-updated.

Last update: 2024-09-08 12:28:45 UTC


README

一个易于使用的包,可以将Spatie的权限包集成到Inertia Laravel项目中。此包还包含Vue组件,用于显示和编辑当前用户的角色以及管理角色和权限。

安装

您可以通过composer安装此包

composer require wijzijnweb/laravel-inertia-permissions

您可以使用以下命令发布和运行迁移

php artisan migrate

将以下内容添加到您的vite.config.js文件中

resolve: {
    alias: {
        '@laravel-inertia-permissions': 'vendor/wijzijnweb/laravel-inertia-permissions/resources/js'
    }
}

可选地,您可以将以下内容添加到您的jsconfig.json文件中

{
    "compilerOptions": {
        "paths": {
            "@laravel-inertia-permissions/*": ["./vendor/wijzijnweb/laravel-inertia-permissions/resources/js/*"]
        }
    }
}

使用方法

权限和角色会自动与Inertia共享。您可以在Vue组件中这样访问它们

import usePermissions from '@laravel-inertia-permissions/Uses/usePermissions.js';

const { can, is } = usePermissions()

if (can('edit articles')) {
    // do something
}

if (is('writer')) {
    // do something
}
import FormRoles from '@laravel-inertia-permissions/Components/FormRoles.vue';
import FormPermissions from '@laravel-inertia-permissions/Components/FormPermissions.vue';

<FormRoles v-model="form.roles" />
<FormPermissions v-model="form.permissions" />

您还可以使用指令来隐藏特定元素。为此,您需要在app.js文件中注册这些指令

import {
    hasRoleDirective,
    hasPermissionDirective
} from '@laravel-inertia-permissions/Directives/permissionDirective.js';

createApp({render: () => h(App, props)})
    .directive('hasRole', hasRoleDirective)
    .directive('hasPermission', hasPermissionDirective)

之后,您可以在Vue组件中使用这些指令:您可以使用管道符号和和符号来检查多个角色或权限

 <MyComponent v-has-role="'admin|writer'" />
 <MyComponent v-has-permission="'edit articles&delete articles'" />

还有一个组件可以防止用户看到某些内容,并显示反馈消息

import HasPermission from '@laravel-inertia-permissions/Components/HasPermission.vue';

<HasPermission permission="edit articles" role="writer">
    <p>You can edit articles</p>
</HasPermission>

变更日志

请参阅CHANGELOG以获取有关最近更改的更多信息。

鸣谢

许可协议

MIT许可协议(MIT)。请参阅许可文件以获取更多信息。