fix(cli): skip when role does not exist
This commit is contained in:
		
							parent
							
								
									7c21c5cf1a
								
							
						
					
					
						commit
						dd6f0a6d84
					
				@ -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 });
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -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) => {
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user