@styra/opa-react
v0.7.0
Published
Styra-supported React hooks and components for frontend authorization based on @styra/opa
Downloads
2,066
Readme
@styra/opa-react
This package contains helpers for using @styra/opa from React.
Features
- High-level, declarative components for embedding authorization decisions in your frontend code.
- Built-in caching, deduplication, and state management based on
@tanstack/react-query
. - Optional request batching for backends that support it (Enterprise OPA, or your own implementation of the Batch API).
Details
The package provides an useAuthz
hook and a high-level <Authz>
component.
They are enabled by wrapping your App into <AuthzProvider>
:
<AuthzProvider opaClient={opaClient} defaultPath="policy" defaultInput={{ user, tenant }}>
<Nav />
<Outlet />
</AuthzProvider>
This example provides a previously-configured opaClient
instance (OPAClient
from @styra/opa
), a request path, and default input (which is merged with per-call inputs).
They can either be used by providing static children (<button>Press Here</button>
) and optionally fallback
and loading
JSX elements:
<Authz
path={path}
input={input}
loading={<div>...</div>}
fallback={<button disabled={true}>Press Here</button>}>
<button>Press Here</button>
</Authz>
The useAuthz
hook can be used if you need more low-level control about the authorization call.
Furthermore, you can retrieve the prepared opaClient
instance of AuthzProvider
for even more control, if need be:
import { AuthzContext } from "@styra/opa-react";
export default function Component() {
const { opaClient } = useContext(AuthzContext);
// now you can use `opaClient.evaluate()` etc directly
}
Community
For questions, discussions and announcements related to Styra products, services and open source projects, please join the Styra community on Slack!