import { createAuthMiddleware } from './createAuthMiddleware'; import { AuthMiddlewareConfig } from './types'; // Higher-order function for cleaner syntax export function withAuth(config?: AuthMiddlewareConfig) { return createAuthMiddleware(config || {}); } // Pre-configured middleware factories for common patterns export const requireAuth = withAuth(); export const requireAdmin = withAuth({ rules: [{ isAdmin: true }], }); export const requireSuperAdmin = withAuth({ rules: [{ isSuperAdmin: true }], }); export function requireRole(role: string | string[]) { return withAuth({ rules: [{ role }], }); } export function requireDepartment(department: string | string[]) { return withAuth({ rules: [{ department }], }); } export function requirePermission(permission: string | string[]) { return withAuth({ rules: [{ permission }], }); } // Advanced middleware with multiple rules export function requireAny(...rules: AuthMiddlewareConfig['rules']) { return withAuth({ rules: rules?.map(rule => ({ ...rule, requireAll: false })), }); } export function requireAll(...rules: AuthMiddlewareConfig['rules']) { return withAuth({ rules: rules?.map(rule => ({ ...rule, requireAll: true })), }); }