From 814c358233a631fc1e2b282c96ba484d937ff046 Mon Sep 17 00:00:00 2001 From: rob Date: Mon, 12 Jun 2023 07:17:25 -0400 Subject: [PATCH] ban user button in Admin --- app/controllers/admin/user.js | 41 +++++++++++++++++++++++++++++++++-- app/services/chat.js | 3 ++- app/views/admin/user/form.pug | 4 +++- 3 files changed, 44 insertions(+), 4 deletions(-) diff --git a/app/controllers/admin/user.js b/app/controllers/admin/user.js index 27aab35..d930a69 100644 --- a/app/controllers/admin/user.js +++ b/app/controllers/admin/user.js @@ -35,6 +35,9 @@ class UserAdminController extends SiteController { const { user: userService } = this.dtp.services; try { res.locals.userAccount = await userService.getLocalUserAccount(localUserId); + if (!res.locals.userAccount) { + throw new SiteError(404, 'User not found'); + } return next(); } catch (error) { return next(error); @@ -42,9 +45,43 @@ class UserAdminController extends SiteController { } async postUpdateLocalUser (req, res, next) { - const { user: userService } = this.dtp.services; + const { + logan: loganService, + user: userService, + } = this.dtp.services; try { - await userService.updateLocalForAdmin(res.locals.userAccount, req.body); + this.log.debug('local user update', { action: req.body.action }); + switch (req.body.action) { + case 'update': + await userService.updateLocalForAdmin(res.locals.userAccount, req.body); + loganService.sendRequestEvent(module.exports, req, { + level: 'info', + event: 'postUpdateLocalUser', + message: 'local user account updated', + data: { + userAccount: { + _id: res.locals.userAccount._id, + username: res.locals.userAccount.username, + }, + }, + }); + break; + + case 'ban': + await userService.ban(res.locals.userAccount); + loganService.sendRequestEvent(module.exports, req, { + level: 'info', + event: 'postUpdateLocalUser', + message: 'local user banned from the app', + data: { + userAccount: { + _id: res.locals.userAccount._id, + username: res.locals.userAccount.username, + }, + }, + }); + break; + } res.redirect('/admin/user'); } catch (error) { return next(error); diff --git a/app/services/chat.js b/app/services/chat.js index c490dea..64a24c3 100644 --- a/app/services/chat.js +++ b/app/services/chat.js @@ -792,7 +792,8 @@ class ChatService extends SiteService { await ChatRoom .find({ owner: user._id }) .populate(this.populateChatRoom) - .cursor(async (room) => { + .cursor() + .eachAsync(async (room) => { try { await this.deleteRoom(room); ++roomCount; diff --git a/app/views/admin/user/form.pug b/app/views/admin/user/form.pug index 279bc32..db90701 100644 --- a/app/views/admin/user/form.pug +++ b/app/views/admin/user/form.pug @@ -76,7 +76,9 @@ block content .uk-width-expand +renderBackButton() .uk-width-auto - button(type="submit").uk-button.uk-button-primary Update User + button(type="submit", name="action", value="ban").uk-button.uk-button-danger.uk-border-rounded Ban User + .uk-width-auto + button(type="submit", name="action", value="update").uk-button.uk-button-primary.uk-border-rounded Update User div(class="uk-width-1-1 uk-width-1-3@l")