mirror of
https://github.com/PretendoNetwork/account.git
synced 2026-05-27 10:32:37 -05:00
NNID service tokens now check client_id for generation
This commit is contained in:
parent
08e0d9c436
commit
976c1bf21f
|
|
@ -208,20 +208,28 @@ export async function getPNIDProfileJSONByPID(pid: number): Promise<PNIDProfile
|
|||
};
|
||||
}
|
||||
|
||||
export async function getServerByGameServerId(gameServerId: string, accessMode: string): Promise<HydratedServerDocument | null> {
|
||||
export async function getServerByGameServerID(gameServerID: string, accessMode: string): Promise<HydratedServerDocument | null> {
|
||||
return await Server.findOne({
|
||||
game_server_id: gameServerId,
|
||||
game_server_id: gameServerID,
|
||||
access_mode: accessMode
|
||||
});
|
||||
}
|
||||
|
||||
export async function getServerByTitleId(titleId: string, accessMode: string): Promise<HydratedServerDocument | null> {
|
||||
export async function getServerByTitleID(titleID: string, accessMode: string): Promise<HydratedServerDocument | null> {
|
||||
return await Server.findOne({
|
||||
title_ids: titleId,
|
||||
title_ids: titleID,
|
||||
access_mode: accessMode
|
||||
});
|
||||
}
|
||||
|
||||
export async function getServerByClientID(clientID: string, accessMode: string): Promise<HydratedServerDocument | null> {
|
||||
return await Server.findOne({
|
||||
client_id: clientID,
|
||||
access_mode: accessMode
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
export async function addPNIDConnection(pnid: HydratedPNIDDocument, data: ConnectionData, type: string): Promise<ConnectionResponse | undefined> {
|
||||
if (type === 'discord') {
|
||||
return await addPNIDConnectionDiscord(pnid, data);
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ import uniqueValidator from 'mongoose-unique-validator';
|
|||
import { IServer, IServerMethods, ServerModel } from '@/types/mongoose/server';
|
||||
|
||||
const ServerSchema = new Schema<IServer, ServerModel, IServerMethods>({
|
||||
client_id: String,
|
||||
ip: String,
|
||||
port: Number,
|
||||
service_name: String,
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import express from 'express';
|
||||
import xmlbuilder from 'xmlbuilder';
|
||||
import { getServerByTitleId, getServerByGameServerId } from '@/database';
|
||||
import { getServerByClientID, getServerByGameServerID } from '@/database';
|
||||
import { generateToken, getValueFromHeaders, getValueFromQueryString } from '@/util';
|
||||
import { NEXAccount } from '@/models/nex-account';
|
||||
import { TokenOptions } from '@/types/common/token-options';
|
||||
|
|
@ -32,6 +32,22 @@ router.get('/service_token/@me', async (request: express.Request, response: expr
|
|||
return;
|
||||
}
|
||||
|
||||
const clientID: string | undefined = getValueFromQueryString(request.query, 'client_id');
|
||||
|
||||
if (!clientID) {
|
||||
// TODO - Research this error more
|
||||
response.send(xmlbuilder.create({
|
||||
errors: {
|
||||
error: {
|
||||
code: '1021',
|
||||
message: 'The requested game server was not found'
|
||||
}
|
||||
}
|
||||
}).end());
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
const titleID: string | undefined = getValueFromHeaders(request.headers, 'x-nintendo-title-id');
|
||||
|
||||
if (!titleID) {
|
||||
|
|
@ -49,7 +65,7 @@ router.get('/service_token/@me', async (request: express.Request, response: expr
|
|||
}
|
||||
|
||||
const serverAccessLevel: string = pnid.server_access_level;
|
||||
const server: HydratedServerDocument | null = await getServerByTitleId(titleID, serverAccessLevel);
|
||||
const server: HydratedServerDocument | null = await getServerByClientID(clientID, serverAccessLevel);
|
||||
|
||||
if (!server || !server.aes_key) {
|
||||
response.send(xmlbuilder.create({
|
||||
|
|
@ -156,7 +172,7 @@ router.get('/nex_token/@me', async (request: express.Request, response: express.
|
|||
}
|
||||
|
||||
const serverAccessLevel: string = pnid.server_access_level;
|
||||
const server: HydratedServerDocument | null = await getServerByGameServerId(gameServerID, serverAccessLevel);
|
||||
const server: HydratedServerDocument | null = await getServerByGameServerID(gameServerID, serverAccessLevel);
|
||||
|
||||
if (!server || !server.aes_key) {
|
||||
response.send(xmlbuilder.create({
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
import { Model, HydratedDocument } from 'mongoose';
|
||||
|
||||
export interface IServer {
|
||||
client_id: string;
|
||||
ip: string;
|
||||
port: number;
|
||||
service_name: string;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user