npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@osohq/express

v0.3.2

Published

The Oso SDK with Express integration provides helper functions to facilitate hooking Oso into the Express web framework.

Downloads

9

Readme

Oso SDK with Express integration

The Oso SDK with Express integration provides helper functions to facilitate hooking Oso into the Express web framework.

Please Note: The SDK is currently released as a developer preview. Do not use this SDK for production workloads.

Install

npm install --save @osohq/express
yarn add @osohq/express

Usage

The Oso SDK should be initialized as early as possible in the main entry module. The Oso SDK can be hooked into Express as a centralized middleware or as a route middleware using the enforce function.


import { init } from '@osohq/express';
import express from 'express';

const oso = init({
    apiKey: 'YOUR_API_KEY',
    // ...
})

const enforcement = {
  action: 'view',
  resourceType: 'Org',
  resourceId: '123',
};

// Centralized enforcement
app.use(oso.enforce(enforcement));

// Per-route enforcement
app.get('/', oso.enforce(enforcement), (_req, _res) => {
  // ...
});

app.listen(5678);

After the Oso SDK is initialized, you may access it by calling globalOso():

import { globalOso } from '@osohq/node';

oso = globalOso();

The Oso SDK may be further configured by setting relevant fields in the ConfigOptions object passed on init.

Integration Options

By default,

  • Actor ID is a hardcoded value of _. You may override the Actor ID using the setting defaultActorId when initializing the Oso SDK.
  • Action is inferred from the HTTP method. If you have a different set of permissions from the defaults, you may override the mapped value by setting defaultAction when initializing the Oso SDK.
  • HTTP 404 is returned on authorization failure. You may specify a custom error handler by setting defaultErrorHandler when initializing the Oso SDK.

User Identification

You may provide a function to determine the Actor Id by setting defaultActorId when initializing the Oso SDK.

import { init } from '@osohq/express';
import { Request } from 'express';

init({
  apiKey: 'YOUR_API_KEY',
  // Hardcode the actor Id to `admin`
  defaultActorId: (_req: Request) => 'admin',
});

Action Identification

You may provide a function to determine the action by setting defaultAction when initializing the Oso SDK.

import { init } from '@osohq/express';
import { Request } from 'express';

init({
  apiKey: 'YOUR_API_KEY',
  // Hardcode the action to `view`
  defaultAction: (_req: Request) => 'view',
});

Custom Error Handling

You can provide a function to determine the response on authorization failure.

import { init } from '@osohq/express';
import { Response, NextFunction } from 'express';

init({
  apiKey: 'YOUR_API_KEY',
  // Return HTTP 418 on authorization failure
  defaultErrorHandler: (res: Response, _next: NextFunction) => {
    res.send(418).send("I'm a teapot");
    return;
  },
});

Supported Versions

  • Express: 4.x