-
-
Notifications
You must be signed in to change notification settings - Fork 35
feat: Extend multiple sections type of escapeAssertion #180
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Signed-off-by: Gabriel-403 <1499015923@qq.com>
expect(util.escapeAssertion('!r.attp.value /p.attr')).toEqual('!r_attp.value /p_attr'); | ||
expect(util.escapeAssertion('g(r.sub, p.sub) == p.attr')).toEqual('g(r_sub, p_sub) == p_attr'); | ||
expect(util.escapeAssertion('g(r.sub,p.sub) == p.attr')).toEqual('g(r_sub,p_sub) == p_attr'); | ||
expect(util.escapeAssertion('(r.attp.value || p.attr)p.u')).toEqual('(r_attp.value || p_attr)p_u'); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
could you add more cases, so like:
r1.value == p1.value
r2.value == p4.value
r_app1.value == p.value
r_app1.value == p_app1.value
rapp1.value == p.value
rapp1.value == papp1.value
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This matching method will be supported in the future!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You are solving is this problem, why should you support this in the future?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@nodece It looks like we can not read the policy type like r_app1
? sec + Model.getKeySuffix(i)
will return like r1
r2
and so on.
Lines 64 to 73 in 72a658b
private loadSection(cfg: ConfigInterface, sec: string): void { | |
let i = 1; | |
for (;;) { | |
if (!this.loadAssertion(cfg, sec, sec + Model.getKeySuffix(i))) { | |
break; | |
} else { | |
i++; | |
} | |
} | |
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@sagilio thanks for your point.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hi @Gabriel-403, thanks for your contribution, casbin cannot support the policy type like r_app1
, so you need to reset escapeAssertion
method, and append the r1.value == p1.value
and r2.value == p4.value
to test cases.
31fa931
to
d90393d
Compare
Signed-off-by: Gabriel-403 <1499015923@qq.com>
d90393d
to
6394883
Compare
LGTM |
# [1.0.0-beta.4](v1.0.0-beta.3...v1.0.0-beta.4) (2021-08-31) ### Features * Extend multiple sections type of escapeAssertion ([#180](#180)) ([4a8cc10](4a8cc10))
🎉 This PR is included in version 1.0.0-beta.4 🎉 The release is available on: Your semantic-release bot 📦🚀 |
# 1.0.0 (2021-10-30) ### Bug Fixes * `getImplicitPermissionsForUser` works with rmMap ([#272](#272)) ([0d59239](0d59239)) * add cache to generateGFunction ([e90bed2](e90bed2)) * add casbin-cpp to supported languages. ([b856734](b856734)) * add check if the adapter implements BatchAdapter ([a415838](a415838)) * add checks fieldValues to remove filtered policy ([6e144fb](6e144fb)) * Add examples. ([5cf950a](5cf950a)) * Add imports and batchFileAdapter implementation. ([3804c3d](3804c3d)) * add missing await ([523ce85](523ce85)) * Add tests for batch operations. ([e6ad7af](e6ad7af)) * Added ABAC policy logic to the private enforcer. ([c6fc487](c6fc487)) * Added util functions and util tests. ([72918bc](72918bc)) * check adapter type ([a74314d](a74314d)) * compatible types ([58242a5](58242a5)) * downgrade expression-eval back to v2.0.0 to avoid semantic-release failure, revert: casbin/node-casbin#222 ([8c0b1fd](8c0b1fd)) * downgrade target from ESNext to ES2017 for building esm ([7dfcf93](7dfcf93)) * fix buildRoleLinks to isolate groups ([0fb6ae7](0fb6ae7)) * fix CasbinJsGetPermissionForUser() ([#251](#251)) ([98c11f1](98c11f1)) * fix errror type ([dc9e5b5](dc9e5b5)) * fix logic error and add unittests ([82124e3](82124e3)) * fix ts4 build configuration ([a5034c8](a5034c8)) * fix unexpected parser action ([3074fa9](3074fa9)) * getImplicitPermissionsForUser missing domain parameter ([584624c](584624c)) * ignore print model ([f426131](f426131)) * improve load policy line ([9f12511](9f12511)) * improve tokens separator ([687e96f](687e96f)) * improve update into adapter before model ([0e9ccc6](0e9ccc6)) * Merge conflicts. ([7179b17](7179b17)) * remove lodash ([293a852](293a852)) * remove unused import ([2f8801c](2f8801c)) * remove use spread operator with await in array ([6e4f876](6e4f876)) * rename StringAdapter to MemoryAdapter ([aa92d40](aa92d40)) * stackoverflow in getImplicitRolesForUser ([d0fc49f](d0fc49f)) * support comments after expression ([c97cb26](c97cb26)) * Support for loadIncrementalFilteredPolicy ([72c2001](72c2001)) * support pattern function in 3rd args of g ([#199](#199)) ([27005f8](27005f8)) * tests. ([4da5291](4da5291)) * transfer from micromatch to picomatch ([#264](#264)) ([6be1b06](6be1b06)) * update expression-eval ([95de296](95de296)) * use csv-like format ([32ec20d](32ec20d)) * **builtinoperators:** fix function keyMatch3 ([1245aa0](1245aa0)), closes [#214](#214) * **enforcer.ts:** fix deleteUser and improve deleteRole description ([1e6af16](1e6af16)), closes [#118](#118) * **rbac:** fix defaultRoleManager hasRole method ([#211](#211)) ([4f3ba65](4f3ba65)) * update casbinJsGetPermissionForUser for v0.1.0 Casbin.js ([#186](#186)) ([6c277e8](6c277e8)) ### Features * add addMatchingFunc to DefaultRoleManager ([cc04e65](cc04e65)) * add BuildIncrementalRoleLinks ([b565005](b565005)) * add casbinJsGetPermissionForUser ([30ae126](30ae126)) * add enforceEx() ([#271](#271)) ([762efd9](762efd9)) * add getImplicitUsersForPermission ([ad9df14](ad9df14)) * add glob pattern to built-in function ([8415fc2](8415fc2)) * add initRmMap ([87f8011](87f8011)) * Add lazyload option at enforcer init method ([#289](https://github.com/casbin/casbin.js/issues/289)) ([e858dcb](e858dcb)) * add named addMatchingFunc ([65d3a26](65d3a26)) * add policyArrayToString and policyStringToArray to util ([e71b40f](e71b40f)) * add priority_policy_explicit support ([#250](#250)) ([763c18e](763c18e)) * add support for `in` operator ([a44c6a9](a44c6a9)) * add sync mode ([70e4e12](70e4e12)) * add unittest ([3cd5b73](3cd5b73)) * add updatePolicy() ([#234](#234)) ([a3218f1](a3218f1)), closes [#235](#235) * avoid miss initialize() ([1394e8d](1394e8d)) * changing TypeScript target from ES6 to ES2017 ([6f4f50f](6f4f50f)) * controls whether to automatically notify Watcher ([2ce07c2](2ce07c2)) * enforceSync ([ff41f0a](ff41f0a)) * Extend multiple sections type of escapeAssertion ([#180](#180)) ([4a8cc10](4a8cc10)) * implement csv parser ([f2ddaab](f2ddaab)) * implement string adapater ([fabd784](fabd784)) * implementation cachedEnforcer ([0ace1a6](0ace1a6)) * improve effector for improve performance ([57de7b2](57de7b2)) * Multiple sections type ([2635601](2635601)) * RBAC with Domains API ([5e49b41](5e49b41)) * support RBAC for syncedEnforcer ([#150](#150)) ([2bf4299](2bf4299)) * sync with upstream ([ca4b572](ca4b572)) * synchronized enforcer ([ecec514](ecec514)) * use new license format ([284d2a4](284d2a4)) ### improvement * convert all management_api to async function ([e9f4d38](e9f4d38)) ### BREAKING CHANGES * **model** addPolicies, removePolicies and removeFilteredPolicy returns [boolean, string[][]] * - provides a new interface for Effector * see #
🎉 This PR is included in version 1.0.0 🎉 The release is available on: Your semantic-release bot 📦🚀 |
At present, only p < int > is supported. We should consider more forms. For example, consider supporting P < string > to meet the following test cases
r.attr.value == p.attr
r.attp.value || p.attr
r.attp.value && p.attr
r.attp.value >p.attr
r.attp.value <p.attr
r.attp.value +p.attr
r.attp.value -p.attr
r.attp.value *p.attr
r.attp.value /p.attr
!r.attp.value /p.attr'
g(r.sub, p.sub) == p.attr
g(r.sub,p.sub) == p.attr
(r.attp.value || p.attr)p.u