From 930ecac916c55819ef1f7e110a1ad1a7f69c2d95 Mon Sep 17 00:00:00 2001 From: zhl Date: Mon, 10 May 2021 15:16:32 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=88=A0=E9=99=A4=E6=9D=83?= =?UTF-8?q?=E9=99=90=E6=97=B6,=E6=9B=B4=E6=96=B0=E7=BC=93=E5=AD=98?= =?UTF-8?q?=E4=B8=AD=E7=9A=84rbac=E8=A7=84=E5=88=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/admin/controllers/role.controller.ts | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/admin/controllers/role.controller.ts b/src/admin/controllers/role.controller.ts index 7f0e8b7..64230b8 100644 --- a/src/admin/controllers/role.controller.ts +++ b/src/admin/controllers/role.controller.ts @@ -2,6 +2,7 @@ import BaseController from '../../common/base.controller' import { permission, router } from '../../decorators/router' import { AdminRole } from '../../models/admin/AdminRole' import { ZError } from '../../common/ZError' +import { FastifyInstance } from 'fastify' class RoleController extends BaseController { @permission('role:update') @@ -13,6 +14,17 @@ class RoleController extends BaseController { role.name = name role.level = level 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() } @@ -41,6 +53,8 @@ class RoleController extends BaseController { throw new ZError(10, 'record not found') } const result = await AdminRole.deleteOne({ _id: key }) + let rbac = ((this as unknown) as FastifyInstance).rbac + rbac.remove(key) return { count: result.deletedCount } }