eziat/permission-bundle

提供了一种简单的存储权限的层。

安装次数: 4,709

依赖者: 0

建议者: 0

安全性: 0

星标: 0

关注者: 2

分支: 0

开放问题: 0

类型:symfony-bundle

0.2 2018-10-03 22:58 UTC

This package is auto-updated.

Last update: 2024-09-09 02:40:30 UTC


README

Build Status Scrutinizer Code Quality

Eziat 权限包

权限包提供了一种灵活的方式来控制访问决策。基本上,如果你需要比角色更灵活但比 acl 定义更简单的功能,那么使用它是很有意义的。

安装

步骤 1 使用 composer 下载包。

composer require eziat/permission-bundle

步骤 2 启用包

将包添加到 config/bundles.php 文件中。

<?php
// config/bundles.php

return [
    //...
    new Eziat\PermissionBundle\EziatPermissionBundle(),
    //...
];

如果你使用 flex,这将自动完成。

步骤 3 创建你的权限类(可选)

  • 如果你想在数据库中作为附加表存储权限,则必须这样做。
<?php
// src/Entity/Permission.php

namespace App\Entity;

use Eziat\PermissionBundle\Entity\Permission as BasePermission;
use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity
 * @ORM\Table(name="permission")
 */
class Permission extends BasePermission
{
    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;
    
    public function getId()
    {
        return $this->id;
    }
    
    // Your other logic.
}

步骤 4 实现 UserPermissionInterface

要使用 UserManager,你的 User 类应该实现 UserPermissionInterface。有两种方法可以实施

  • getId()
  • getPermissions()
<?php
// src/Entity/User.php

namespace App\Entity;

use Doctrine\ORM\Mapping as ORM;
use Eziat\PermissionBundle\Model\UserPermissionInterface;

/**
 * @ORM\Entity
 */
class User implements UserPermissionInterface
{
    /**
     * @ORM\ManyToMany(targetEntity="Permission")
     * @ORM\JoinTable(name="users_permissions",
     *      joinColumns={@ORM\JoinColumn(name="user_id", referencedColumnName="id")},
     *      inverseJoinColumns={@ORM\JoinColumn(name="permission_id", referencedColumnName="id")}
     * )
     */
    protected $permissions;
    
    public function getId()
    {
        return $this->id;
    }
    
    public function getPermissions() : array
    {
        return $this->permissions;
    }
    
    // Your other logic.
}

步骤 5 配置包

eziat_permission:
    database:
        db_driver: orm
        permission_class: App\Entity\Permission
    cache: ~