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 https from "https";
import fs from "node:fs"; import fs from "node:fs";
import { app } from "./app"; import { app } from "./app";
import { config } from "./services/configService"; import { config, validateConfig } from "./services/configService";
import { connectDatabase } from "@/src/services/mongoService"; import { connectDatabase } from "@/src/services/mongoService";
import { registerLogFileCreationListener } from "@/src/utils/logger"; import { registerLogFileCreationListener } from "@/src/utils/logger";
registerLogFileCreationListener(); registerLogFileCreationListener();
validateConfig();
void (async (): Promise<void> => { void (async (): Promise<void> => {
await connectDatabase(); await connectDatabase();

View File

@ -22,6 +22,7 @@ fs.watchFile(configPath, () => {
} }
Object.assign(config, JSON.parse(fs.readFileSync(configPath, "utf-8"))); Object.assign(config, JSON.parse(fs.readFileSync(configPath, "utf-8")));
validateConfig();
} }
}); });
@ -32,7 +33,7 @@ interface IConfig {
httpPort?: number; httpPort?: number;
httpsPort?: number; httpsPort?: number;
myIrcAddresses?: string[]; myIrcAddresses?: string[];
administratorNames?: string[]; administratorNames?: string[] | string;
autoCreateAccount?: boolean; autoCreateAccount?: boolean;
skipTutorial?: boolean; skipTutorial?: boolean;
skipAllDialogue?: boolean; skipAllDialogue?: boolean;
@ -61,3 +62,11 @@ export const updateConfig = async (data: string): Promise<void> => {
await fsPromises.writeFile(configPath, data); await fsPromises.writeFile(configPath, data);
Object.assign(config, JSON.parse(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 => { 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);
}; };