fix(backend): request.body may be undefined (#9356)

This commit is contained in:
Kagami Sascha Rosylight 2022-12-19 15:57:36 +09:00 committed by GitHub
parent 72e7909911
commit c3cb218975
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -54,21 +54,21 @@ export class ApiCallService implements OnApplicationShutdown {
@bindThis
public handleRequest(
endpoint: IEndpoint & { exec: any },
request: FastifyRequest<{ Body: Record<string, unknown>, Querystring: Record<string, unknown> }>,
request: FastifyRequest<{ Body: Record<string, unknown> | undefined, Querystring: Record<string, unknown> }>,
reply: FastifyReply,
) {
const body = request.method === 'GET'
? request.query
: request.body;
const token = body['i'];
const token = body?.['i'];
if (token != null && typeof token !== 'string') {
reply.code(400);
return;
}
this.authenticateService.authenticate(token).then(([user, app]) => {
this.call(endpoint, user, app, body, null, request).then((res) => {
if (request.method === 'GET' && endpoint.meta.cacheSec && !body['i'] && !user) {
if (request.method === 'GET' && endpoint.meta.cacheSec && !body?.['i'] && !user) {
reply.header('Cache-Control', `public, max-age=${endpoint.meta.cacheSec}`);
}
this.send(reply, res);
@ -111,7 +111,7 @@ export class ApiCallService implements OnApplicationShutdown {
for (const [k, v] of Object.entries(multipartData.fields)) {
fields[k] = v.value;
}
const token = fields['i'];
if (token != null && typeof token !== 'string') {
reply.code(400);
@ -199,7 +199,7 @@ export class ApiCallService implements OnApplicationShutdown {
name: string;
path: string;
} | null,
request: FastifyRequest<{ Body: Record<string, unknown>, Querystring: Record<string, unknown> }>,
request: FastifyRequest<{ Body: Record<string, unknown> | undefined, Querystring: Record<string, unknown> }>,
) {
const isSecure = user != null && token == null;
const isModerator = user != null && (user.isModerator || user.isAdmin);