43 lines
1.3 KiB
TypeScript
43 lines
1.3 KiB
TypeScript
import { NextResponse } from 'next/server';
|
|
import type { NextRequest } from 'next/server';
|
|
|
|
export const config = {
|
|
matcher: [
|
|
'/((?!api|_next/static|_next/image|favicon.ico|sitemap.xml|robots.txt).*)',
|
|
],
|
|
};
|
|
|
|
export function middleware(req: NextRequest) {
|
|
const url = req.nextUrl;
|
|
const hostname = req.headers.get('host') || '';
|
|
|
|
// Determine which subdomain we are on
|
|
const isAdmin = hostname.includes('admin.armoreg.com') || hostname.startsWith('admin.localhost');
|
|
const isPanel = hostname.includes('panel.armoreg.com') || hostname.startsWith('panel.localhost');
|
|
|
|
// Simple authentication check via cookie (to be expanded later)
|
|
const isAuthenticated = req.cookies.has('auth_token');
|
|
const isLoginPage = url.pathname === '/login';
|
|
|
|
// If not authenticated and not on login page, redirect to login
|
|
if (!isAuthenticated && !isLoginPage) {
|
|
return NextResponse.redirect(new URL('/login', req.url));
|
|
}
|
|
|
|
// If authenticated and on login page, redirect to root
|
|
if (isAuthenticated && isLoginPage) {
|
|
return NextResponse.redirect(new URL('/', req.url));
|
|
}
|
|
|
|
// Rewrite to the appropriate folder inside /app
|
|
if (isAdmin) {
|
|
return NextResponse.rewrite(new URL(`/admin${url.pathname}`, req.url));
|
|
}
|
|
|
|
if (isPanel) {
|
|
return NextResponse.rewrite(new URL(`/panel${url.pathname}`, req.url));
|
|
}
|
|
|
|
return NextResponse.next();
|
|
}
|