diff --git a/src/index.ts b/src/index.ts index 6bb6b6f2f..a6bfb654c 100644 --- a/src/index.ts +++ b/src/index.ts @@ -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 => { await connectDatabase(); diff --git a/src/services/configService.ts b/src/services/configService.ts index 5729a52bd..b2200ec4a 100644 --- a/src/services/configService.ts +++ b/src/services/configService.ts @@ -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 => { 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}"]` + ); + } +}; diff --git a/src/services/loginService.ts b/src/services/loginService.ts index 674b4860e..0e7fa5d40 100644 --- a/src/services/loginService.ts +++ b/src/services/loginService.ts @@ -75,5 +75,11 @@ export const getAccountIdForRequest = async (req: Request): Promise => { }; 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); };