FlightPHP/Permissions
这是一个权限模块,用于应用中多角色且各角色功能有所不同的场景。允许为每个角色定义权限,然后检查当前用户是否有权访问或执行某些操作。
安装
composer require flightphp/permissions
基本用法
$current_role = 'admin';
$permission = new \flight\Permission($current_role);
$permission->defineRule('loggedIn', function($current_role) {
return $current_role !== 'guest';
});
Flight::set('permission', $permission);
// 在控制器中
$permission = Flight::get('permission');
if ($permission->has('loggedIn')) {
// 执行操作
}
多权限示例
$permission->defineRule('post', function($current_role) {
if($current_role === 'admin') return ['create', 'read', 'update', 'delete'];
if($current_role === 'editor') return ['create', 'read', 'update'];
// ...
});
// 检查: $permission->can('post.create')
使用类定义权限 + 缓存
class MyPermissions {
public function order(string $current_role, int $order_id = 0): array {
return $permissions_array;
}
}
$Permissions->defineRulesFromClassMethods(MyApp\Permissions::class);
// 带缓存:
$Permissions->defineRulesFromClassMethods(MyApp\Permissions::class, 3600);
支持闭包/类方法、依赖注入、has()/can()/is() 三种检查方法。详见 GitHub。