@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
Markdown
# 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