@mamoorali295/rbac
Version:
Complete RBAC (Role-Based Access Control) system for Node.js with Express middleware, NestJS integration, GraphQL support, MongoDB & PostgreSQL support, modern admin dashboard, TypeScript support, and dynamic permission management
68 lines (67 loc) • 2.22 kB
TypeScript
/**
* @fileoverview Role-Based Access Control (RBAC) system for Node.js applications.
*
* This package provides a complete RBAC solution with:
* - Express middleware for authentication and authorization
* - NestJS decorators, guards, and modules for framework integration
* - GraphQL directives and resolvers for GraphQL APIs
* - Automatic permission inference from routes
* - Admin dashboard for user and role management
* - Multi-database support (MongoDB & PostgreSQL)
* - TypeScript support with full type definitions
*
* @author Muhammad Mamoor Ali - sheikh295
* @version 2.0.0
* @license MIT
*
* @example
* ```typescript
* // Express usage
* import { RBAC } from '@mamoorali295/rbac';
*
* RBAC.init({
* database: { type: 'mongodb', connection: mongoose.connection },
* authAdapter: async (req) => ({ user_id: req.user.id }),
* defaultRole: 'user'
* });
*
* app.get('/api/billing', RBAC.checkPermissions(), handler);
*
* // NestJS usage
* import { RbacModule, CheckPermissions, PermissionsGuard } from '@mamoorali295/rbac/nestjs';
*
* @Module({
* imports: [RbacModule.forRoot({ database: { type: 'mongodb', connection: mongooseConnection } })]
* })
* export class AppModule {}
*
* @Controller('billing')
* @UseGuards(PermissionsGuard)
* export class BillingController {
* @Get('invoices')
* @CheckPermissions()
* getInvoices() { ... }
* }
*
* // GraphQL usage
* import { AuthDirective, rbacResolvers } from '@mamoorali295/rbac/graphql';
*
* const server = new ApolloServer({
* typeDefs,
* resolvers: rbacResolvers,
* schemaDirectives: { auth: AuthDirective }
* });
* ```
*/
/** Main RBAC system instance */
export { RBAC } from './RBAC';
/** TypeScript type definitions */
export * from './types';
/** Database controllers for safe advanced operations */
export { userRoleController } from './mongo/controllers/userrole.controller';
export { featureController } from './mongo/controllers/feature.controller';
/** NestJS integration - Import from '@mamoorali295/rbac/nestjs' */
/** GraphQL integration - Import from '@mamoorali295/rbac/graphql' */
/** Default export - RBAC system instance */
import { RBAC } from './RBAC';
export default RBAC;