eziat / permission-bundle
提供了一种简单的存储权限的层。
0.2
2018-10-03 22:58 UTC
Requires
- php: ^7.1.3
- symfony/config: ^3.4|^4.0
- symfony/dependency-injection: ^3.4|^4.0
- symfony/security-bundle: ^3.4|^4.0
Requires (Dev)
- doctrine/doctrine-bundle: ^1.8
- doctrine/orm: ^2.5
- friendsofphp/php-cs-fixer: ^2.8
- phpunit/phpunit: ^6.5
- symfony/cache: ^3.4|^4.0
- symfony/framework-bundle: ^3.4|^4.0
- symfony/phpunit-bridge: ^3.4|^4.0
- symfony/yaml: ^3.4|^4.0
This package is auto-updated.
Last update: 2024-09-09 02:40:30 UTC
README
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: ~