Template Library
Pre-built configuration templates and industry-specific presets for ngxsmk-gatekeeper.
Overview
The template library provides ready-to-use configurations for common scenarios:
- Basic Templates - Simple configurations for getting started
- Industry Templates - SaaS, E-commerce, API, etc.
- Security Templates - High-security configurations
- Compliance Templates - SOC2, ISO 27001 ready
Quick Start
typescript
import { TemplateLoader } from 'ngxsmk-gatekeeper/lib/templates';
const loader = createTemplateLoader();
const config = await loader.createConfig('basic', {
authPath: 'user.isAuthenticated',
onFail: '/login',
});
provideGatekeeper(config);Available Templates
Basic Templates
Basic Authentication
Simple template with authentication only.
typescript
const config = await loader.createConfig('basic', {
authPath: 'user.isAuthenticated',
onFail: '/login',
debug: false,
});Use cases:
- Simple applications
- Getting started
- Prototyping
Industry Templates
SaaS Application
Complete template for multi-tenant SaaS applications.
typescript
const config = await loader.createConfig('saas', {
authPath: 'user.isAuthenticated',
roles: ['user', 'admin'],
checkSubscription: true,
enableRateLimit: true,
enableAnalytics: true,
onFail: '/login',
});Features:
- Authentication
- Role-based access control
- Subscription checks
- Rate limiting
- Analytics
Use cases:
- Multi-tenant SaaS platforms
- Subscription-based applications
- Enterprise software
E-commerce Application
Template for e-commerce with payment protection.
typescript
const config = await loader.createConfig('ecommerce', {
authPath: 'user.isAuthenticated',
enableCSRF: true,
enableSession: true,
enableRateLimit: true,
onFail: '/login',
});Features:
- CSRF protection
- Authentication
- Session management
- Rate limiting
- Audit logging
Use cases:
- Online stores
- Shopping carts
- Payment processing
API Endpoints
Template for protecting API endpoints.
typescript
const config = await loader.createConfig('api', {
validateAPIKey: async (key) => {
return key === process.env['API_KEY'];
},
rateLimit: {
maxRequests: 1000,
windowMs: 60000,
},
enableValidation: true,
enableLogging: true,
onFail: '/api/unauthorized',
});Features:
- API key authentication
- Rate limiting
- Request validation
- Request logging
Use cases:
- REST APIs
- GraphQL endpoints
- Microservices
Security Templates
Maximum Security
High-security template with multiple protection layers.
typescript
const config = await loader.createConfig('security', {
authPath: 'user.isAuthenticated',
allowedIPs: ['10.0.0.0/8'],
rateLimit: {
maxRequests: 50,
windowMs: 60000,
},
accountLockout: {
maxAttempts: 5,
lockoutDuration: 900000,
},
sessionTimeout: 1800,
onFail: '/unauthorized',
});Features:
- IP filtering
- Rate limiting
- Account lockout
- CSRF protection
- Authentication
- Session management
- Zero trust mode
- Audit logging
- Compliance mode
Use cases:
- Financial applications
- Healthcare systems
- Government applications
- High-security enterprise
Compliance Templates
Compliance Ready
Template configured for SOC2, ISO 27001, and similar frameworks.
typescript
const config = await loader.createConfig('compliance', {
authPath: 'user.isAuthenticated',
roles: ['admin'],
logFormat: 'json',
logRetentionDays: 90,
compliancePolicy: 'SOC2-CC6.1',
onFail: '/unauthorized',
});Features:
- Authentication
- Role-based access
- Request logging
- Audit trails
- Execution traces
- Decision rationale
- Structured logging
Use cases:
- SOC2 compliance
- ISO 27001 compliance
- HIPAA compliance
- GDPR compliance
Using Templates
With Template Loader
typescript
import { createTemplateLoader } from 'ngxsmk-gatekeeper/lib/templates';
const loader = createTemplateLoader();
// Get template
const template = await loader.getTemplate('saas');
// Create configuration
const config = await loader.createConfig('saas', {
roles: ['user', 'admin'],
enableRateLimit: true,
});
// Use in application
provideGatekeeper(config);With Template Registry
typescript
import { TemplateRegistry } from 'ngxsmk-gatekeeper/lib/templates';
import { inject } from '@angular/core';
@Component({...})
export class AppComponent {
private registry = inject(TemplateRegistry);
async ngOnInit() {
// Search templates
const templates = this.registry.search('saas');
// Get by category
const saasTemplates = this.registry.getByCategory(TemplateCategory.SaaS);
// Create configuration
const config = await this.registry.createConfig('saas', {
roles: ['admin'],
});
}
}Direct Template Usage
typescript
import { createSaaSTemplate } from 'ngxsmk-gatekeeper/lib/templates';
const template = createSaaSTemplate();
const config = await template.factory({
roles: ['user', 'admin'],
enableRateLimit: true,
});
provideGatekeeper(config);Custom Templates
Creating Custom Templates
typescript
import { Template, TemplateCategory } from 'ngxsmk-gatekeeper/lib/templates';
const myTemplate: Template = {
metadata: {
id: 'my-custom-template',
name: 'My Custom Template',
description: 'Custom template for my use case',
category: TemplateCategory.Basic,
version: '1.0.0',
},
factory: async (options = {}) => {
return {
middlewares: [
// Your middleware configuration
],
onFail: '/login',
};
},
};
// Register template
registry.register(myTemplate);Template Categories
TemplateCategory.Basic- Basic templatesTemplateCategory.Enterprise- Enterprise templatesTemplateCategory.SaaS- SaaS applicationsTemplateCategory.ECommerce- E-commerceTemplateCategory.Admin- Admin panelsTemplateCategory.Public- Public applicationsTemplateCategory.API- API endpointsTemplateCategory.Security- Security-focusedTemplateCategory.Compliance- Compliance-ready
Best Practices
- Start with Basic - Use basic template to get started
- Customize as Needed - Templates are starting points, customize for your needs
- Use Industry Templates - Choose templates that match your industry
- Combine Templates - Mix and match middleware from different templates
- Validate Configuration - Use configuration validator after creating from template
Examples
SaaS Application
typescript
import { createTemplateLoader } from 'ngxsmk-gatekeeper/lib/templates';
const loader = createTemplateLoader();
const config = await loader.createConfig('saas', {
authPath: 'user.isAuthenticated',
roles: ['user', 'admin', 'superadmin'],
checkSubscription: true,
enableRateLimit: true,
enableAnalytics: true,
});
bootstrapApplication(AppComponent, {
providers: [
provideGatekeeper(config),
],
});E-commerce Store
typescript
const config = await loader.createConfig('ecommerce', {
authPath: 'customer.isAuthenticated',
enableCSRF: true,
enableSession: true,
enableRateLimit: true,
});
provideGatekeeper(config);API Service
typescript
const config = await loader.createConfig('api', {
validateAPIKey: async (key) => {
// Validate against database
return await validateKeyInDatabase(key);
},
rateLimit: {
maxRequests: 5000,
windowMs: 60000,
},
enableValidation: true,
enableLogging: true,
});
provideGatekeeper(config);