diff --git a/src/database.ts b/src/database.ts index a73ced4..33319c8 100644 --- a/src/database.ts +++ b/src/database.ts @@ -43,7 +43,7 @@ export function verifyConnected(): void { } } -export async function getUserByUsername(username: string): Promise { +export async function getPNIDByUsername(username: string): Promise { verifyConnected(); return await PNID.findOne({ @@ -51,7 +51,7 @@ export async function getUserByUsername(username: string): Promise { +export async function getPNIDByPID(pid: number): Promise { verifyConnected(); return await PNID.findOne({ @@ -59,7 +59,7 @@ export async function getUserByPID(pid: number): Promise { +export async function getPNIDByEmailAddress(email: string): Promise { verifyConnected(); // TODO - Update documents to store email normalized @@ -68,13 +68,13 @@ export async function getUserByEmailAddress(email: string): Promise { +export async function doesPNIDExist(username: string): Promise { verifyConnected(); - return !!await getUserByUsername(username); + return !!await getPNIDByUsername(username); } -export async function getUserBasic(token: string): Promise { +export async function getPNIDByBasicAuth(token: string): Promise { verifyConnected(); // * Wii U sends Basic auth as `username password`, where the password may not have spaces @@ -85,7 +85,7 @@ export async function getUserBasic(token: string): Promise { +export async function getPNIDByBearerAuth(token: string): Promise { verifyConnected(); try { const decryptedToken: Buffer = await decryptToken(Buffer.from(token, 'base64')); const unpackedToken: Token = unpackToken(decryptedToken); - const pnid: HydratedPNIDDocument | null = await getUserByPID(unpackedToken.pid); + const pnid: HydratedPNIDDocument | null = await getPNIDByPID(unpackedToken.pid); if (pnid) { const expireTime: number = Math.floor((Number(unpackedToken.expire_time) / 1000)); @@ -125,10 +125,10 @@ export async function getUserBearer(token: string): Promise { +export async function getPNIDProfileJSONByPID(pid: number): Promise { verifyConnected(); - const pnid: HydratedPNIDDocument | null = await getUserByPID(pid); + const pnid: HydratedPNIDDocument | null = await getPNIDByPID(pid); if (!pnid) { return null; @@ -208,7 +208,7 @@ export async function getUserProfileJSONByPID(pid: number): Promise { +export async function getServerByGameServerId(gameServerId: string, accessMode: string): Promise { return await Server.findOne({ game_server_id: gameServerId, access_mode: accessMode @@ -222,13 +222,13 @@ export async function getServerByTitleId(titleId: string, accessMode: string): P }); } -export async function addUserConnection(pnid: HydratedPNIDDocument, data: ConnectionData, type: string): Promise { +export async function addPNIDConnection(pnid: HydratedPNIDDocument, data: ConnectionData, type: string): Promise { if (type === 'discord') { - return await addUserConnectionDiscord(pnid, data); + return await addPNIDConnectionDiscord(pnid, data); } } -export async function addUserConnectionDiscord(pnid: HydratedPNIDDocument, data: DiscordConnectionData): Promise { +export async function addPNIDConnectionDiscord(pnid: HydratedPNIDDocument, data: DiscordConnectionData): Promise { const valid: joi.ValidationResult = discordConnectionSchema.validate(data); if (valid.error) { @@ -251,7 +251,7 @@ export async function addUserConnectionDiscord(pnid: HydratedPNIDDocument, data: }; } -export async function removeUserConnection(pnid: HydratedPNIDDocument, type: string): Promise { +export async function removePNIDConnection(pnid: HydratedPNIDDocument, type: string): Promise { // * Add more connections later? if (type === 'discord') { return await removeUserConnectionDiscord(pnid); diff --git a/src/middleware/api.ts b/src/middleware/api.ts index c47af01..8645559 100644 --- a/src/middleware/api.ts +++ b/src/middleware/api.ts @@ -1,6 +1,6 @@ import express from 'express'; import { getValueFromHeaders } from '@/util'; -import { getUserBearer } from '@/database'; +import { getPNIDByBearerAuth } from '@/database'; import { HydratedPNIDDocument } from '@/types/mongoose/pnid'; async function APIMiddleware(request: express.Request, _response: express.Response, next: express.NextFunction): Promise { @@ -11,7 +11,7 @@ async function APIMiddleware(request: express.Request, _response: express.Respon } const token: string = authHeader.split(' ')[1]; - const pnid: HydratedPNIDDocument | null = await getUserBearer(token); + const pnid: HydratedPNIDDocument | null = await getPNIDByBearerAuth(token); request.pnid = pnid; diff --git a/src/middleware/pnid.ts b/src/middleware/pnid.ts index d8b955d..3ab6d96 100644 --- a/src/middleware/pnid.ts +++ b/src/middleware/pnid.ts @@ -1,7 +1,7 @@ import express from 'express'; import xmlbuilder from 'xmlbuilder'; import { getValueFromHeaders } from '@/util'; -import { getUserBasic, getUserBearer } from '@/database'; +import { getPNIDByBasicAuth, getPNIDByBearerAuth } from '@/database'; import { HydratedPNIDDocument } from '@/types/mongoose/pnid'; async function PNIDMiddleware(request: express.Request, response: express.Response, next: express.NextFunction): Promise { @@ -21,9 +21,9 @@ async function PNIDMiddleware(request: express.Request, response: express.Respon } if (type === 'Basic') { - pnid = await getUserBasic(token); + pnid = await getPNIDByBasicAuth(token); } else { - pnid = await getUserBearer(token); + pnid = await getPNIDByBearerAuth(token); } if (!pnid) { diff --git a/src/services/api/routes/v1/connections.ts b/src/services/api/routes/v1/connections.ts index a828c2d..5bf79b4 100644 --- a/src/services/api/routes/v1/connections.ts +++ b/src/services/api/routes/v1/connections.ts @@ -1,5 +1,5 @@ import express from 'express'; -import { addUserConnection, removeUserConnection } from '@/database'; +import { addPNIDConnection, removePNIDConnection } from '@/database'; import { ConnectionData } from '@/types/services/api/connection-data'; import { ConnectionResponse } from '@/types/services/api/connection-response'; import { HydratedPNIDDocument } from '@/types/mongoose/pnid'; @@ -44,7 +44,7 @@ router.post('/add/:type', async (request: express.Request, response: express.Res }); } - let result: ConnectionResponse | undefined = await addUserConnection(pnid, data, type); + let result: ConnectionResponse | undefined = await addPNIDConnection(pnid, data, type); if (!result) { result = { @@ -82,7 +82,7 @@ router.delete('/remove/:type', async (request: express.Request, response: expres }); } - let result: ConnectionResponse | undefined = await removeUserConnection(pnid, type); + let result: ConnectionResponse | undefined = await removePNIDConnection(pnid, type); if (!result) { result = { diff --git a/src/services/api/routes/v1/forgotPassword.ts b/src/services/api/routes/v1/forgotPassword.ts index bfc6d61..1cb3283 100644 --- a/src/services/api/routes/v1/forgotPassword.ts +++ b/src/services/api/routes/v1/forgotPassword.ts @@ -1,6 +1,6 @@ import express from 'express'; import validator from 'validator'; -import { getUserByEmailAddress, getUserByUsername } from '@/database'; +import { getPNIDByEmailAddress, getPNIDByUsername } from '@/database'; import { sendForgotPasswordEmail } from '@/util'; import { HydratedPNIDDocument } from '@/types/mongoose/pnid'; @@ -20,9 +20,9 @@ router.post('/', async (request: express.Request, response: express.Response) => let pnid: HydratedPNIDDocument | null; if (validator.isEmail(input)) { - pnid = await getUserByEmailAddress(input); + pnid = await getPNIDByEmailAddress(input); } else { - pnid = await getUserByUsername(input); + pnid = await getPNIDByUsername(input); } if (pnid) { diff --git a/src/services/api/routes/v1/login.ts b/src/services/api/routes/v1/login.ts index ff36efa..61fcac9 100644 --- a/src/services/api/routes/v1/login.ts +++ b/src/services/api/routes/v1/login.ts @@ -1,7 +1,7 @@ import express from 'express'; import bcrypt from 'bcrypt'; import fs from 'fs-extra'; -import { getUserByUsername, getUserBearer } from '@/database'; +import { getPNIDByUsername, getPNIDByBearerAuth } from '@/database'; import { getServicePublicKey, getServiceSecretKey } from '@/cache'; import { nintendoPasswordHash, generateToken} from '@/util'; import { CryptoOptions } from '@/types/common/crypto-options'; @@ -57,7 +57,7 @@ router.post('/', async (request: express.Request, response: express.Response) => let pnid: HydratedPNIDDocument | null; if (grantType === 'password') { - pnid = await getUserByUsername(username); + pnid = await getPNIDByUsername(username); if (!pnid) { return response.status(400).json({ @@ -77,7 +77,7 @@ router.post('/', async (request: express.Request, response: express.Response) => }); } } else { - pnid = await getUserBearer(refreshToken); + pnid = await getPNIDByBearerAuth(refreshToken); if (!pnid) { return response.status(400).json({ diff --git a/src/services/api/routes/v1/register.ts b/src/services/api/routes/v1/register.ts index ca61d96..2487ae2 100644 --- a/src/services/api/routes/v1/register.ts +++ b/src/services/api/routes/v1/register.ts @@ -8,7 +8,7 @@ import moment from 'moment'; import hcaptcha from 'hcaptcha'; import Mii from 'mii-js'; import mongoose from 'mongoose'; -import { doesUserExist, connection as databaseConnection } from '@/database'; +import { doesPNIDExist, connection as databaseConnection } from '@/database'; import { getServicePublicKey, getServiceSecretKey } from '@/cache'; import { nintendoPasswordHash, sendConfirmationEmail, generateToken } from '@/util'; import { LOG_ERROR } from '@/logger'; @@ -141,7 +141,7 @@ router.post('/', async (request: express.Request, response: express.Response) => }); } - const userExists: boolean = await doesUserExist(username); + const userExists: boolean = await doesPNIDExist(username); if (userExists) { return response.status(400).json({ diff --git a/src/services/nnid/routes/oauth.ts b/src/services/nnid/routes/oauth.ts index 559329b..867f93d 100644 --- a/src/services/nnid/routes/oauth.ts +++ b/src/services/nnid/routes/oauth.ts @@ -2,7 +2,7 @@ import express from 'express'; import xmlbuilder from 'xmlbuilder'; import bcrypt from 'bcrypt'; import fs from 'fs-extra'; -import { getUserByUsername } from '@/database'; +import { getPNIDByUsername } from '@/database'; import { generateToken } from '@/util'; import { TokenOptions } from '@/types/common/token-options'; import { HydratedPNIDDocument } from '@/types/mongoose/pnid'; @@ -52,7 +52,7 @@ router.post('/access_token/generate', async (request: express.Request, response: }).end()); } - const pnid: HydratedPNIDDocument | null = await getUserByUsername(username); + const pnid: HydratedPNIDDocument | null = await getPNIDByUsername(username); if (!pnid || !await bcrypt.compare(password, pnid.password)) { response.status(400); diff --git a/src/services/nnid/routes/people.ts b/src/services/nnid/routes/people.ts index 6d5cc5d..8f48453 100644 --- a/src/services/nnid/routes/people.ts +++ b/src/services/nnid/routes/people.ts @@ -6,7 +6,7 @@ import moment from 'moment'; import mongoose from 'mongoose'; import deviceCertificateMiddleware from '@/middleware/device-certificate'; import ratelimit from '@/middleware/ratelimit'; -import { connection as databaseConnection, doesUserExist, getUserProfileJSONByPID } from '@/database'; +import { connection as databaseConnection, doesPNIDExist, getPNIDProfileJSONByPID } from '@/database'; import { getValueFromHeaders, nintendoPasswordHash, sendConfirmationEmail } from '@/util'; import { PNID } from '@/models/pnid'; import { NEXAccount } from '@/models/nex-account'; @@ -31,7 +31,7 @@ const router: express.Router = express.Router(); router.get('/:username', async (request: express.Request, response: express.Response) => { const username: string = request.params.username; - const userExists: boolean = await doesUserExist(username); + const userExists: boolean = await doesPNIDExist(username); if (userExists) { response.status(400); @@ -72,7 +72,7 @@ router.post('/', ratelimit, deviceCertificateMiddleware, async (request: express // * request.body is a Map, as is request.body.person const person: Person = request.body.get('person'); - const userExists: boolean = await doesUserExist(person.get('user_id')); + const userExists: boolean = await doesPNIDExist(person.get('user_id')); if (userExists) { response.status(400); @@ -238,7 +238,7 @@ router.get('/@me/profile', async (request: express.Request, response: express.Re }).end()); } - const person: PNIDProfile | null = await getUserProfileJSONByPID(pnid.pid); + const person: PNIDProfile | null = await getPNIDProfileJSONByPID(pnid.pid); if (!person) { // TODO - Research this error more @@ -289,7 +289,7 @@ router.post('/@me/devices', async (request: express.Request, response: express.R }).end()); } - const person: PNIDProfile | null = await getUserProfileJSONByPID(pnid.pid); + const person: PNIDProfile | null = await getPNIDProfileJSONByPID(pnid.pid); if (!person) { // TODO - Research this error more @@ -399,7 +399,7 @@ router.get('/@me/devices/owner', async (request: express.Request, response: expr }).end()); } - const person: PNIDProfile | null = await getUserProfileJSONByPID(pnid.pid); + const person: PNIDProfile | null = await getPNIDProfileJSONByPID(pnid.pid); if (!person) { // TODO - Research this error more diff --git a/src/services/nnid/routes/provider.ts b/src/services/nnid/routes/provider.ts index 560380b..93633c7 100644 --- a/src/services/nnid/routes/provider.ts +++ b/src/services/nnid/routes/provider.ts @@ -1,7 +1,7 @@ import express from 'express'; import xmlbuilder from 'xmlbuilder'; import fs from 'fs-extra'; -import { getServerByTitleId, getServer } from '@/database'; +import { getServerByTitleId, getServerByGameServerId } from '@/database'; import { generateToken, getValueFromHeaders, getValueFromQueryString } from '@/util'; import { getServicePublicKey, getServiceSecretKey, getNEXPublicKey, getNEXSecretKey } from '@/cache'; import { NEXAccount } from '@/models/nex-account'; @@ -148,7 +148,7 @@ router.get('/nex_token/@me', async (request: express.Request, response: express. } const serverAccessLevel: string = pnid.server_access_level; - const server: HydratedServerDocument | null = await getServer(gameServerID, serverAccessLevel); + const server: HydratedServerDocument | null = await getServerByGameServerId(gameServerID, serverAccessLevel); if (!server) { return response.send(xmlbuilder.create({ diff --git a/src/services/nnid/routes/support.ts b/src/services/nnid/routes/support.ts index dfb8eec..a8e4811 100644 --- a/src/services/nnid/routes/support.ts +++ b/src/services/nnid/routes/support.ts @@ -2,7 +2,7 @@ import dns from 'node:dns'; import express from 'express'; import xmlbuilder from 'xmlbuilder'; import moment from 'moment'; -import { getUserByPID } from '@/database'; +import { getPNIDByPID } from '@/database'; import { sendEmailConfirmedEmail, sendConfirmationEmail, sendForgotPasswordEmail } from '@/util'; import { HydratedPNIDDocument } from '@/types/mongoose/pnid'; @@ -56,7 +56,7 @@ router.put('/email_confirmation/:pid/:code', async (request: express.Request, re const code: string = request.params.code; const pid: number = Number(request.params.pid); - const pnid: HydratedPNIDDocument | null = await getUserByPID(pid); + const pnid: HydratedPNIDDocument | null = await getPNIDByPID(pid); if (!pnid) { return response.status(400).send(xmlbuilder.create({ @@ -101,7 +101,7 @@ router.put('/email_confirmation/:pid/:code', async (request: express.Request, re router.get('/resend_confirmation', async (request: express.Request, response: express.Response) => { const pid: number = Number(request.headers['x-nintendo-pid']); - const pnid: HydratedPNIDDocument | null = await getUserByPID(pid); + const pnid: HydratedPNIDDocument | null = await getPNIDByPID(pid); if (!pnid) { // TODO - Unsure if this is the right error @@ -129,7 +129,7 @@ router.get('/resend_confirmation', async (request: express.Request, response: ex router.get('/forgotten_password/:pid', async (request: express.Request, response: express.Response) => { const pid: number = Number(request.params.pid); - const pnid: HydratedPNIDDocument | null = await getUserByPID(pid); + const pnid: HydratedPNIDDocument | null = await getPNIDByPID(pid); if (!pnid) { // TODO - Better errors