iamolegga / Nestjs Roles
Licence: mit
Type safe roles guard and decorator made easy
Stars: â 78
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
Bull
Bull module for Nest framework (node.js) đŽ
Stars: â 356 (+356.41%)
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
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].