tripteki/laravelphp-acl

Tript Teknologi 的 Laravel.php ACLs

1.1.8 2024-01-07 04:44 UTC

This package is auto-updated.

Last update: 2024-09-07 06:07:27 UTC


README

本包提供了对 Lumen 和 Laravel 的访问控制列表 (ACL) 角色权限在仓库模式下的实现,同时还包含了无需修改代码库的 REST API 管理启动包,保持了代码的整洁。

入门

安装

composer require tripteki/laravelphp-acl

如何使用它

  • 在此处阅读详细可选说明 LumenLaravel.

  • 将其放入您的任何可规则化的模型中。

/**
 * @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

作者