prisma-zod-generator
Version:
Prisma 2+ generator to emit Zod schemas from your Prisma schema
114 lines (113 loc) • 3.51 kB
TypeScript
/**
* Business Logic Security Utilities
*
* Comprehensive protection against business logic vulnerabilities
* including authorization bypasses, privilege escalation, and data leakage
*/
import { LicenseInfo } from '../license';
export interface SecurityContext {
userId: string;
roles: string[];
tenantId?: string;
permissions: string[];
sessionId: string;
isAdmin: boolean;
licenseInfo?: LicenseInfo;
}
export interface AuthorizationRule {
resource: string;
action: string;
requiredRoles?: string[];
requiredPermissions?: string[];
customValidator?: (context: SecurityContext, resource: any) => boolean;
tenantIsolation?: boolean;
}
export declare class BusinessSecurityError extends Error {
readonly errorType: 'authorization' | 'tenant_isolation' | 'privilege_escalation' | 'data_leakage';
readonly context?: Record<string, unknown> | undefined;
constructor(message: string, errorType: 'authorization' | 'tenant_isolation' | 'privilege_escalation' | 'data_leakage', context?: Record<string, unknown> | undefined);
}
/**
* Business Logic Security Manager
*/
export declare class BusinessSecurity {
private authorizationRules;
private sensitiveFields;
private auditLog;
constructor();
/**
* Validate feature access with comprehensive checks
*/
validateFeatureAccess(feature: string, license: LicenseInfo | null, context: SecurityContext): {
allowed: boolean;
reason?: string;
};
/**
* Strict tenant isolation validation
*/
validateTenantIsolation(data: any, context: SecurityContext, tenantField?: string): {
isolated: boolean;
reason?: string;
};
/**
* Comprehensive authorization check
*/
authorize(context: SecurityContext, resource: string, action: string, data?: any): {
authorized: boolean;
reason?: string;
};
/**
* Sanitize data to prevent information leakage
*/
sanitizeData(data: any, context: SecurityContext): any;
/**
* Validate dashboard permissions securely
*/
validateDashboardAccess(dashboard: any, context: SecurityContext): {
allowed: boolean;
reason?: string;
};
/**
* Secure dashboard creation with permission validation
*/
validateDashboardCreation(dashboardConfig: any, context: SecurityContext): {
allowed: boolean;
reason?: string;
sanitizedConfig?: any;
};
/**
* Get audit log for security monitoring
*/
getAuditLog(filter?: {
userId?: string;
action?: string;
resource?: string;
startDate?: Date;
endDate?: Date;
allowedOnly?: boolean;
}): Array<{
timestamp: Date;
userId: string;
action: string;
resource: string;
allowed: boolean;
reason?: string;
}>;
private initializeDefaultRules;
private initializeSensitiveFields;
private getFeaturePlans;
private getMinimumPlan;
private describePlan;
private validateSecurityContext;
private isSensitiveField;
}
/**
* Global business security instance
*/
export declare const businessSecurity: BusinessSecurity;
/**
* Decorator for securing business logic methods
*/
export declare function secureBusinessLogic(resource: string, action: string, options?: {
tenantIsolation?: boolean;
}): (target: any, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor;