1
0
mirror of https://github.com/spacebarchat/server.git synced 2024-11-10 04:32:35 +01:00

Only allow specific server features to be edited

This commit is contained in:
Madeline 2022-12-05 19:50:16 +11:00
parent 561fcb654f
commit fde5494930
No known key found for this signature in database
GPG Key ID: 1958E017C36F2E47
2 changed files with 27 additions and 0 deletions

View File

@ -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);

View File

@ -1043,6 +1043,11 @@ export const FosscordApiErrors = {
45006,
501,
),
FEATURE_IS_IMMUTABLE : new ApiError(
"The feature ({}) cannot be edited.",
45007,
403,
),
MISSING_RIGHTS: new ApiError(
"You lack rights to perform that action ({})",
50013,