tomsgu/permission-bundle
最新稳定版本:1.0.0
Composer 安装命令:
composer require tomsgu/permission-bundle
包简介
Provides a simple layer to store permissions.
README 文档
README
Tomsgu Permission Bundle
A Symfony bundle that provides a simple permission layer for access control. Use it when you need something more flexible than roles but less complex than ACL.
Installation
composer require tomsgu/permission-bundle
Register the bundle in config/bundles.php:
return [ // ... Tomsgu\PermissionBundle\TomsguPermissionBundle::class => ['all' => true], ];
Configuration
# config/packages/tomsgu_permission.yaml tomsgu_permission: permissions: - { name: "EDIT_POST", description: "Can edit posts" } - { name: "DELETE_POST", description: "Can delete posts" } database: db_driver: orm permission_class: App\Entity\Permission cache: ~
Create a Permission Entity
namespace App\Entity; use Doctrine\ORM\Mapping as ORM; use Tomsgu\PermissionBundle\Entity\Permission as BasePermission; #[ORM\Entity] #[ORM\Table(name: 'permission')] class Permission extends BasePermission { #[ORM\Id] #[ORM\Column(type: 'integer')] #[ORM\GeneratedValue] protected int $id; public function getId(): int { return $this->id; } }
Implement UserPermissionInterface
Your User class must implement UserPermissionInterface to work with the UserManager:
namespace App\Entity; use Doctrine\ORM\Mapping as ORM; use Tomsgu\PermissionBundle\Model\UserPermissionInterface; #[ORM\Entity] class User implements UserPermissionInterface { #[ORM\ManyToMany(targetEntity: Permission::class)] #[ORM\JoinTable(name: 'users_permissions')] protected array $permissions; public function getId(): int { return $this->id; } public function getPermissions(): array { return $this->permissions; } }
Usage
Inject UserManagerInterface to check permissions:
use Tomsgu\PermissionBundle\Model\UserManagerInterface; class PostController { public function __construct(private UserManagerInterface $userManager) {} public function edit(User $user): void { if ($this->userManager->hasPermission($user, 'EDIT_POST')) { // ... } } }
Loading Permissions
Load permissions defined in your configuration into the database:
php bin/console tomsgu:permission:load
License
MIT License. See LICENSE for details.
统计信息
- 总下载量: 21
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 4
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2026-03-02