From dd6f0a6d846cf31a86e4d1573f952af23cb30c8e Mon Sep 17 00:00:00 2001 From: chenos Date: Fri, 3 Jun 2022 21:36:40 +0800 Subject: [PATCH] fix(cli): skip when role does not exist --- packages/plugins/acl/src/model/RoleResourceModel.ts | 9 +++++++-- packages/plugins/acl/src/server.ts | 4 +++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/packages/plugins/acl/src/model/RoleResourceModel.ts b/packages/plugins/acl/src/model/RoleResourceModel.ts index fc9ec5c35..48f5e349d 100644 --- a/packages/plugins/acl/src/model/RoleResourceModel.ts +++ b/packages/plugins/acl/src/model/RoleResourceModel.ts @@ -1,7 +1,7 @@ -import { Database, Model } from '@nocobase/database'; import { ACL, ACLResource, ACLRole } from '@nocobase/acl'; -import { RoleResourceActionModel } from './RoleResourceActionModel'; +import { Model } from '@nocobase/database'; import { AssociationFieldsActions, GrantHelper } from '../server'; +import { RoleResourceActionModel } from './RoleResourceActionModel'; export class RoleResourceModel extends Model { async revoke(options: { role: ACLRole; resourceName: string; grantHelper: GrantHelper }) { @@ -36,6 +36,11 @@ export class RoleResourceModel extends Model { const roleName = this.get('roleName') as string; const role = acl.getRole(roleName); + if (!role) { + console.log(`${roleName} role does not exist`); + return; + } + // revoke resource of role await this.revoke({ role, resourceName, grantHelper }); diff --git a/packages/plugins/acl/src/server.ts b/packages/plugins/acl/src/server.ts index 3a9ebd67b..1d874f551 100644 --- a/packages/plugins/acl/src/server.ts +++ b/packages/plugins/acl/src/server.ts @@ -180,7 +180,9 @@ export class PluginACL extends Plugin { this.app.db.on('rolesResources.afterDestroy', async (model, options) => { const role = this.acl.getRole(model.get('roleName')); - role.revokeResource(model.get('name')); + if (role) { + role.revokeResource(model.get('name')); + } }); this.app.db.on('collections.afterDestroy', async (model, options) => {