stratakit
Version:
stratakit - Meta-framework React puro con Auto Router automático, file-based routing, SEO automático y performance superior
88 lines (87 loc) • 2.37 kB
TypeScript
import { Route } from './types';
import { MiddlewareContext } from './middleware';
export interface GuardContext extends MiddlewareContext {
route: Route;
previousRoute?: Route;
navigationType: 'push' | 'replace' | 'back' | 'forward';
}
export interface GuardResult {
canActivate: boolean;
redirect?: string;
reason?: string;
data?: any;
}
export type GuardFunction = (context: GuardContext) => Promise<GuardResult> | GuardResult;
export declare class GuardManager {
private guards;
/**
* Registrar guard
*/
register(name: string, guard: GuardFunction): void;
/**
* Ejecutar guards para una ruta
*/
execute(route: Route, context: GuardContext): Promise<GuardResult>;
/**
* Obtener guard por nombre
*/
get(name: string): GuardFunction | undefined;
/**
* Listar todos los guards
*/
list(): string[];
/**
* Eliminar guard
*/
remove(name: string): boolean;
}
export declare const guardManager: GuardManager;
/**
* Guard de autenticación
*/
export declare const authGuard: GuardFunction;
/**
* Guard de autorización
*/
export declare const createPermissionGuard: (requiredPermissions: string[]) => GuardFunction;
/**
* Guard de roles
*/
export declare const createRoleGuard: (requiredRoles: string[]) => GuardFunction;
/**
* Guard de verificación de email
*/
export declare const emailVerificationGuard: GuardFunction;
/**
* Guard de términos y condiciones
*/
export declare const termsGuard: GuardFunction;
/**
* Guard de mantenimiento
*/
export declare const maintenanceGuard: GuardFunction;
/**
* Guard de país/región
*/
export declare const createCountryGuard: (allowedCountries: string[]) => GuardFunction;
/**
* Guard de horario
*/
export declare const createTimeGuard: (startHour: number, endHour: number) => GuardFunction;
/**
* Guard de dispositivo
*/
export declare const createDeviceGuard: (allowedDevices: ("mobile" | "tablet" | "desktop")[]) => GuardFunction;
/**
* Guard de versión de app
*/
export declare const createVersionGuard: (minVersion: string) => GuardFunction;
/**
* Guard de datos de usuario
*/
export declare const userDataGuard: GuardFunction;
/**
* Guard de suscripción
*/
export declare const createSubscriptionGuard: (requiredPlan: string) => GuardFunction;
export default guardManager;