修改删除权限时,更新缓存中的rbac规则
This commit is contained in:
parent
5f494a272e
commit
930ecac916
@ -2,6 +2,7 @@ import BaseController from '../../common/base.controller'
|
|||||||
import { permission, router } from '../../decorators/router'
|
import { permission, router } from '../../decorators/router'
|
||||||
import { AdminRole } from '../../models/admin/AdminRole'
|
import { AdminRole } from '../../models/admin/AdminRole'
|
||||||
import { ZError } from '../../common/ZError'
|
import { ZError } from '../../common/ZError'
|
||||||
|
import { FastifyInstance } from 'fastify'
|
||||||
|
|
||||||
class RoleController extends BaseController {
|
class RoleController extends BaseController {
|
||||||
@permission('role:update')
|
@permission('role:update')
|
||||||
@ -13,6 +14,17 @@ class RoleController extends BaseController {
|
|||||||
role.name = name
|
role.name = name
|
||||||
role.level = level
|
role.level = level
|
||||||
await role.save()
|
await role.save()
|
||||||
|
let rbac = ((this as unknown) as FastifyInstance).rbac
|
||||||
|
rbac.remove(role.id)
|
||||||
|
for (let data of permissions) {
|
||||||
|
if (data === '*') {
|
||||||
|
rbac.add(role.id, data, '*')
|
||||||
|
} else {
|
||||||
|
const opers = data.split(':')
|
||||||
|
rbac.add(role.id, opers[0], opers[1])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
rbac.add(role.id, 'self', '*')
|
||||||
return role.toJson()
|
return role.toJson()
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -41,6 +53,8 @@ class RoleController extends BaseController {
|
|||||||
throw new ZError(10, 'record not found')
|
throw new ZError(10, 'record not found')
|
||||||
}
|
}
|
||||||
const result = await AdminRole.deleteOne({ _id: key })
|
const result = await AdminRole.deleteOne({ _id: key })
|
||||||
|
let rbac = ((this as unknown) as FastifyInstance).rbac
|
||||||
|
rbac.remove(key)
|
||||||
return { count: result.deletedCount }
|
return { count: result.deletedCount }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user