mirror of https://github.com/buster-so/buster.git
35 lines
933 B
TypeScript
35 lines
933 B
TypeScript
|
import {
|
||
|
BusterRoutes,
|
||
|
createBusterRoute,
|
||
|
isShareableAssetPage,
|
||
|
isPublicPage,
|
||
|
getEmbedAssetRedirect
|
||
|
} from '@/routes/busterRoutes';
|
||
|
import { User } from '@supabase/supabase-js';
|
||
|
import { NextResponse, type NextRequest } from 'next/server';
|
||
|
|
||
|
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;
|
||
|
};
|