/// import { Request } from '@loopback/rest'; import { LoggerConfig, ValidatorService } from '../providers/validator.provider'; import { CorsConfig, ErrorResponseConfig, FileUploadConfig, LoggingConfig, SecurityHeadersConfig, SqlInjectionConfig, ValidationConfig, XssConfig } from '../types'; type SecurityValidationOptions = { skip?: boolean; skipOnError?: boolean; enableAllProtections?: boolean; logger?: LoggerConfig; validateBody?: boolean; validateQuery?: boolean; validateParams?: boolean; cors?: CorsConfig; validation?: ValidationConfig; headers?: SecurityHeadersConfig; sqlInjection?: SqlInjectionConfig; xss?: XssConfig; logging?: LoggingConfig; fileUpload?: FileUploadConfig; errorResponse?: ErrorResponseConfig; }; /** * LoopBack 4 Security validation decorator * Renamed from @validate to @securityValidation for better clarity * * For LoopBack 4, it's recommended to use interceptors instead * of this decorator for better integration with the framework. * * However, this decorator can still be used for method-level validation. * * Usage in LoopBack 4 controller: * ```typescript * export class UserController { * constructor( * @inject(RestBindings.Http.REQUEST) private request: Request, * ) {} * * @securityValidation() * @post('/users') * async createUser( * @requestBody() userData: CreateUserRequest, * ): Promise { * // Security validation happens automatically before this method executes * return this.userService.create(userData); * } * } * ``` * * @param options - Comprehensive security validation options * @returns Method decorator function */ export declare function securityValidation(options?: SecurityValidationOptions): (target: unknown, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor; /** * Legacy decorator name for backward compatibility * @deprecated Use @securityValidation instead */ export declare function validate(options?: SecurityValidationOptions): (target: unknown, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor; /** * Comprehensive security validation decorator with all security checks enabled */ export declare function comprehensiveSecurity(options?: Omit): (target: unknown, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor; /** * Body-only security validation decorator */ export declare function bodySecurityValidation(options?: Omit): (target: unknown, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor; /** * Query-only security validation decorator */ export declare function querySecurityValidation(options?: Omit): (target: unknown, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor; /** * Parameters-only security validation decorator */ export declare function paramsSecurityValidation(options?: Omit): (target: unknown, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor; /** * SQL Injection protection only decorator */ export declare function sqlInjectionProtection(options?: Pick): (target: unknown, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor; /** * XSS protection only decorator */ export declare function xssProtection(options?: Pick): (target: unknown, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor; /** * File upload validation decorator */ export declare function fileUploadValidation(options?: Pick): (target: unknown, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor; /** * Security validation interceptor class for LoopBack 4 * This is the recommended approach for LoopBack 4 applications */ export declare class SecurityValidationInterceptor { private validator; constructor(); /** * Intercept and validate requests */ intercept(request: Request): Promise; /** * Get validator instance for direct use */ getValidator(): ValidatorService; } export type { LoggerConfig, SecurityValidationOptions };