popular-magentaP
Refine3y ago
4 replies
popular-magenta

Access Control Casbin for nulled menu item (Parents)

I have this:
import { 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 StringAdapter( p, admin, users, (list)|(delete) p, admin, canvases, (list)|(edit)|(delete) p, editor, users, list p, editor, canvases, (list)|(edit) );

and:
import { newEnforcer } from "casbin";
import { CanParams, CanReturnType } from "@refinedev/core";

import { adapter, model } from "../casbin/accessControl";
import { authProvider } from "./authProvider";

export const accessControlProvider = {
can: async ({ resource, action }: CanParams): Promise<CanReturnType> => {
const role = await authProvider.getPermissions?.();

const enforcer = await newEnforcer(model, adapter);
const can = await enforcer.enforce(role, resource, action);

return Promise.resolve({
can,
});
},
};
and
import type { IResourceItem } from "@refinedev/core";

import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import { faCoffee, faCalendar } from "@fortawesome/free-solid-svg-icons";

export const resources: IResourceItem[] = [
{
name: "hello",
meta: {
icon: <FontAwesomeIcon icon={faCalendar} />,
},
}
]
I just want hello to be a parent menu item that doesn't route to anything. But it's not showing, if I change the name to "users" then it shows up in Sider.
Why, and how to implement this?
Was this page helpful?