The client's methods are asynchronous, so depending on your use case it may be easier to use one of the higher-level hooks (useCheckResource, useCheckResources, or useIsAllowed), which convert the resulting promises into AsyncResults.
import { useCerbos } from "@cerbos/react";
function SomeComponent() {
const cerbos = useCerbos();
const handleClick = async () => {
const decision = await cerbos.checkResource({
resource: {
kind: "document",
id: "1",
attr: { owner: "user@example.com" },
},
actions: ["view", "edit"],
});
if (decision.allAllowed()) {
// do something
} else if (decision.allowedActions().includes("view")) {
// do something else
}
...
};
return <button onClick={handleClick}>...</button>;
}
A hook to access the Cerbos client passed down by the CerbosProvider.