@medibloc/nestjs-oso
TypeScript icon, indicating that this package has built-in type declarations

1.0.1-m.2 • Public • Published

oso – Authorization code for NestJS

code style: prettier Commitizen friendly semantic-release Release

Language grade: JavaScript codecov Maintainability

oso is an open-source policy engine for authorization that’s embedded in your application. It provides a declarative policy language for expressing authorization logic. You define this logic separately from the rest of your application code, but it executes inside the application and can call directly into it.

nestjs-oso is a library that simplifies the implementation of oso with NestJS.

Features

  • @OsoClass decorator (automatically registers the class to use within Oso)
  • OsoService (a ready to use NestJS service)

Quickstart

▶ yarn add nestjs-oso oso
import { Module } from '@nestjs/common';
import { OsoModule } from 'nestjs-oso';

@Module({
  imports: [
    OsoModule.forRoot({
      loadFile: './permissions.polar',
    }),
  ],
})
export class AppModule {}

Tip: You don't have to apply either loadFile or loadStr. You can inject OsoService and access the original API for oso anytime!

Example

You can easily inject OsoService to be used in your services, controllers, etc.

import { Injectable } from '@nestjs/common';
import { OsoService } from 'nestjs-oso';

@Injectable()
export class AuthService {
  constructor(private oso: OsoService) {}
  /*
    Implementation that makes use of this.oso
  */
}

To register an class with oso, use the decorator:

import { OsoClass } from 'nestjs-oso';

@OsoClass()
export class User {
  id: string;
}

This will automatically be registered using registerClass function in oso.

Contribute & Disclaimer

We love to get help 🙏 Read more about how to get started in CONTRIBUTING 🌳

Readme

Keywords

none

Package Sidebar

Install

npm i @medibloc/nestjs-oso

Weekly Downloads

1

Version

1.0.1-m.2

License

Apache-2.0

Unpacked Size

25.6 kB

Total Files

25

Last publish

Collaborators

  • medibloc