修改权限过滤器文件中的获取角色中的所有权限和删除角色后删除掉所对应的权限

This commit is contained in:
wanglei 2025-11-08 15:41:10 +08:00
parent e95d2a0ee5
commit fa7185d1d1
4 changed files with 36 additions and 13 deletions

View File

@ -79,6 +79,8 @@ local function handler()
--共享数据字典进行数据存储
--dict:set("RBAC", "1")
print("init application success")
end
-- 设置定时器执行一次handler函数

View File

@ -59,4 +59,8 @@ function _M:ttl(key)
return self.red:ttl(key)
end
function _M:scan(cursor, method, pattern)
return self.red:scan(cursor, method, pattern)
end
return _M

View File

@ -336,12 +336,13 @@ end
local perm = require("util.permissionfilter")
local rest = perm:getRolePermissions("admin")
for _, row in pairs(rest) do
print(row.key)
for _, key in ipairs(rest) do
print(key)
end
perm:clearRolePermissions("admin")
--[[
--读取用户表、角色表和权限表中配置的权限数据
local roleDao = require("dao.role")
--获取数据表中的记录数
@ -358,6 +359,7 @@ for _, row in pairs(res) do
--row.role_key:超级管理员
print(row.id..row.create_by..row.role_name)
end
--]]
--[[
--获取数据表中的记录数

View File

@ -58,23 +58,38 @@ function _M:getRolePermissions(role_name)
--获取redis中所有匹配的数据内容
local pattern = role_name.."-*"
local cursor = "0"
local result, err = red:scan(cursor, 'MATCH', pattern)
if not result then
return allPermissions
end
cursor = result[1]
for _, key in ipairs(result[2]) do
table.insert(allPermissions, key)
end
repeat
local result, err = red:scan(cursor, 'MATCH', pattern)
if not result then
return allPermissions
end
cursor = result[1]
for _, key in ipairs(result[2]) do
table.insert(allPermissions, key)
end
until cursor == "0"
return allPermissions
end
-- 清除角色的所有权限
function _M:clearRolePermissions(role_name)
--将redis中角色相关的键值去掉
local keys = red:call("KEYS", role_name.."-*")
if keys then
red:call("DEL", unpack(keys))
--获取redis中所有匹配的数据内容
local pattern = role_name.."-*"
local cursor = "0"
local keys = {}
repeat
local result, err = red:scan(cursor, 'MATCH', pattern)
if not result then
break
end
cursor = result[1]
for _, key in ipairs(result[2]) do
table.insert(keys, key)
end
until cursor == "0"
for _, key in ipairs(keys) do
red:del(key)
end
end