UNPKG

@brandazm/dynamic-permissions

Version:

A flexible and powerful permissions management system for NestJS applications with built-in security features

205 lines (157 loc) 4.5 kB
# NestJS Dynamic Permissions A flexible and powerful permissions management system for NestJS applications with built-in security features. ## Features ### Permission Management - Dynamic role-based access control (RBAC) - Fine-grained permission control - Role hierarchy support - Public routes configuration - Permission strategy (whitelist/blacklist) ### Security Features - Rate limiting protection - CORS configuration - Helmet security headers - Request validation - Multiple security templates (Basic, Strict, Enterprise) ### Configuration Management - Multiple configuration templates - Configuration publishing - Easy updates and migrations - TypeScript type definitions - Environment-specific settings ### Error Handling - Centralized error handling - Custom exception classes - Standardized error responses - Environment-specific error details ### Audit & Monitoring - Audit logging - Performance monitoring - Security event tracking - Detailed logging system ## Installation ```bash npm i @brandazm/dynamic-permissions ``` ## Quick Start ### 1. Initialize Configuration ```bash # Initialize with basic configuration npx nestjs-permissions init # Or use a specific template npx nestjs-permissions init -t advanced ``` ### 2. Module Setup ```typescript import { PermissionsModule } from '@brandazm/dynamic-permissions'; @Module({ imports: [ PermissionsModule.register() ] }) export class AppModule {} ``` ### 3. Apply Permissions ```typescript import { RequirePermission } from '@brandazm/dynamic-permissions'; @Controller('users') export class UserController { @RequirePermission(['user.read']) @Get() findAll() { return this.userService.findAll(); } } ``` ## Security Configuration ### 1. Initialize Security Settings ```bash # Publish security configuration npx nestjs-permissions publish-security-config # Use strict security template npx nestjs-permissions publish-security-config -t strict ``` ### 2. Available Security Templates - **Basic**: Essential security features - **Strict**: Enhanced security with stricter settings - **Enterprise**: Full-featured security for enterprise applications ### 3. Security Features ```typescript const securityConfig = { rateLimit: { enabled: true, windowMs: 15 * 60 * 1000, max: 100 }, cors: { enabled: true, allowedOrigins: ['https://your-domain.com'], allowedMethods: ['GET', 'POST'], allowedHeaders: ['Content-Type', 'Authorization'] }, helmet: { enabled: true, contentSecurityPolicy: true, // ... other security headers }, requestValidation: { maxBodySize: 10 * 1024 * 1024, requireJsonContent: true, validateContentType: true } }; ``` ## CLI Commands ### Configuration Management ```bash # Initialize project npx nestjs-permissions init # Publish configuration npx nestjs-permissions publish-config # Generate migration npx nestjs-permissions generate-migration # Validate configuration npx nestjs-permissions validate-config ``` ### Security Management ```bash # Publish security configuration npx nestjs-permissions publish-security-config # Update security settings npx nestjs-permissions update-security-config # List security templates npx nestjs-permissions list-security-templates ``` ## Documentation - [API Reference](docs/api-reference.md) - [Usage Examples](docs/usage-examples.md) - [Best Practices](docs/best-practices.md) - [Performance Tuning](docs/performance-tuning.md) - [Troubleshooting](docs/troubleshooting.md) ## Error Handling The package includes comprehensive error handling with custom exceptions: - `PermissionDeniedException` - `InvalidPermissionException` - `RoleNotFoundException` - `ConfigurationException` - `DatabaseException` - `MigrationException` - `CacheException` - `ValidationException` ## Contributing 1. Fork the repository 2. Create your feature branch (`git checkout -b feature/amazing-feature`) 3. Commit your changes (`git commit -m 'Add some amazing feature'`) 4. Push to the branch (`git push origin feature/amazing-feature`) 5. Open a Pull Request ## License This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details. ## Support For support and questions, please: - Check the [Troubleshooting Guide](docs/troubleshooting.md) - Open an issue on GitHub - Join our Discord community ## Acknowledgments - NestJS team for the amazing framework - Contributors who helped shape this package - Community feedback and support