Fixing an issue with incorrect jwts
authorDessalines <tyhou13@gmx.com>
Mon, 15 Mar 2021 20:54:17 +0000 (16:54 -0400)
committerDessalines <tyhou13@gmx.com>
Mon, 15 Mar 2021 20:54:17 +0000 (16:54 -0400)
src/server/index.tsx

index 748494cb0bc2689d8b67fd252bed827c4dc2fe32..0dcd164ace8a353f4dd87f07d8469e0120912c29 100644 (file)
@@ -12,7 +12,7 @@ import {
 } from "../shared/interfaces";
 import { routes } from "../shared/routes";
 import IsomorphicCookie from "isomorphic-cookie";
-import { GetSite, LemmyHttp } from "lemmy-js-client";
+import { GetSite, GetSiteResponse, LemmyHttp } from "lemmy-js-client";
 import process from "process";
 import { Helmet } from "inferno-helmet";
 import { initializeSite } from "../shared/initialize";
@@ -48,7 +48,18 @@ server.get("/*", async (req, res) => {
   };
 
   // Get site data first
-  let site = await initialFetchReq.client.getSite(getSiteForm);
+  // This bypasses errors, so that the client can hit the error on its own,
+  // in order to remove the jwt on the browser. Necessary for wrong jwts
+  let try_site: any = await initialFetchReq.client.getSite(getSiteForm);
+  if (try_site.error == "not_logged_in") {
+    console.error(
+      "Incorrect JWT token, skipping auth so frontend can remove jwt cookie"
+    );
+    delete getSiteForm.auth;
+    delete initialFetchReq.auth;
+    try_site = await initialFetchReq.client.getSite(getSiteForm);
+  }
+  let site: GetSiteResponse = try_site;
   initializeSite(site);
 
   if (activeRoute.fetchInitialData) {