diff --git a/CHANGELOG.md b/CHANGELOG.md index 88974b76..9299a975 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +# [1.0.0-beta.4](https://github.com/casbin/casbin.js/compare/v1.0.0-beta.3...v1.0.0-beta.4) (2021-08-31) + + +### Features + +* Extend multiple sections type of escapeAssertion ([#180](https://github.com/casbin/casbin.js/issues/180)) ([4a8cc10](https://github.com/casbin/casbin.js/commit/4a8cc106862bee79fb1533338bde16669d40f5f5)) + # [1.0.0-beta.3](https://github.com/casbin/casbin.js/compare/v1.0.0-beta.2...v1.0.0-beta.3) (2021-08-28) diff --git a/package.json b/package.json index be3db6d1..859ba44e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "casbin.js", - "version": "1.0.0-beta.3", + "version": "1.0.0-beta.4", "description": "An authorization library that supports access control models like ACL, RBAC, ABAC in Typescript", "main": "lib/cjs/index.js", "typings": "lib/cjs/index.d.ts", diff --git a/src/util/util.ts b/src/util/util.ts index 94f681e9..266c46b3 100644 --- a/src/util/util.ts +++ b/src/util/util.ts @@ -18,7 +18,10 @@ import { RoleManager } from '../rbac'; function escapeAssertion(s: string): string { - return s.replace(/([rp])\.|[0-9]\./g, (match) => { + if (s.startsWith('r') || s.startsWith('p')) { + s = s.replace('.', '_'); + } + return s.replace(/([| =)(&<>,+\-!*\/])([rp][0-9]*)\./g, (match) => { return match.replace('.', '_'); }); } diff --git a/test/util.test.ts b/test/util.test.ts index 36185693..129e2f9f 100644 --- a/test/util.test.ts +++ b/test/util.test.ts @@ -190,3 +190,21 @@ test('test keyGet2Func', () => { expect(util.keyGet2Func('/baz', '/foo', 'bar')).toEqual(''); expect(util.keyGet2Func('/foo/baz', '/foo', 'bar')).toEqual(''); }); + +test('test escapeAssertion', () => { + expect(util.escapeAssertion('r.attr.value == p.attr')).toEqual('r_attr.value == p_attr'); + expect(util.escapeAssertion('r.attp.value || p.attr')).toEqual('r_attp.value || p_attr'); + expect(util.escapeAssertion('r.attp.value && p.attr')).toEqual('r_attp.value && p_attr'); + expect(util.escapeAssertion('r.attp.value >p.attr')).toEqual('r_attp.value >p_attr'); + expect(util.escapeAssertion('r.attp.value