From 3942e96524c47df225f70f3500cae6ad92b89116 Mon Sep 17 00:00:00 2001 From: Bsian Date: Sun, 27 Oct 2019 16:22:49 +0000 Subject: [PATCH] Tidy and added delete account util --- src/Util.ts | 14 +++++++------- src/commands/createaccount.ts | 5 +++++ 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/Util.ts b/src/Util.ts index 3dcaf95..38ce3d9 100644 --- a/src/Util.ts +++ b/src/Util.ts @@ -4,7 +4,6 @@ import childProcess from 'child_process'; import nodemailer from 'nodemailer'; import { Message, TextChannel, PrivateChannel } from 'eris'; import { outputFile } from 'fs-extra'; -import uuid from 'uuid/v4'; import { Client } from '.'; import { Command, RichEmbed } from './class'; @@ -118,20 +117,21 @@ export default class Util { await this.exec(`useradd -m -p ${hash} -c ${etcPasswd} -s /bin/bash ${username}`); await this.exec(`chage -d0 ${username}`); - const log = await new this.client.db.Moderation({ - username, userID, logID: uuid(), moderatorID, reason: 'User requested account creation', type: 0, date: new Date(), - }); const account = await new this.client.db.Account({ username, userID, emailAddress, createdBy: moderatorID, createdAt: new Date(), locked: false, }); - await log.save(); await account.save(); } - public async messageCollector(message: Message, question: string, timeout: number, shouldDelete = false, choices: string[] = null, filter = (msg: Message): boolean|void => {}) { + public async deleteAccount(username: string): Promise { + await this.exec(`deluser ${username} --remove-home --backup-to /management/Archives && rm -rf -R /home/${username}`); + await this.client.db.Account.deleteOne({ username }); + } + + public async messageCollector(message: Message, question: string, timeout: number, shouldDelete = false, choices: string[] = null, filter = (msg: Message): boolean|void => {}): Promise { const msg = await message.channel.createMessage(question); return new Promise((res, rej) => { - setTimeout(() => rej(new Error('Did not supply a valid input in time')), timeout); + setTimeout(() => { if (shouldDelete) msg.delete(); rej(new Error('Did not supply a valid input in time')); }, timeout); this.client.on('messageCreate', (Msg) => { if (filter(Msg) === false) return; const verif = choices ? choices.includes(Msg.content) : Msg.content; diff --git a/src/commands/createaccount.ts b/src/commands/createaccount.ts index 44bf9dc..945f8bd 100644 --- a/src/commands/createaccount.ts +++ b/src/commands/createaccount.ts @@ -1,4 +1,5 @@ import { Message, PrivateChannel } from 'eris'; +import uuid from 'uuid/v4'; import { Client, config } from '..'; import { Command, RichEmbed } from '../class'; @@ -43,6 +44,10 @@ export default class CreateAccount extends Command { const etcPasswd = `${acctName},${args[0]},,`; await this.client.util.createAccount(passHash, etcPasswd, args[2], args[0], args[1], message.author.id); + const log = await new this.client.db.Moderation({ + username: args[2], userID: args[0], logID: uuid(), moderatorID: message.author.id, reason: 'User requested account creation', type: 0, date: new Date(), + }); + await log.save(); const embed = new RichEmbed(); embed.setTitle('Cloud Account | Create');