Skip to content

Commit a6f4875

Browse files
committed
fix(ability): adds additional check to rulesToFields
Function should ignore rules without conditions as well
1 parent f0a4a31 commit a6f4875

File tree

2 files changed

+8
-1
lines changed

2 files changed

+8
-1
lines changed

packages/casl-ability/spec/rules_to_fields.spec.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,13 @@ describe('rulesToFields', () => {
1818
expect(object).to.be.an('object').and.empty
1919
})
2020

21+
it('returns an empty object for `Ability` instance with rules without conditions', () => {
22+
const ability = AbilityBuilder.define(can => can('read', 'Post'))
23+
const object = rulesToFields(ability, 'read', 'Post')
24+
25+
expect(object).to.be.an('object').and.empty
26+
})
27+
2128
it('extracts field values from direct rule conditions', () => {
2229
const ability = AbilityBuilder.define((can) => {
2330
can('read', 'Post', { id: 5 })

packages/casl-ability/src/extra.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ export function rulesToQuery(ability, action, subject, convert) {
3030

3131
export function rulesToFields(ability, action, subject) {
3232
return ability.rulesFor(action, subject)
33-
.filter(rule => !rule.inverted)
33+
.filter(rule => !rule.inverted && rule.conditions)
3434
.reduce((values, rule) => {
3535
return Object.keys(rule.conditions).reduce((fields, fieldName) => {
3636
const value = rule.conditions[fieldName];

0 commit comments

Comments
 (0)