tripteki/laravelphp-acl
Tript Teknologi 的 Laravel.php ACLs
1.1.8
2024-01-07 04:44 UTC
Requires
- php: ^8.0.2
- spatie/laravel-permission: ^5.8.0
- tripteki/laravelphp-adminer: ^1.0.0
- tripteki/laravelphp-helpers: ^1.0.0
- tripteki/laravelphp-import-export: ^1.0.0
- tripteki/laravelphp-repository: ^1.0.0
- tripteki/laravelphp-request-response-query: ^1.0.0
Suggests
- laravel/framework: Required when using laravel framework (^9.0).
- laravel/lumen-framework: Required when using lumen framework (^9.0).
README
本包提供了对 Lumen 和 Laravel 的访问控制列表 (ACL) 角色权限在仓库模式下的实现,同时还包含了无需修改代码库的 REST API 管理启动包,保持了代码的整洁。
入门
安装
composer require tripteki/laravelphp-acl
如何使用它
/** * @return array<string, string> */ protected $dispatchesEvents = [ "created" => \Tripteki\ACL\Events\Created::class, "deleted" => \Tripteki\ACL\Events\Deleted::class, "restored" => \Tripteki\ACL\Events\Created::class, "forceDeleted" => \Tripteki\ACL\Events\Deleted::class, ];
-
将
Tripteki\ACL\Providers\ACLServiceProvider
添加到服务提供者配置列表。 -
将
Tripteki\ACL\Providers\ACLServiceProvider::ignoreConfig()
添加到register
提供者,然后运行以下命令将配置文件发布到您的项目目录:
php artisan vendor:publish --tag=tripteki-laravelphp-acl
- 将
Tripteki\ACL\Providers\ACLServiceProvider::ignoreMigrations()
添加到register
提供者,然后运行以下命令(可选)将迁移文件发布到您的项目目录:
php artisan vendor:publish --tag=tripteki-laravelphp-acl-migrations
- 迁移。
php artisan migrate
- 触发事件监听器。
php artisan queue:work
- 运行以下命令(可选)将测试文件发布到您的项目目录:
php artisan vendor:publish --tag=tripteki-laravelphp-acl-tests
- 示例
use Tripteki\ACL\Contracts\Repository\Admin\IACLRoleRepository; use Tripteki\ACL\Contracts\Repository\Admin\IACLPermissionRepository; use Tripteki\ACL\Contracts\Repository\IACLRepository; $roleRepository = app(IACLRoleRepository::class); $permissionRepository = app(IACLPermissionRepository::class); /* * As `{resource}`.`{action}`.`{target}` is representing : * * - {resource} : 'posts' = 'posts.*' = 'posts.*.*' * - {action} : 'viewAny', 'view', 'create', 'update', 'delete' * - {target} : '[identifier]' */ // $permissionRepository->rule("posts.update.*"); // // $permissionRepository->unrule("posts.update.*"); // // $permissionRepository->get("posts.update.*"); // // $permissionRepository->all(); // // $roleRepository->rule("admin"); // // $roleRepository->rule("user"); // // $roleRepository->unrule("admin"); // // $roleRepository->unrule("user"); // // $roleRepository->get("admin"); // // $roleRepository->get("user"); // // $roleRepository->all(); // // $roleRepository->forRole("admin"); // // $roleRepository->grant("posts.update.*"); // // $roleRepository->revoke("posts.update.*"); // // $roleRepository->ability("posts.update.*"); // // $roleRepository->permissions(); // $repository = app(IACLRepository::class); // $repository->setUser(...); // // $repository->getUser(); // // $repository->grantAs("admin"); // // $repository->revokeAs("admin"); // // $repository->is("admin"); // // $repository->permissions(); // // $repository->grant("posts.update.5"); // // $repository->revoke("posts.update.5"); // // $repository->owns(); // // $repository->can(iacl(\App\Models\Post::class, "update", 5)); // // $repository->can("posts.update.5"); // // auth()->user()->can("posts.update.5"); // // auth()->user()->canAny([ "posts.update.5", ]); // // auth()->user()->cant("posts.update.5"); // // auth()->user()->cantAny([ "posts.update.5", ]); //
- 将此放入您的注解配置中(可选)以将swagger文件生成到您的项目目录:
base_path("app/Http/Controllers/ACL")
base_path("app/Http/Controllers/Admin/ACL")
用法
php artisan adminer:install:acl
作者
- Trip Teknologi (@tripteki)
- Hasby Maulana (@hsbmaulana)