UNPKG

@cerbos/react

Version:

A collection of React hooks for interacting with Cerbos policy decision points

52 lines 1.5 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useCerbos = useCerbos; const react_1 = require("react"); const cerbos_provider_1 = require("./cerbos-provider"); /** * A hook to access the Cerbos client passed down by the {@link CerbosProvider}. * * @remarks * The client's methods are asynchronous, so depending on your use case it may be easier to * use one of the higher-level hooks ({@link useCheckResource}, {@link useCheckResources}, or * {@link useIsAllowed}), which convert the resulting promises into {@link AsyncResult}s. * * * @example * ```typescript * 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>; * } * ``` * @public */ function useCerbos() { const value = (0, react_1.useContext)(cerbos_provider_1.CerbosContext); if (!value) { throw new Error("CerbosProvider not found"); } return value; } //# sourceMappingURL=use-cerbos.js.map