Merge pull request #1465 from CyberL1/fix/name-must-not-be-empty

This commit is contained in:
Cyber
2026-01-14 16:19:15 +01:00
committed by GitHub
6 changed files with 29 additions and 9 deletions
Binary file not shown.
Binary file not shown.
@@ -17,7 +17,7 @@
*/
import { route } from "@spacebar/api";
import { Application, DiscordApiErrors, User, createAppBotUser, generateToken, handleFile } from "@spacebar/util";
import { Application, DiscordApiErrors, FieldErrors, User, createAppBotUser, generateToken, handleFile } from "@spacebar/util";
import { Request, Response, Router } from "express";
import { HTTPError } from "lambert-server";
import { verifyToken } from "node-2fa";
@@ -100,6 +100,15 @@ router.patch(
const body = req.body as BotModifySchema;
if (!body.avatar?.trim()) delete body.avatar;
if (body.username?.trim() == "") {
throw FieldErrors({
username: {
code: "BASE_TYPE_REQUIRED",
message: req.t("common:field.BASE_TYPE_REQUIRED"),
},
});
}
const app = await Application.findOneOrFail({
where: { id: req.params.application_id },
relations: { bot: true, owner: true },
@@ -17,7 +17,7 @@
*/
import { route } from "@spacebar/api";
import { Application, DiscordApiErrors, Guild, handleFile, User } from "@spacebar/util";
import { Application, DiscordApiErrors, FieldErrors, Guild, handleFile, User } from "@spacebar/util";
import { Request, Response, Router } from "express";
import { HTTPError } from "lambert-server";
import { verifyToken } from "node-2fa";
@@ -73,6 +73,15 @@ router.patch(
if (app.owner.totp_secret && (!req.body.code || verifyToken(app.owner.totp_secret, req.body.code))) throw new HTTPError(req.t("auth:login.INVALID_TOTP_CODE"), 60008);
if (body.name?.trim() == "") {
throw FieldErrors({
name: {
code: "BASE_TYPE_REQUIRED",
message: req.t("common:field.BASE_TYPE_REQUIRED"),
},
});
}
if (body.icon) {
body.icon = await handleFile(`/app-icons/${app.id}`, body.icon as string);
}
@@ -19,4 +19,5 @@
export interface BotModifySchema {
avatar?: string;
username?: string;
banner?: string;
}
+8 -7
View File
@@ -29,19 +29,20 @@ export type ErrorContent = { code: string; message: string };
export type ObjectErrorContent = { _errors: ErrorContent[] };
export function FieldErrors(fields: Record<string, { code?: string; message: string }>, errors?: ErrorObject[]) {
return new FieldError(
50035,
"Invalid Form Body",
Object.values(fields).map(({ message, code }) => ({
const errorsObject = {} as Record<string, ObjectErrorContent>;
Object.entries(fields).map(([key, { message, code }]) => {
errorsObject[key] = {
_errors: [
{
message,
code: code || "BASE_TYPE_INVALID",
},
],
})),
errors,
);
};
});
return new FieldError(50035, "Invalid Form Body", errorsObject, errors);
}
// TODO: implement Image data type: Data URI scheme that supports JPG, GIF, and PNG formats. An example Data URI format is: data:image/jpeg;base64,BASE64_ENCODED_JPEG_IMAGE_DATA