fix(cli): skip when role does not exist

This commit is contained in:
chenos 2022-06-03 21:36:40 +08:00
parent 7c21c5cf1a
commit dd6f0a6d84
2 changed files with 10 additions and 3 deletions

View File

@ -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 });

View File

@ -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) => {