UNPKG

skailan-core

Version:

Servicio de autenticación y multitenancy para Skailan.

74 lines 2.51 kB
import { Request, Response, NextFunction } from "express"; import { PrismaClient } from "@prisma/client"; export interface AuthenticatedRequest extends Request { user?: { id: string; email: string; name?: string; }; organization?: { id: string; name: string; slug: string; subdomain: string | null; domain: string | null; createdAt: Date; updatedAt: Date; deletedAt: Date | null; isBlocked: boolean; trialEnd?: Date; isTrialActive: boolean; paymentStatus: string; }; } export interface PaymentAccessOptions { requireActivePayment?: boolean; requireTrialOrPayment?: boolean; allowedFeatures?: string[]; checkUserLimits?: boolean; redirectToPayment?: boolean; } export declare class PaymentAccessMiddleware { private static instance; private prisma; private trialService; private productService; private constructor(); static getInstance(prisma: PrismaClient): PaymentAccessMiddleware; /** * Middleware principal para controlar acceso basado en pagos */ checkPaymentAccess(options?: PaymentAccessOptions): (req: AuthenticatedRequest, res: Response, next: NextFunction) => Promise<Response<any, Record<string, any>> | undefined>; /** * Middleware para verificar trial activo */ checkTrialAccess(): (req: AuthenticatedRequest, res: Response, next: NextFunction) => Promise<Response<any, Record<string, any>> | undefined>; /** * Middleware para verificar suscripción activa */ checkActiveSubscription(): (req: AuthenticatedRequest, res: Response, next: NextFunction) => Promise<Response<any, Record<string, any>> | undefined>; /** * Middleware para verificar características específicas */ checkFeatureAccess(featureCode: string): (req: AuthenticatedRequest, res: Response, next: NextFunction) => Promise<Response<any, Record<string, any>> | undefined>; /** * Verifica si la organización tiene una suscripción activa */ private hasActiveSubscription; /** * Verifica si la organización tiene acceso a las características especificadas */ private checkFeatures; /** * Verifica los límites de usuarios */ private checkUserLimits; } declare global { namespace Express { interface Request { trialStatus?: any; } } } //# sourceMappingURL=PaymentAccessMiddleware.d.ts.map