import BaseController from '../../common/base.controller' import { permission, router } from '../../decorators/router' import { ZError } from '../../common/ZError' import { AdminPermission } from '../../models/admin/AdminPermission' class PermissionController extends BaseController { @permission('permission:update') @router('post /permission') async saveRole(req) { const { datas } = req.params for (let i = 0, len = datas.length; i < len; i++) { const data = datas[i] const record = (await AdminPermission.findOrCreate({ _id: data._id })).doc; record.name = data.name record.actions = data.actions record.sort = i record.level = data.level await record.save() } let ids = datas.map(o => o._id) const result = await AdminPermission.deleteMany({ _id: { $nin: ids }, show: true }) return {deleteCount: result.deletedCount, saveCount: datas.length} } @permission('permission:read') // @role('sysadmin') @router('get /permissions') async roles(req) { const user = req.user const queryData: any = {} if (!user.isSysAdmin()) { queryData.show = true } const records = await AdminPermission.find(queryData).sort({sort: 1}) return records.map(o => o.toJson()) } @permission('permission:delete') @router('delete /permission/:key') async deleteRole(req) { const { key } = req.params if (!key) { throw new ZError(10, 'record not found') } const result = await AdminPermission.deleteOne({ _id: key }) return { count: result.deletedCount } } }