improve: handle config.administratorNames being a string #658

Merged
Sainan merged 1 commits from lax-config into main 2024-12-29 14:34:26 -08:00
3 changed files with 19 additions and 3 deletions

View File

@ -6,11 +6,12 @@ import http from "http";
import https from "https";
import fs from "node:fs";
import { app } from "./app";
import { config } from "./services/configService";
import { config, validateConfig } from "./services/configService";
import { connectDatabase } from "@/src/services/mongoService";
import { registerLogFileCreationListener } from "@/src/utils/logger";
registerLogFileCreationListener();
validateConfig();
void (async (): Promise<void> => {
await connectDatabase();

View File

@ -22,6 +22,7 @@ fs.watchFile(configPath, () => {
}
Object.assign(config, JSON.parse(fs.readFileSync(configPath, "utf-8")));
validateConfig();
}
});
@ -32,7 +33,7 @@ interface IConfig {
httpPort?: number;
httpsPort?: number;
myIrcAddresses?: string[];
administratorNames?: string[];
administratorNames?: string[] | string;
autoCreateAccount?: boolean;
skipTutorial?: boolean;
skipAllDialogue?: boolean;
@ -61,3 +62,11 @@ export const updateConfig = async (data: string): Promise<void> => {
await fsPromises.writeFile(configPath, data);
Object.assign(config, JSON.parse(data));
};
export const validateConfig = (): void => {
if (typeof config.administratorNames == "string") {
logger.warn(
`"administratorNames" should be an array; please add square brackets: ["${config.administratorNames}"]`
);
}
};

View File

@ -75,5 +75,11 @@ export const getAccountIdForRequest = async (req: Request): Promise<string> => {
};
export const isAdministrator = (account: TAccountDocument): boolean => {
return !!config.administratorNames?.find(x => x == account.DisplayName);
if (!config.administratorNames) {
return false;
}
if (typeof config.administratorNames == "string") {
return config.administratorNames == account.DisplayName;
}
return !!config.administratorNames.find(x => x == account.DisplayName);
};