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

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") --dict:set("RBAC", "1")
print("init application success")
end end
-- 设置定时器执行一次handler函数 -- 设置定时器执行一次handler函数

View File

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

View File

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

View File

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