Closed fahussain closed 2 years ago
@nodece @Zxilly @Gabriel-403
@fahussain do you use the casbin.js@next? could you provide the model and policy?
For my server side I use NestJS and yes casbin is working there. This is my model:
[request_definition]
r = subject, tenant, object, action
[policy_definition]
p = subject, tenant, object, action
[role_definition]
g = _, _, _
g2 = _, _, _
[policy_effect]
e = some(where (p.eft == allow)) && !some(where (p.eft == deny))
[matchers]
m = g(r.subject, p.subject, r.tenant) && g2(r.object, p.object, r.tenant) && r.tenant == p.tenant && r.action == p.action
I am not sure what you mean by casbin.js@next. I was hoping to use casbin.js on the frontdend in Angular to implement the policies. My policies are going to be dynamic and quite large, generated by an application in which admins can add Tenants, Roles, Users, Objects, Actions, Policies etc... On the server I am using TypeOrm adapter to store policies in MySQL.
@fahussain plz refer to https://github.com/casbin/casbin.js/tree/v1 to get the infomation about casbin.js@next
. It is a totally refactor version and can work cross platform, like Angular.
I suggest designing your own protocol for exchanging permission data between the front and back ends. The communication protocols pre-built in legacy casbin.js are not reliable.
@fahussain
I tried using casbin.js in my Angular project but it seems casbin is dependent on some core node.js modules
In short, casbin.js@next
is cross-platform version of node-casbin
.
I have the same issue here. The next
release is not platform indipendent.
@nodece
Can't casbin.js@next
solve this?
Workaround:
path
decs.d.ts
file with this line: declare module "path";
tsconfig.json
file on the include
propNope, casbin.js@next version does not resolve this without that workaround.
@giovanni-bertoncelli Could you provide a repository for reproduce this issue?
Experiencing the same thing. Here's a repo: https://github.com/danverde/CasbinJS-React/tree/broken
I did make sure to install casbinjs@next
. Looks like it ended up installing 1.0.0, rather than 1.0.1 that I got by installing casbin.js
@nodece
Thanks @danverde, I know how to resolve it.
Because we are incorrect design, this version is confusing, we are decided to improve the node-casbin
repo, the next version casbin has been released, the casbin@beta
can be available on NPM.
but this version number is incorrect, should be 6.0.0-beta.x
, not 5.14.0-beta.x
. This version is working on React, and Ng.
@nodece So I need to use version 6.0.0-beta.x
of the node-casbin
repo rather than the casbin.js
repo? or is/will there be a release of casbin.js
built off the correct version of node-casbin
?
So I need to use version 6.0.0-beta.x of the node-casbin repo rather than the casbin.js repo?
Yes, you can install this by yarn add casbin@beta
, then select the 5.14.0-beta.3
.
or is/will there be a release of casbin.js build off the correct version of node-casbin?
We don't continue to release the casbin.js to instead of node-casbin.
Installing casbin@next
doesn't work:
And node-casbin 5.14.0-beta.3
doesn't work in the browser either
I was able to get casbin.js
running by ejecting the react project and then updating the webpack config file to disable source maps for node_modules
and disabling the polyfill for path
.
@nodece
Sorry, casbin@beta
is correct.
Installing
casbin@next
doesn't work:And
node-casbin 5.14.0-beta.3
doesn't work in the browser either
Could you provide the log that doesn't work in the browser?
I tried using casbin.js in my Angular project but it seems casbin is dependent on some core node.js modules, path stream and fs to be more specific. Angular 12 uses webpack 5 which does not allow core node.js modules to be included in a web app. I tried some workarounds but finally gave up since I found out that casbin.js does not support RBAC with domains as mentioned here https://github.com/casbin/casbin.js/issues/31.