Access Control Casbin for nulled menu item (Parents)
I have this:
import { newModel, StringAdapter } from "casbin";
export const model = newModel(
export const adapter = new StringAdapter(
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?
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?
