All Projects â†’ iamolegga â†’ Nestjs Roles

iamolegga / Nestjs Roles

Licence: mit
Type safe roles guard and decorator made easy

Programming Languages

typescript
32286 projects

Projects that are alternatives of or similar to Nestjs Roles

Api
🏁🛠️ SaaS backend & API framework based on @nestjs
Stars: ✭ 390 (+400%)
Mutual labels:  nestjs, nest
Swagger
OpenAPI (Swagger) module for Nest framework (node.js) 🌎
Stars: ✭ 734 (+841.03%)
Mutual labels:  nestjs, nest
Docs.nestjs.cn
nestjs 中文文档
Stars: ✭ 393 (+403.85%)
Mutual labels:  nestjs, nest
Bull
Bull module for Nest framework (node.js) 🐮
Stars: ✭ 356 (+356.41%)
Mutual labels:  nestjs, nest
Nest Cli
CLI tool for Nest applications 🍹
Stars: ✭ 889 (+1039.74%)
Mutual labels:  nestjs, nest
Nest Schedule
A cron-like and not-cron-like job distributed scheduler for Nest.js by decorators.
Stars: ✭ 368 (+371.79%)
Mutual labels:  nestjs, nest
Graphql
GraphQL (TypeScript) module for Nest framework (node.js) 🍷
Stars: ✭ 697 (+793.59%)
Mutual labels:  nestjs, nest
Terminus
Terminus module for Nest framework (node.js) 🤖
Stars: ✭ 277 (+255.13%)
Mutual labels:  nestjs, nest
Nodepress
😎 RESTful API service for Blog/CMS, powered by @nestjs
Stars: ✭ 829 (+962.82%)
Mutual labels:  nestjs, nest
Typeorm
TypeORM module for Nest framework (node.js) 🍇
Stars: ✭ 807 (+934.62%)
Mutual labels:  nestjs, nest
Ng Universal
Angular Universal module for Nest framework (node.js) 🌷
Stars: ✭ 336 (+330.77%)
Mutual labels:  nestjs, nest
Php Casbin
An authorization library that supports access control models like ACL, RBAC, ABAC in PHP .
Stars: ✭ 865 (+1008.97%)
Mutual labels:  rbac, roles
Nest Angular
NestJS, Angular 6, Server Side Rendering (Angular Universal), GraphQL, JWT (JSON Web Tokens) and Facebook/Twitter/Google Authentication, Mongoose, MongoDB, Webpack, TypeScript
Stars: ✭ 307 (+293.59%)
Mutual labels:  nestjs, nest
Docs.nestjs.com
The official documentation https://docs.nestjs.com 📕
Stars: ✭ 389 (+398.72%)
Mutual labels:  nestjs, nest
Nestjs Pino
Platform agnostic logger for NestJS based on Pino with REQUEST CONTEXT IN EVERY LOG
Stars: ✭ 283 (+262.82%)
Mutual labels:  nestjs, nest
Nestjs Learning
nestjs 学习教程 📚,跟我一起学习 nest 框架~ 💪
Stars: ✭ 638 (+717.95%)
Mutual labels:  nestjs, nest
nest-blog
A simple blog server system build with Nest.
Stars: ✭ 22 (-71.79%)
Mutual labels:  nest, nestjs
nest-boilerplate
Nest.js boilerplate with CircleCI, Commitizen, Commitlint, Docker-Compose, ESLint, GitHub Actions, Husky, Lint-staged, OpenAPI, Prettier, PostGreSQL, Travis CI, TypeORM
Stars: ✭ 16 (-79.49%)
Mutual labels:  nest, nestjs
Ngx Permissions
Permission and roles based access control for your angular(angular 2,4,5,6,7,9+) applications(AOT, lazy modules compatible
Stars: ✭ 749 (+860.26%)
Mutual labels:  rbac, roles
Typescript Starter
Nest framework TypeScript starter ☕️
Stars: ✭ 853 (+993.59%)
Mutual labels:  nestjs, nest

nestjs-roles

npm Travis (.org) Coverage Status Supported platforms: Express & Fastify

Snyk Vulnerabilities for npm package Dependencies status Dependabot Maintainability

Type safe roles guard and decorator made easy. Just specify how you store role on context.

nestjs-roles will do the rest.

Install

npm i nestjs-roles

or

yarn add nestjs-roles

Example

First let's define roles:

// role.enum.ts

export enum Role {
  ADMIN = 'ADMIN',
  USER = 'USER',
  MODERATOR = 'MODERATOR',
}

Let's say you use nestjs-session and keep role in session property object of request. So then create guard with getRole callback:

// roles.guard.ts

import { ExecutionContext } from '@nestjs/common';
import { createRolesGuard } from 'nestjs-roles';
import { Role } from './role.enum';

function getRole(context: ExecutionContext) {
  const { session } = context.switchToHttp().getRequest();
  if (!session) {
    return;
  }
  return (session as { role?: Role }).role;
}

export const Roles = createRolesGuard<Role>(getRole);

After that we can set Roles guard globally (don't forget to pass Reflector instance):

// bootstrap.ts

import { NestFactory, Reflector } from '@nestjs/core';
import { Roles } from './roles.guard';

const app = await NestFactory.create(AppModule);

const reflector = app.get<Reflector>(Reflector);
app.useGlobalGuards(new Roles(reflector));

All settings are done. Now you can set up access in your controllers:

// secrets.controller.ts

import { Roles } from './roles.guard';

@Controller('secrets')
@Roles.Params(true) // setup access on Controller for users with any existing role
export class SecretsController {

  @Get('my')
  async readMy() {
    // ...
  }

  @Patch(':id')
  @Roles.Params(Role.ADMIN) // override access on certain handler
  async update() {
    // ...
  }
}
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].