diff --git "a/src/api/routes/channels/\043channel_id/webhooks.ts" "b/src/api/routes/channels/\043channel_id/webhooks.ts" index 152f6d0..0df53a8 100644 --- "a/src/api/routes/channels/\043channel_id/webhooks.ts" +++ "b/src/api/routes/channels/\043channel_id/webhooks.ts" @@ -29,6 +29,7 @@ isTextChannel, trimSpecial, FieldErrors, + ValidateName, } from "@spacebar/util"; import crypto from "crypto"; import { Request, Response, Router } from "express"; @@ -113,37 +114,7 @@ // TODO: move this if (name) { - const check_username = name.replace(/\s/g, ""); - if (!check_username) { - throw FieldErrors({ - username: { - code: "BASE_TYPE_REQUIRED", - message: req.t("common:field.BASE_TYPE_REQUIRED"), - }, - }); - } - - const { maxUsername } = Config.get().limits.user; - if ( - check_username.length > maxUsername || - check_username.length < 2 - ) { - throw FieldErrors({ - username: { - code: "BASE_TYPE_BAD_LENGTH", - message: `Must be between 2 and ${maxUsername} in length.`, - }, - }); - } - - const blockedContains = ["discord", "clyde", "spacebar"]; - for (const word of blockedContains) { - if (name.toLowerCase().includes(word)) { - return res.status(400).json({ - username: [`Username cannot contain "${word}"`], - }); - } - } + ValidateName(name); } if (avatar) avatar = await handleFile(`/avatars/${channel_id}`, avatar); diff --git "a/src/api/routes/webhooks/\043webhook_id/\043token/index.ts" "b/src/api/routes/webhooks/\043webhook_id/\043token/index.ts" index aea9ba8..0de43af 100644 --- "a/src/api/routes/webhooks/\043webhook_id/\043token/index.ts" +++ "b/src/api/routes/webhooks/\043webhook_id/\043token/index.ts" @@ -134,37 +134,7 @@ // block username from containing certain words // TODO: configurable additions if (body.username) { - const check_username = body.username.replace(/\s/g, ""); - if (!check_username) { - throw FieldErrors({ - username: { - code: "BASE_TYPE_REQUIRED", - message: req.t("common:field.BASE_TYPE_REQUIRED"), - }, - }); - } - - const { maxUsername } = Config.get().limits.user; - if ( - check_username.length > maxUsername || - check_username.length < 2 - ) { - throw FieldErrors({ - username: { - code: "BASE_TYPE_BAD_LENGTH", - message: `Must be between 2 and ${maxUsername} in length.`, - }, - }); - } - - const blockedContains = ["discord", "clyde", "spacebar"]; - for (const word of blockedContains) { - if (body.username.toLowerCase().includes(word)) { - return res.status(400).json({ - username: [`Username cannot contain "${word}"`], - }); - } - } + ValidateName(body.username); } // block username from being certain words