diff --git a/src/models/loginModel.ts b/src/models/loginModel.ts index eb3d1576..bc6425bc 100644 --- a/src/models/loginModel.ts +++ b/src/models/loginModel.ts @@ -21,7 +21,8 @@ const databaseAccountSchema = new Schema( TrackedSettings: { type: [String], default: [] }, Nonce: { type: Number, default: 0 }, LastLoginDay: { type: Number }, - LatestEventMessageDate: { type: Date, default: 0 } + LatestEventMessageDate: { type: Date, default: 0 }, + isAdministrator: { type: Boolean, required: false, default: false } }, opts ); diff --git a/src/services/loginService.ts b/src/services/loginService.ts index 0432c33b..bb577868 100644 --- a/src/services/loginService.ts +++ b/src/services/loginService.ts @@ -18,7 +18,11 @@ export const isNameTaken = async (name: string): Promise => { }; export const createAccount = async (accountData: IDatabaseAccount): Promise => { - const account = new Account(accountData); + const account = new Account({ + ...accountData, + isAdministrator: !(await Account.exists({})) + }); + try { await account.save(); const loadoutId = await createLoadout(account._id); @@ -101,6 +105,9 @@ export const getAccountIdForRequest = async (req: Request): Promise => { }; export const isAdministrator = (account: TAccountDocument): boolean => { + if (account.isAdministrator) { + return true; + } if (!config.administratorNames) { return false; } diff --git a/src/types/loginTypes.ts b/src/types/loginTypes.ts index 728fde52..6276fb73 100644 --- a/src/types/loginTypes.ts +++ b/src/types/loginTypes.ts @@ -16,6 +16,7 @@ export interface IDatabaseAccount extends IAccountAndLoginResponseCommons { password: string; LastLoginDay?: number; LatestEventMessageDate: Date; + isAdministrator?: boolean; } // Includes virtual ID