/* eslint-disable @typescript-eslint/naming-convention */ /* eslint-disable camelcase */ import { NextApiRequestCookies } from 'next/dist/server/api-utils'; import { out } from '@a2r/telemetry'; import { verify } from 'jsonwebtoken'; import { Team, User } from '../../model/user'; import serverSettings from '../../settings/server'; import { ApiMethods, ApiRoutes } from '../../model/api'; import authenticateRequest from '../api/authenticateRequest'; const getSSRUser = async ( cookies: NextApiRequestCookies, ): Promise => { const { dia_token } = cookies; if (!dia_token) { return undefined; } try { const { jwtKey } = serverSettings(); const user = verify(dia_token, jwtKey) as { id: string }; const apiInfo = await authenticateRequest( ApiMethods.Get, `${ApiRoutes.GetUser}/${user.id}`, ); const team = await authenticateRequest( ApiMethods.Get, `${ApiRoutes.GetTeams}/${apiInfo.data.team.id}`, ); apiInfo.data.team.score = apiInfo.data.team.score.reverse(); apiInfo.data.team.members = team.data.users.length; return apiInfo?.data; } catch (err) { out.error( `Error getting user info in SSR: ${err.stack || err.message || err}`, ); return undefined; } }; export default getSSRUser;