mirror of
https://github.com/spacebarchat/server.git
synced 2026-05-29 13:54:22 +00:00
Only allow specific server features to be edited
This commit is contained in:
@@ -9,6 +9,7 @@ import {
|
||||
handleFile,
|
||||
Member,
|
||||
GuildUpdateSchema,
|
||||
FosscordApiErrors,
|
||||
} from "@fosscord/util";
|
||||
import { HTTPError } from "lambert-server";
|
||||
import { route } from "@fosscord/api";
|
||||
@@ -74,6 +75,27 @@ router.patch(
|
||||
body.discovery_splash,
|
||||
);
|
||||
|
||||
if (body.features) {
|
||||
const diff = guild.features.filter(x => !body.features?.includes(x))
|
||||
.concat(body.features.filter(x => !guild.features.includes(x)));
|
||||
|
||||
// TODO move these
|
||||
const MUTABLE_FEATURES = [
|
||||
"COMMUNITY",
|
||||
"INVITES_DISABLED",
|
||||
"DISCOVERABLE",
|
||||
];
|
||||
|
||||
for (var feature of diff) {
|
||||
if (MUTABLE_FEATURES.includes(feature)) continue;
|
||||
|
||||
throw FosscordApiErrors.FEATURE_IS_IMMUTABLE.withParams(feature);
|
||||
}
|
||||
|
||||
// for some reason, they don't update in the assign.
|
||||
guild.features = body.features;
|
||||
}
|
||||
|
||||
// TODO: check if body ids are valid
|
||||
guild.assign(body);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user