X-Git-Url: http://these/git/?a=blobdiff_plain;f=src%2Fserver%2Fhandlers%2Fcatch-all-handler.tsx;h=a40136b2c32260a13fcdb6e7437de031959253c3;hb=dd42bc2a3dc75a33d20bb5b2f9dfbbfb7e12b153;hp=735c052c3e128f1643a75e4f85af5d3840659eee;hpb=213dadb6543f232999e428263f5ac534ba79d6ba;p=lemmy-ui.git diff --git a/src/server/handlers/catch-all-handler.tsx b/src/server/handlers/catch-all-handler.tsx index 735c052..a40136b 100644 --- a/src/server/handlers/catch-all-handler.tsx +++ b/src/server/handlers/catch-all-handler.tsx @@ -25,11 +25,15 @@ import { setForwardedHeaders } from "../utils/set-forwarded-headers"; export default async (req: Request, res: Response) => { try { const activeRoute = routes.find(route => matchPath(req.path, route)); - let auth = req.cookies ? cookie.parse(req.cookies).jwt : undefined; + + let auth = req.headers.cookie + ? cookie.parse(req.headers.cookie).jwt + : undefined; const getSiteForm: GetSite = { auth }; const headers = setForwardedHeaders(req.headers); + const client = wrapClient( new LemmyHttp(getHttpBaseInternal(), { fetchFunction: fetch, headers }) ); @@ -43,7 +47,8 @@ export default async (req: Request, res: Response) => { let routeData: RouteData = {}; let errorPageData: ErrorPageData | undefined = undefined; let try_site = await client.getSite(getSiteForm); - if (try_site.state === "failed" && try_site.msg == "not_logged_in") { + + if (try_site.state === "failed" && try_site.msg === "not_logged_in") { console.error( "Incorrect JWT token, skipping auth so frontend can remove jwt cookie" ); @@ -85,12 +90,13 @@ export default async (req: Request, res: Response) => { } const error = Object.values(routeData).find( - res => res.state === "failed" + res => res.state === "failed" && res.msg !== "couldnt_find_object" // TODO: find a better way of handling errors ) as FailedRequestState | undefined; // Redirect to the 404 if there's an API error if (error) { console.error(error.msg); + if (error.msg === "instance_is_private") { return res.redirect(`/signup`); } else { @@ -108,17 +114,18 @@ export default async (req: Request, res: Response) => { const wrapper = ( - + ); const root = renderToString(wrapper); - res.send(await createSsrHtml(root, isoData)); + res.send(await createSsrHtml(root, isoData, res.locals.cspNonce)); } catch (err) { // If an error is caught here, the error page couldn't even be rendered console.error(err); res.statusCode = 500; + return res.send( process.env.NODE_ENV === "development" ? err.message : "Server error" );