mirror of
https://github.com/Portabase/portabase.git
synced 2026-07-14 11:16:13 +02:00
39 lines
1.6 KiB
TypeScript
39 lines
1.6 KiB
TypeScript
import {NextRequest, NextResponse} from 'next/server'
|
|
import {loggingMiddleware} from "@/middleware/loggingMiddleware";
|
|
import {errorHandler} from "@/middleware/errorHandler";
|
|
|
|
export function middleware(request: NextRequest) {
|
|
const url = request.nextUrl.clone();
|
|
if (url.pathname.startsWith('/api')) {
|
|
const routeExists = checkRouteExists(url.pathname);
|
|
// If the route does not exist, return a 404 JSON response
|
|
if (!routeExists) {
|
|
return new NextResponse(
|
|
JSON.stringify({ message: "This API route does not exist.", status: 404 }),
|
|
{ status: 404, headers: { 'Content-Type': 'application/json' } }
|
|
);
|
|
}
|
|
}
|
|
try{
|
|
loggingMiddleware(request);
|
|
}catch(err){
|
|
errorHandler(err)
|
|
}
|
|
|
|
|
|
}
|
|
// Function to check if the route exists (supports dynamic routes)
|
|
function checkRouteExists(pathname) {
|
|
// Define static and dynamic routes with patterns
|
|
const routePatterns = [
|
|
//do not delete
|
|
// /^\/api\/auth\/\d+$/, // Dynamic route with a number as a parameter (e.g., /api/dynamic/123)
|
|
// /^\/api\/auth\/\w+$/, // Dynamic route with a number as a parameter (e.g., /api/dynamic/123)
|
|
// /^\/api\/agent\/healthcheck\/\w+$/, // Dynamic route with an alphanumeric parameter (e.g., /api/user/username)
|
|
/^\/api\/agent\/[^/]+\/status\/?$/, // Dynamic route for /api/agent/[id]/status
|
|
];
|
|
return routePatterns.some(pattern => pattern.test(pathname));
|
|
}
|
|
export const config = {
|
|
matcher: ['/api/agent/:path*'],
|
|
}; |