From 88633eeb4cad777be138012aeecdf30bf556a350 Mon Sep 17 00:00:00 2001 From: Jonathan Barrow Date: Tue, 3 Oct 2023 13:34:13 -0400 Subject: [PATCH] ignore token for WWP --- src/middleware/auth.ts | 5 +++ src/services/api/routes/topics.ts | 55 ++++++++++++++++--------------- 2 files changed, 34 insertions(+), 26 deletions(-) diff --git a/src/middleware/auth.ts b/src/middleware/auth.ts index 3205b79..73bcbfd 100644 --- a/src/middleware/auth.ts +++ b/src/middleware/auth.ts @@ -29,6 +29,11 @@ async function auth(request: express.Request, response: express.Response, next: return next(); } + // * Just don't care about the token here + if (request.path === '/v1/topics') { + return next(); + } + let encryptedToken = getValueFromHeaders(request.headers, 'x-nintendo-servicetoken'); if (!encryptedToken) { encryptedToken = getValueFromHeaders(request.headers, 'olive service token'); diff --git a/src/services/api/routes/topics.ts b/src/services/api/routes/topics.ts index 5869fa5..f559f21 100644 --- a/src/services/api/routes/topics.ts +++ b/src/services/api/routes/topics.ts @@ -1,14 +1,10 @@ import express from 'express'; import moment from 'moment'; import xmlbuilder from 'xmlbuilder'; -import { GetUserDataResponse } from '@pretendonetwork/grpc/account/get_user_data_rpc'; -import { getUserAccountData } from '@/util'; import Cache from '@/cache'; -import { getEndpoint } from '@/database'; import { Post } from '@/models/post'; import { Community } from '@/models/community'; import { IPost } from '@/types/mongoose/post'; -import { HydratedEndpointDocument } from '@/types/mongoose/endpoint'; import { HydratedCommunityDocument } from '@/types/mongoose/community'; import { WWPResult, WWPTopic } from '@/types/miiverse/wara-wara-plaza'; @@ -20,28 +16,35 @@ const WARA_WARA_PLAZA_CACHE = new Cache(ONE_HOUR); router.get('/', async function (request: express.Request, response: express.Response): Promise { response.type('application/xml'); - let user: GetUserDataResponse; - - try { - user = await getUserAccountData(request.pid); - } catch (error) { - // TODO - Log this error - response.sendStatus(403); - return; - } - - let discovery: HydratedEndpointDocument | null; - - if (user) { - discovery = await getEndpoint(user.serverAccessLevel); - } else { - discovery = await getEndpoint('prod'); - } - - if (!discovery || !discovery.topics) { - response.sendStatus(404); - return; - } + // * Commented out for now because we just don't + // * need this data here. WWP does not use the + // * current users data atm. Also some users have + // * BOSS tasks with outdated tokens, which aren't + // * usable and thus break this request. This is + // * done as a quick/hacky fix around that + // TODO - Re-enable this and filter out the current users posts + //let user: GetUserDataResponse; + // + //try { + // user = await getUserAccountData(request.pid); + //} catch (error) { + // // TODO - Log this error + // response.sendStatus(403); + // return; + //} + // + //let discovery: HydratedEndpointDocument | null; + // + //if (user) { + // discovery = await getEndpoint(user.serverAccessLevel); + //} else { + // discovery = await getEndpoint('prod'); + //} + // + //if (!discovery || !discovery.topics) { + // response.sendStatus(404); + // return; + //} if (!WARA_WARA_PLAZA_CACHE.valid()) { const communities = await calculateMostPopularCommunities(24, 10);