mirror of
https://github.com/PretendoNetwork/account.git
synced 2026-09-28 21:31:23 -05:00
Merge pull request #182 from DaniElectra/token-scope-fix
This commit is contained in:
@@ -104,12 +104,17 @@ export async function getPNIDByBasicAuth(token: string): Promise<HydratedPNIDDoc
|
||||
return pnid;
|
||||
}
|
||||
|
||||
export async function getPNIDByTokenAuth(token: string): Promise<HydratedPNIDDocument | null> {
|
||||
export async function getPNIDByTokenAuth(token: string, allowedTypes?: number[]): Promise<HydratedPNIDDocument | null> {
|
||||
verifyConnected();
|
||||
|
||||
try {
|
||||
const decryptedToken = decryptToken(Buffer.from(token, 'hex'));
|
||||
const unpackedToken = unpackToken(decryptedToken);
|
||||
|
||||
if (allowedTypes && !allowedTypes.includes(unpackedToken.system_type)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
const pnid = await getPNIDByPID(unpackedToken.pid);
|
||||
|
||||
if (pnid) {
|
||||
@@ -221,8 +226,8 @@ export async function getServerByGameServerID(gameServerID: string, accessMode:
|
||||
|
||||
for (const mode of searchModes) {
|
||||
const server = servers.find(s => s.access_mode === mode);
|
||||
if (server) {
|
||||
return server;
|
||||
if (server) {
|
||||
return server;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -239,8 +244,8 @@ export async function getServerByTitleID(titleID: string, accessMode: string): P
|
||||
|
||||
for (const mode of searchModes) {
|
||||
const server = servers.find(s => s.access_mode === mode);
|
||||
if (server) {
|
||||
return server;
|
||||
if (server) {
|
||||
return server;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -257,8 +262,8 @@ export async function getServerByClientID(clientID: string, accessMode: string):
|
||||
|
||||
for (const mode of searchModes) {
|
||||
const server = servers.find(s => s.access_mode === mode);
|
||||
if (server) {
|
||||
return server;
|
||||
if (server) {
|
||||
return server;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -312,4 +317,4 @@ export async function removePNIDConnectionDiscord(pnid: HydratedPNIDDocument): P
|
||||
app: 'api',
|
||||
status: 200
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,7 +23,8 @@ async function PNIDMiddleware(request: express.Request, response: express.Respon
|
||||
if (type === 'Basic' && request.path.includes('v1/api/people/@me/devices')) {
|
||||
pnid = await getPNIDByBasicAuth(token);
|
||||
} else if (type === 'Bearer') {
|
||||
pnid = await getPNIDByTokenAuth(token);
|
||||
// TODO - This "accepted types list" is mostly a hack. Change this
|
||||
pnid = await getPNIDByTokenAuth(token, [1, 2]);
|
||||
}
|
||||
|
||||
if (!pnid) {
|
||||
@@ -84,4 +85,4 @@ async function PNIDMiddleware(request: express.Request, response: express.Respon
|
||||
return next();
|
||||
}
|
||||
|
||||
export default PNIDMiddleware;
|
||||
export default PNIDMiddleware;
|
||||
|
||||
Reference in New Issue
Block a user