Embed base images into binary
Include resource directory Ran `deno fmt` with 4 space indent, that changed every file (!!!!!) various changes
This commit is contained in:
@@ -1,5 +1,94 @@
|
||||
import { APIUtils } from "../../apiutils.ts";
|
||||
import { APIUtils, NoBody } from "../../apiutils.ts";
|
||||
import express from "express";
|
||||
import Profile from "../../data/profiles.ts";
|
||||
|
||||
export const route = APIUtils.createRouter("/connect");
|
||||
|
||||
//route.router.post()
|
||||
interface TokenRequestBody {
|
||||
grant_type: string;
|
||||
account_id: string;
|
||||
client_id: string;
|
||||
client_secret: string;
|
||||
platform: string;
|
||||
platform_id: string;
|
||||
device_id: string;
|
||||
device_class: string;
|
||||
time: string;
|
||||
ver: string;
|
||||
asid: string;
|
||||
platform_auth: string;
|
||||
}
|
||||
|
||||
interface TokenResponseBody {
|
||||
error?: string;
|
||||
error_description?: string;
|
||||
access_token: string;
|
||||
refresh_token: string;
|
||||
}
|
||||
|
||||
route.router.post("/token",
|
||||
|
||||
APIUtils.Authentication,
|
||||
express.urlencoded({ extended: true }),
|
||||
APIUtils.checkBodyTypes<TokenRequestBody>({
|
||||
grant_type: "",
|
||||
account_id: "",
|
||||
client_id: "",
|
||||
client_secret: "",
|
||||
platform: "",
|
||||
platform_id: "",
|
||||
device_id: "",
|
||||
device_class: "",
|
||||
time: "",
|
||||
ver: "",
|
||||
asid: "",
|
||||
platform_auth: "",
|
||||
}),
|
||||
|
||||
async (
|
||||
rq: express.Request<NoBody, NoBody, TokenRequestBody>,
|
||||
rs: express.Response<TokenResponseBody>,
|
||||
) => {
|
||||
|
||||
function requestFailed(msg: string = "invalid_request") {
|
||||
rs.json({
|
||||
error: msg,
|
||||
access_token: "",
|
||||
refresh_token: "",
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
const conditionsMet = ![
|
||||
rq.body.grant_type == "cached_login",
|
||||
rq.body.client_id == "recroom",
|
||||
rq.body.platform == "0",
|
||||
rq.body.ver == '20191120',
|
||||
!(rq.body.device_id.length > 96),
|
||||
!(rq.body.client_secret.length > 96),
|
||||
!(rq.body.platform_id.length > 32),
|
||||
!(rq.body.time.length > 32),
|
||||
!(rq.body.asid.length > 32),
|
||||
].includes(false);
|
||||
|
||||
if (conditionsMet) {
|
||||
const accounts = await rs.locals.user.getAssociatedProfiles();
|
||||
const targetAccount = parseInt(rq.body.account_id);
|
||||
|
||||
if (isNaN(targetAccount)) requestFailed();
|
||||
if (!accounts.has(targetAccount)) requestFailed("access_denied");
|
||||
|
||||
rs.locals.user.addAssociatedDeviceId(rq.body.device_id);
|
||||
rs.locals.user.addAssociatedPlatformId(rq.body.platform_id);
|
||||
|
||||
const profile = new Profile(targetAccount);
|
||||
if (!(await Profile.exists(profile.getId()))) requestFailed();
|
||||
|
||||
const token = await profile.getToken();
|
||||
rs.json({
|
||||
access_token: token,
|
||||
refresh_token: token,
|
||||
});
|
||||
} else requestFailed();
|
||||
},
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user