62 lines
2.5 KiB
Lua
62 lines
2.5 KiB
Lua
---
|
||
--- Generated by EmmyLua(https://github.com/EmmyLua)
|
||
--- Created by admin.
|
||
--- DateTime: 2025/11/3 11:38
|
||
---
|
||
|
||
local rbac = require("util.rbac")
|
||
|
||
-- 创建RBAC实例
|
||
local permission_system = rbac.new()
|
||
|
||
-- 定义权限
|
||
permission_system:add_permission("read_users", "/users", "GET")
|
||
permission_system:add_permission("create_users", "/users", "POST")
|
||
permission_system:add_permission("delete_users", "/users", "DELETE")
|
||
permission_system:add_permission("admin_panel", "/admin", "GET")
|
||
|
||
-- 定义角色
|
||
permission_system:add_role("guest", {"read_users"})
|
||
permission_system:add_role("user_manager", {"read_users", "create_users"})
|
||
permission_system:add_role("super_admin", {"read_users", "create_users", "delete_users", "admin_panel"})
|
||
|
||
-- 分配角色给用户
|
||
permission_system:assign_role("user001", "guest")
|
||
permission_system:assign_role("user002", "user_manager")
|
||
permission_system:assign_role("admin001", "super_admin")
|
||
|
||
-- 测试权限验证
|
||
print("=== RBAC权限验证测试 ===")
|
||
|
||
-- 测试用户001(guest角色)
|
||
local test_cases = {
|
||
{user_id = "user001", resource = "/users", action = "GET", expected = true},
|
||
{user_id = "user001", resource = "/users", action = "POST", expected = false},
|
||
{user_id = "user001", resource = "/admin", action = "GET", expected = false},
|
||
|
||
{user_id = "user002", resource = "/users", action = "GET", expected = true},
|
||
{user_id = "user002", resource = "/users", action = "POST", expected = true},
|
||
{user_id = "user002", resource = "/admin", action = "GET", expected = false},
|
||
|
||
{user_id = "admin001", resource = "/users", action = "GET", expected = true},
|
||
{user_id = "admin001", resource = "/users", action = "DELETE", expected = true},
|
||
{user_id = "admin001", resource = "/admin", action = "GET", expected = true}
|
||
}
|
||
|
||
for _, test in ipairs(test_cases) do
|
||
local result = permission_system:check_permission(test.user_id, test.resource, test.action)
|
||
local status = result == test.expected and "✓ 通过" or "✗ 失败"
|
||
print(string.format("%s 用户:%s 资源:%s 方法:%s 结果:%s",
|
||
status, test.user_id, test.resource, test.action, tostring(result)))
|
||
end
|
||
|
||
-- 显示用户权限列表
|
||
print("\n=== 用户权限列表 ===")
|
||
local users = {"user001", "user002", "admin001"}
|
||
for _, user_id in ipairs(users) do
|
||
local permissions = permission_system:get_user_permissions(user_id)
|
||
print(string.format("用户 %s 的权限:", user_id))
|
||
for _, perm in ipairs(permissions) do
|
||
print(string.format(" - %s %s", perm.action, perm.resource))
|
||
end
|
||
end |