morphcms / acl-module
该软件包的最新版本(v0.0.0)没有可用的许可证信息。
为Morph CMS添加角色和权限功能
v0.0.0
2022-08-01 09:37 UTC
Requires
- outl1ne/nova-multiselect-field: ^4.0
- spatie/laravel-permission: ^5.5.4
README
TODO:添加安装和使用文档。
安装
使用
有关授权使用的详细信息,请参阅 spatie/laravel-permissions 软件包的文档。
约定
约定是使用点(`.`)作为分隔符的 resource.permission。
星号(*)被称为通配符,表示资源的所有权限。
建议的方法是针对每个资源创建一个 enum,并将其权限分组。这提供了一种良好的智能感应并减少了输入错误。
示例
namespace Modules\Blog\Enums; use Modules\Acl\Contracts\EnumsPermissions; enum PostPermission: string { case All = 'posts.*'; // wildcard permissions enabled by default case ViewAdmin = 'posts.viewAdmin'; case ViewAny = 'posts.viewAny'; case View = 'posts.view'; case Create = 'posts.create'; case Update = 'posts.update'; case Delete = 'posts.delete'; case Replicate = 'posts.replicate'; case Restore = 'posts.restore'; }
然后在您的策略、控制器等中使用它,如下所示
$user->can(PostPermission::ViewAny->value); // or obviously you can use it directly $user->can('posts.viewAny');
权限播种
在您的Seeder中使用 AclBuilder 流畅API创建/附加权限。
namespace Modules\Blog\Database\Seeders; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Seeder; use Modules\Acl\Utils\AclSeederHelper; use Modules\Blog\Enums\PostPermission; class RolesAndPermissionsSeeder extends Seeder { use AclSeederHelper; /** * Run the database seeds. * * @return void */ public function run(): void { Model::unguard(); $this->acl(module: 'blog') ->attachEnum(permissions: PostPermission::class, onlyPermissions: PostPermission::All->value) ->create(moduleRoles: 'blogger'); // OR You can set permissions directly. $this->acl(module: 'blog') ->attach(permissions: [ 'posts.*', 'posts.viewAdmin', 'posts.viewAny', 'posts.view', 'posts.create', 'posts.update', 'posts.delete', ], onlyPermissions: 'posts.*') ->create(moduleRoles: 'blogger'); } }