abcvb1356852 / webman-rbac
A powerful RBAC (Role-Based Access Control) plugin for Webman framework with admin interface
v1.0.0
2025-09-16 02:04 UTC
Requires
- php: >=8.0
- illuminate/database: ^8.0|^9.0|^10.0|^11.0
- illuminate/events: ^8.0|^9.0|^10.0|^11.0
- illuminate/pagination: ^8.0|^9.0|^10.0|^11.0
- workerman/webman: ^1.5
- workerman/webman-framework: ^1.5
Requires (Dev)
- mockery/mockery: ^1.4
- phpstan/phpstan: ^1.0
- phpunit/phpunit: ^9.0|^10.0|^11.0
README
一个功能强大的 Webman 框架 RBAC(基于角色的访问控制)权限管理插件,提供完整的管理界面和API。
✨ 特性
- 🚀 开箱即用 - 安装后即可使用,无需额外配置
- 🎨 现代化管理界面 - 基于 LayUI 的美观管理后台
- 🔐 完整的RBAC - 用户、用户组、权限三级管理
- ⚡ 高性能 - Redis缓存支持,减少数据库查询
- 🛡️ 安全可靠 - 完善的权限验证和数据校验
- 📱 响应式设计 - 适配各种设备屏幕
- 🔄 批量操作 - 支持批量管理用户和权限
- 🌳 权限树 - 可视化权限层级结构
📋 系统要求
- PHP >= 8.0
- Webman >= 1.5
- MySQL >= 5.7 或 PostgreSQL >= 9.4
- Redis >= 3.0 (可选,用于缓存)
🚀 快速开始
1. 安装插件
composer require webman/rbac
2. 安装数据库
# 自动安装数据库表 composer run install-db # 或者手动执行SQL文件 mysql -u username -p database < vendor/webman/rbac/database/migrations/001_create_rbac_tables.sql
3. 配置中间件
在 config/middleware.php
中添加权限中间件:
<?php return [ '' => [ // ... 其他中间件 \Webman\Rbac\Middleware\AuthMiddleware::class, ] ];
4. 访问管理界面
打开浏览器访问:http://your-domain.com/admin/rbac
🎯 核心功能
管理界面
- 控制台 (
/admin/rbac
) - 系统概览和快速操作 - 用户管理 (
/admin/rbac/users
) - 用户增删改查、用户组分配 - 用户组管理 (
/admin/rbac/groups
) - 用户组管理、权限分配 - 权限管理 (
/admin/rbac/permissions
) - 权限管理、权限同步
API接口
// 检查用户权限 $rbac = app(Webman\Rbac\RbacService::class); $hasPermission = $rbac->checkPermission($userId, 'user.create'); // 获取用户权限列表 $permissions = $rbac->getUserPermissions($userId); // 获取用户组信息 $groups = $rbac->getUserGroups($userId);
⚙️ 配置说明
配置文件位于 config/plugin/webman/rbac/app.php
:
<?php return [ 'enable' => true, // 权限配置 'permission' => [ 'enable' => true, 'super_admin_ids' => [1], // 超级管理员ID 'skip_paths' => [ // 跳过权限检查的路径 '/login', '/logout', '/admin/rbac', ], ], // 缓存配置 'cache' => [ 'enable' => true, 'driver' => 'redis', 'prefix' => 'rbac:', 'ttl' => 3600, ], // 数据库表配置 'tables' => [ 'users' => 'rbac_users', 'groups' => 'rbac_groups', 'permissions' => 'rbac_permissions', 'user_groups' => 'rbac_user_groups', 'group_permissions' => 'rbac_group_permissions', ], ];
📖 使用示例
1. 权限检查中间件
<?php namespace app\middleware; use Webman\MiddlewareInterface; use Webman\Http\Response; use Webman\Http\Request; use Webman\Rbac\RbacService; class PermissionMiddleware implements MiddlewareInterface { public function process(Request $request, callable $next): Response { $userId = session('user_id'); $path = $request->path(); $rbac = app(RbacService::class); if (!$rbac->checkPermission($userId, $path)) { return json(['code' => 403, 'message' => '权限不足']); } return $next($request); } }
2. 控制器中使用
<?php namespace app\controller; use support\Request; use Webman\Rbac\RbacService; class UserController { public function index(Request $request) { $rbac = app(RbacService::class); $userId = session('user_id'); // 检查查看权限 if (!$rbac->checkPermission($userId, 'user.index')) { return json(['code' => 403, 'message' => '无权访问']); } // 业务逻辑... return json(['code' => 0, 'data' => $users]); } public function store(Request $request) { $rbac = app(RbacService::class); $userId = session('user_id'); // 检查创建权限 if (!$rbac->checkPermission($userId, 'user.create')) { return json(['code' => 403, 'message' => '无权创建']); } // 创建用户逻辑... } }
3. 视图中权限控制
<?php $rbac = app(\Webman\Rbac\RbacService::class); $userId = session('user_id'); ?> <!-- 只有有权限的用户才能看到 --> <?php if ($rbac->checkPermission($userId, 'user.create')): ?> <button class="btn btn-primary">添加用户</button> <?php endif; ?> <?php if ($rbac->checkPermission($userId, 'user.delete')): ?> <button class="btn btn-danger">删除用户</button> <?php endif; ?>
🗃️ 数据库结构
插件会创建以下数据表:
rbac_users
- 用户表rbac_groups
- 用户组表rbac_permissions
- 权限表rbac_user_groups
- 用户-用户组关联表rbac_group_permissions
- 用户组-权限关联表
🔧 高级配置
缓存配置
支持 Redis 和文件缓存两种方式:
'cache' => [ 'enable' => true, 'driver' => 'redis', // 或 'file' 'prefix' => 'rbac:', 'ttl' => 3600, ],
自定义表名
可以自定义数据库表名:
'tables' => [ 'users' => 'my_users', 'groups' => 'my_groups', 'permissions' => 'my_permissions', 'user_groups' => 'my_user_groups', 'group_permissions' => 'my_group_permissions', ],
🤝 贡献指南
欢迎提交 Issue 和 Pull Request!
- Fork 项目
- 创建特性分支 (
git checkout -b feature/AmazingFeature
) - 提交更改 (
git commit -m 'Add some AmazingFeature'
) - 推送到分支 (
git push origin feature/AmazingFeature
) - 打开 Pull Request
📄 许可证
本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。