From 541af2045d45d4b1fd51450d4f650e7028c759ba Mon Sep 17 00:00:00 2001 From: root Date: Tue, 25 Mar 2025 11:15:14 -0700 Subject: [PATCH] Added better user configuration and removed extra logging --- src/api/routes/webhooks/#webhook_id/index.ts | 20 +++++++++--------- src/util/config/Config.ts | 2 ++ src/util/config/types/UsersConfiguration.ts | 22 ++++++++++++++++++++ src/util/config/types/index.ts | 1 + src/util/util/NameValidation.ts | 12 ++++++++--- 5 files changed, 44 insertions(+), 13 deletions(-) create mode 100755 src/util/config/types/UsersConfiguration.ts diff --git a/src/api/routes/webhooks/#webhook_id/index.ts b/src/api/routes/webhooks/#webhook_id/index.ts index 9e893346..baedc7f0 100644 --- a/src/api/routes/webhooks/#webhook_id/index.ts +++ b/src/api/routes/webhooks/#webhook_id/index.ts @@ -180,19 +180,19 @@ router.patch( where: { id: channel_id }, }), }); - console.log(webhook.channel_id); - await webhook.save(); - await emitEvent({ - event: "WEBHOOKS_UPDATE", - channel_id, - data: { + await Promise.all([ + webhook.save(), + emitEvent({ + event: "WEBHOOKS_UPDATE", channel_id, - guild_id: webhook.guild_id, - }, - } as WebhooksUpdateEvent); + data: { + channel_id, + guild_id: webhook.guild_id, + }, + } as WebhooksUpdateEvent), + ]); - console.log(webhook.channel_id); res.json(webhook); }, ); diff --git a/src/util/config/Config.ts b/src/util/config/Config.ts index 90b98b7a..56054641 100644 --- a/src/util/config/Config.ts +++ b/src/util/config/Config.ts @@ -37,6 +37,7 @@ import { SecurityConfiguration, SentryConfiguration, TemplateConfiguration, + UserConfiguration, } from "../config"; export class ConfigValue { @@ -61,4 +62,5 @@ export class ConfigValue { email: EmailConfiguration = new EmailConfiguration(); passwordReset: PasswordResetConfiguration = new PasswordResetConfiguration(); + user: UserConfiguration = new UserConfiguration(); } diff --git a/src/util/config/types/UsersConfiguration.ts b/src/util/config/types/UsersConfiguration.ts new file mode 100755 index 00000000..03e866d9 --- /dev/null +++ b/src/util/config/types/UsersConfiguration.ts @@ -0,0 +1,22 @@ +/* + Spacebar: A FOSS re-implementation and extension of the Discord.com backend. + Copyright (C) 2023 Spacebar and Spacebar Contributors + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published + by the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +export class UserConfiguration { + blockedContains: string[] = ["discord", "clyde", "spacebar"]; + blockedEquals: string[] = ["everyone", "here"]; +} diff --git a/src/util/config/types/index.ts b/src/util/config/types/index.ts index 782ebfc3..a141bacf 100644 --- a/src/util/config/types/index.ts +++ b/src/util/config/types/index.ts @@ -37,3 +37,4 @@ export * from "./SecurityConfiguration"; export * from "./SentryConfiguration"; export * from "./subconfigurations"; export * from "./TemplateConfiguration"; +export * from "./UsersConfiguration"; diff --git a/src/util/util/NameValidation.ts b/src/util/util/NameValidation.ts index 857a2517..a6304535 100755 --- a/src/util/util/NameValidation.ts +++ b/src/util/util/NameValidation.ts @@ -30,8 +30,8 @@ export function ValidateName(name: string) { }, }); } - - const { maxUsername } = Config.get().limits.user; + const general = Config.get(); + const { maxUsername } = general.limits.user; if (check_username.length > maxUsername || check_username.length < 2) { throw FieldErrors({ username: { @@ -41,11 +41,17 @@ export function ValidateName(name: string) { }); } - const blockedContains = ["discord", "clyde", "spacebar"]; + const { blockedContains, blockedEquals } = general.user; for (const word of blockedContains) { if (name.toLowerCase().includes(word)) { throw new HTTPError(`Username cannot contain "${word}"`, 400); } } + + for (const word of blockedEquals) { + if (name.toLowerCase() === word) { + throw new HTTPError(`Username cannot be "${word}"`, 400); + } + } return name; }