innmind / acl
3.1.0
2023-09-16 14:56 UTC
Requires
- php: ~8.2
- innmind/immutable: ~4.0|~5.0
Requires (Dev)
- innmind/black-box: ~5.5
- innmind/coding-standard: ~2.0
- nikic/php-parser: ^4.13.2
- phpunit/phpunit: ~10.2
- vimeo/psalm: ~5.12
This package is auto-updated.
Last update: 2024-09-16 17:02:14 UTC
README
一个小型库,用于复现Unix文件系统访问控制列表的逻辑。
安装
composer require innmind/acl
使用
use Innmind\ACL\{ ACL, User, Group, Mode, }; $acl = ACL::of('r---w---x user:group'); $acl->allows(User::of('foo'), Group::of('bar'), Mode::read); // false $acl->allows(User::of('foo'), Group::of('bar'), Mode::write); // false $acl->allows(User::of('foo'), Group::of('bar'), Mode::execute); // true $acl->allows(User::of('foo'), Group::of('group'), Mode::read); // false $acl->allows(User::of('foo'), Group::of('group'), Mode::write); // true $acl->allows(User::of('foo'), Group::of('group'), Mode::execute); // true $acl->allows(User::of('user'), Group::of('bar'), Mode::read); // true $acl->allows(User::of('user'), Group::of('bar'), Mode::write); // false $acl->allows(User::of('user'), Group::of('bar'), Mode::execute); // true $acl->allows(User::of('user'), Group::of('group'), Mode::read); // true $acl->allows(User::of('user'), Group::of('group'), Mode::write); // true $acl->allows(User::of('user'), Group::of('group'), Mode::execute); // true $acl->toString(); // outputs "r---w---x user:group" $otherAcl = $acl->addUser(Mode::write); $acl->toString(); // outputs "r---w---x user:group" $otherAcl->toString(); // outputs "rw--w---x user:group"
目标是复现文件系统ACL的逻辑,但是在应用层面,以便它可以保存在用户实体中,并与真实的文件系统完全解耦。