mirror of https://github.com/buster-so/buster.git
35 lines
938 B
TypeScript
35 lines
938 B
TypeScript
import type { User } from '@supabase/supabase-js';
|
|
import { type NextRequest, NextResponse } from 'next/server';
|
|
import {
|
|
BusterRoutes,
|
|
createBusterRoute,
|
|
getEmbedAssetRedirect,
|
|
isPublicPage,
|
|
isShareableAssetPage
|
|
} from '@/routes/busterRoutes';
|
|
|
|
export const assetReroutes = async (
|
|
request: NextRequest,
|
|
response: NextResponse,
|
|
user: User | null
|
|
) => {
|
|
const userExists = !!user && !!user.id;
|
|
if (!userExists && !isPublicPage(request)) {
|
|
return NextResponse.redirect(
|
|
new URL(createBusterRoute({ route: BusterRoutes.AUTH_LOGIN }), request.url)
|
|
);
|
|
}
|
|
|
|
if (!userExists && isShareableAssetPage(request)) {
|
|
const redirect = getEmbedAssetRedirect(request);
|
|
if (redirect) {
|
|
return NextResponse.redirect(new URL(redirect, request.url));
|
|
}
|
|
return NextResponse.redirect(
|
|
new URL(createBusterRoute({ route: BusterRoutes.AUTH_LOGIN }), request.url)
|
|
);
|
|
}
|
|
|
|
return response;
|
|
};
|