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

This package is auto-updated.

Last update: 2025-09-16 02:08:12 UTC


README

Latest Stable Version Total Downloads License

一个功能强大的 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!

  1. Fork 项目
  2. 创建特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 打开 Pull Request

📄 许可证

本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。

🙋‍♂️ 支持

📊 统计

GitHub stars GitHub forks GitHub issues GitHub pull requests