0.7.0 • Published 11 months ago

@styra/opa-react v0.7.0

Weekly downloads
-
License
Apache-2.0
Repository
github
Last release
11 months ago

@styra/opa-react

License NPM Version

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!

0.7.0

11 months ago

0.6.1

12 months ago

0.6.0

12 months ago

0.5.1

12 months ago

0.5.0

1 year ago

0.4.0

1 year ago

0.3.2

1 year ago

0.3.1

1 year ago

0.3.0

1 year ago

0.2.1

1 year ago

0.2.0

1 year ago

0.1.0

1 year ago

0.0.4

1 year ago

0.0.3

1 year ago

0.0.2

1 year ago

0.0.1

1 year ago