actaeon/src/middleware.ts
2024-03-27 20:34:41 -04:00

25 lines
825 B
TypeScript

import { NextRequest, NextResponse } from 'next/server';
import { uncachedAuth } from '@/auth';
export const middleware = uncachedAuth((request: NextRequest) => {
const headers = new Headers(request.headers);
headers.set('x-path', request.nextUrl.basePath + request.nextUrl.pathname);
const options: ResponseInit & { request: { headers: Headers; }; } = {
request: { headers }
};
if (request.nextUrl.pathname === '/') {
const newUrl = request.nextUrl.clone();
newUrl.pathname = request.auth?.user?.homepage ?? '/dashboard';
return NextResponse.rewrite(newUrl, options);
}
if (request.nextUrl.pathname === '/forbidden')
options.status = 403;
else if (request.nextUrl.pathname === '/auth/login' && request.nextUrl.searchParams.get('error'))
options.status = 401;
return NextResponse.next(options);
});