fix: merge acl action params appends bug

This commit is contained in:
aaaaaajie 2025-03-13 17:16:33 +08:00
parent 4d10946a2e
commit 516de92ee2
2 changed files with 29 additions and 1 deletions

View File

@ -397,6 +397,34 @@ describe('multiple roles merge', () => {
}, },
}); });
}); });
test('should union appends(params={ appends: [a,b]}) when appends = [a,b], appends =[]', () => {
acl.setAvailableAction('update');
acl.define({
role: 'role1',
actions: {
'posts:update': {
appends: ['a', 'b'],
},
},
});
acl.define({
role: 'role2',
actions: {
'posts:update': {
appends: [],
},
},
});
const canResult = acl.can({ resource: 'posts', action: 'update', roles: ['role1', 'role2'] });
expect(canResult).toStrictEqual({
role: 'role1',
resource: 'posts',
action: 'update',
params: {
appends: expect.arrayContaining(['a', 'b']),
},
});
});
}); });
describe('filter & fields merge', () => { describe('filter & fields merge', () => {

View File

@ -184,7 +184,7 @@ export function mergeAclActionParams(sourceParams, targetParams) {
}, },
fields: andMerge, fields: andMerge,
whitelist: andMerge, whitelist: andMerge,
appends: andMerge, appends: 'union',
}); });
removeEmptyParams(mergedParams); removeEmptyParams(mergedParams);
return mergedParams; return mergedParams;