Access control
hello! We are using keycloak and want to add roles to our application how can this be done? should I do this via keycloak or should I combine keycloak with cerbos|casbin somehow?
can method for accessControlProvider to integrate your policy. You can use the authProvider.getPermissions method to fetch roles from the backend. can method for accessControlProvider:cancanaccessControlProvideraccessControlProviderauthProvider.getPermissionsimport { newModel, StringAdapter } from "casbin";
export const model = newModel(`
[request_definition]
r = sub, obj, act
[policy_definition]
p = sub, obj, act
[role_definition]
g = _, _
[policy_effect]
e = some(where (p.eft == allow))
[matchers]
m = g(r.sub, p.sub) && keyMatch(r.obj, p.obj) && regexMatch(r.act, p.act)
`);
export const adapter = new MemoryAdapter(`
p, editor, posts, list
`); import { newEnforcer } from "casbin";
import { model, adapter } from "./accessControl";
const App: React.FC = () => {
return (
<BrowserRouter>
<Refine
accessControlProvider={{
can: async ({ resource, action }) => {
const enforcer = await newEnforcer(model, adapter);
const can = await enforcer.enforce(
"editor",
resource,
action,
);
return { can };
},
}}
//...
>
{/* ... */}
</Refine>
</BrowserRouter>
);
};
export default App;