From 330f0c540659ce046b6207a5db5a8d44ce071841 Mon Sep 17 00:00:00 2001 From: OldHawk Date: Tue, 29 May 2018 15:50:18 +0800 Subject: [PATCH] feat(history): write admin operate history on user account --- config/env/torrents.js | 68 ++++++++++++------- config/lib/history.js | 33 +++++++++ .../controllers/makers.server.controller.js | 2 +- .../controllers/albums.server.controller.js | 4 +- .../controllers/backup.server.controller.js | 2 +- .../collections.server.controller.js | 4 +- modules/core/client/app/trans-string-en.js | 12 ++++ modules/core/client/app/trans-string-zh-tw.js | 12 ++++ modules/core/client/app/trans-string-zh.js | 12 ++++ .../core/server/models/common.server.model.js | 8 ++- .../controllers/systems.server.controller.js | 2 +- .../completes.server.controller.js | 9 ++- .../controllers/torrents.server.controller.js | 8 +-- .../views/admin/view-user.client.view.html | 8 +-- .../controllers/admin.server.controller.js | 65 +++++++++++++++--- 15 files changed, 198 insertions(+), 51 deletions(-) create mode 100644 config/lib/history.js diff --git a/config/env/torrents.js b/config/env/torrents.js index e3a64b6d..91b0b01d 100644 --- a/config/env/torrents.js +++ b/config/env/torrents.js @@ -686,41 +686,40 @@ module.exports = { * @name: action name * @enable: action enable status, if false, system will not to trace log this action * - * !IMPORTANT NOTE: - * @userAnnounceData MAKE LARGEST NUMBER DATA RECORD, IF YOU RUNNING MEANTORRENT AT PROD MODE, MUST SET IT TO FALSE */ trace: { traceLogDays: 10, action: { - AdminUpdateUserRole: {name: 'AdminUpdateUserRole', enable: true}, - AdminUpdateUserStatus: {name: 'AdminUpdateUserStatus', enable: true}, - AdminUpdateUserScore: {name: 'AdminUpdateUserScore', enable: true}, - AdminUpdateUserUploaded: {name: 'AdminUpdateUserUploaded', enable: true}, - AdminUpdateUserDownloaded: {name: 'AdminUpdateUserDownloaded', enable: true}, - AdminUpdateUserVIPData: {name: 'AdminUpdateUserVIPData', enable: true}, - AdminUserDelete: {name: 'AdminUserDelete', enable: true}, - AdminUserEdit: {name: 'AdminUserEdit', enable: true}, - AdminBanAllExaminationUnfinishedUsers: {name: 'AdminBanAllExaminationUnfinishedUsers', enable: true}, + adminUpdateUserRole: {name: 'adminUpdateUserRole', enable: true}, + adminUpdateUserStatus: {name: 'adminUpdateUserStatus', enable: true}, + adminUpdateUserScore: {name: 'adminUpdateUserScore', enable: true}, + adminUpdateUserUploaded: {name: 'adminUpdateUserUploaded', enable: true}, + adminUpdateUserDownloaded: {name: 'adminUpdateUserDownloaded', enable: true}, + adminUpdateUserVIPData: {name: 'adminUpdateUserVIPData', enable: true}, + adminPresentUserInvitations: {name: 'adminPresentUserInvitations', enable: true}, + adminRemoveUserHnrWarning: {name: 'adminRemoveUserHnrWarning', enable: true}, + + adminUserDelete: {name: 'adminUserDelete', enable: true}, + adminUserEdit: {name: 'adminUserEdit', enable: true}, + adminBanAllExaminationUnfinishedUsers: {name: 'adminBanAllExaminationUnfinishedUsers', enable: true}, userPasswordReset: {name: 'userPasswordReset', enable: true}, userSignUp: {name: 'userSignUp', enable: true}, userActiveAccount: {name: 'userActiveAccount', enable: true}, userUnIdle: {name: 'userUnIdle', enable: true}, - AdminTorrentDelete: {name: 'AdminTorrentDelete', enable: true}, - AdminTorrentSetSaleType: {name: 'AdminTorrentSetSaleType', enable: true}, - AdminTorrentSetRecommendLevel: {name: 'AdminTorrentSetRecommendLevel', enable: true}, - AdminCollectionSetRecommendLevel: {name: 'AdminCollectionSetRecommendLevel', enable: true}, - AdminAlbumSetRecommendLevel: {name: 'AdminAlbumSetRecommendLevel', enable: true}, - AdminTorrentSetReviewedStatus: {name: 'AdminTorrentSetReviewedStatus', enable: true}, - OperCreateMakerGroup: {name: 'OperCreateMakerGroup', enable: true}, - OperCreateCollection: {name: 'OperCreateCollection', enable: true}, - OperCreateAlbum: {name: 'OperCreateAlbum', enable: true}, - OperDeleteBackupFiles: {name: 'OperDeleteBackupFiles', enable: true}, + adminTorrentDelete: {name: 'adminTorrentDelete', enable: true}, + adminTorrentSetSaleType: {name: 'adminTorrentSetSaleType', enable: true}, + adminTorrentSetRecommendLevel: {name: 'adminTorrentSetRecommendLevel', enable: true}, + adminCollectionSetRecommendLevel: {name: 'adminCollectionSetRecommendLevel', enable: true}, + adminAlbumSetRecommendLevel: {name: 'adminAlbumSetRecommendLevel', enable: true}, + adminTorrentSetReviewedStatus: {name: 'adminTorrentSetReviewedStatus', enable: true}, + adminCreateMakerGroup: {name: 'adminCreateMakerGroup', enable: true}, + adminCreateCollection: {name: 'adminCreateCollection', enable: true}, + adminCreateAlbum: {name: 'adminCreateAlbum', enable: true}, + adminDeleteBackupFiles: {name: 'adminDeleteBackupFiles', enable: true}, userInvitationExchange: {name: 'userInvitationExchange', enable: true}, - adminPresentInvitations: {name: 'adminPresentInvitations', enable: true}, - adminRemoveHnrWarning: {name: 'adminRemoveHnrWarning', enable: true}, userRemoveHnrWarning: {name: 'userRemoveHnrWarning', enable: true}, userSendInvitation: {name: 'userSendInvitation', enable: true}, adminSendOfficialInvitation: {name: 'adminSendOfficialInvitation', enable: true}, @@ -732,6 +731,29 @@ module.exports = { } }, + /** + * @history + * + * settings of admin/oper operate history on user account + * + * @action: history action item + * @name: action name + * @content: action info of translate string, write into db, show in account detail manage page + * @enable: enabled status + */ + history: { + action: { + adminUpdateUserRole: {name: 'adminUpdateUserRole', content: 'ADMIN_UPDATE_USER_ROLE', enable: true}, + adminUpdateUserStatus: {name: 'adminUpdateUserStatus', content: 'ADMIN_UPDATE_USER_STATUS', enable: true}, + adminUpdateUserScore: {name: 'adminUpdateUserScore', content: 'ADMIN_UPDATE_USER_SCORE', enable: true}, + adminUpdateUserUploaded: {name: 'adminUpdateUserUploaded', content: 'ADMIN_UPDATE_USER_UPLOADED', enable: true}, + adminUpdateUserDownloaded: {name: 'adminUpdateUserDownloaded', content: 'ADMIN_UPDATE_USER_DOWNLOADED', enable: true}, + adminUpdateUserVIPData: {name: 'adminUpdateUserVIPData', content: 'ADMIN_UPDATE_USER_VIP_DATA', enable: true}, + adminPresentUserInvitations: {name: 'adminPresentUserInvitations', content: 'ADMIN_PRESENT_USER_INVITATIONS', enable: true}, + adminRemoveUserHnrWarning: {name: 'adminRemoveUserHnrWarning', content: 'ADMIN_REMOVE_USER_HNR_WARNING', enable: true} + } + }, + /** * @torrentType * diff --git a/config/lib/history.js b/config/lib/history.js new file mode 100644 index 00000000..dfe88331 --- /dev/null +++ b/config/lib/history.js @@ -0,0 +1,33 @@ +'use strict'; + +var path = require('path'), + logger = require('./logger'), + mongoose = require('mongoose'), + History = mongoose.model('History'), + User = mongoose.model('User'); + +/** + * insert + * @param user_id + * @param action + * @param params + */ +module.exports.insert = function (user_id, action, params = undefined) { + if (action.enable) { + var history = new History({ + event: action.name, + event_str: action.content, + params: params + }); + + User.update({ + _id: user_id + }, { + $push: {history: history} + }).exec(function (err) { + if (err) { + logger.error(err); + } + }); + } +}; diff --git a/modules/about/server/controllers/makers.server.controller.js b/modules/about/server/controllers/makers.server.controller.js index c23a03e8..4004ce42 100644 --- a/modules/about/server/controllers/makers.server.controller.js +++ b/modules/about/server/controllers/makers.server.controller.js @@ -60,7 +60,7 @@ exports.create = function (req, res) { } //create trace log - traceLogCreate(req, traceConfig.action.OperCreateMakerGroup, { + traceLogCreate(req, traceConfig.action.adminCreateMakerGroup, { user: user._id, name: maker.name }); diff --git a/modules/albums/server/controllers/albums.server.controller.js b/modules/albums/server/controllers/albums.server.controller.js index ed3690f1..e2619ea6 100644 --- a/modules/albums/server/controllers/albums.server.controller.js +++ b/modules/albums/server/controllers/albums.server.controller.js @@ -37,7 +37,7 @@ exports.create = function (req, res) { res.json(user); //create trace log - traceLogCreate(req, traceConfig.action.OperCreateAlbum, { + traceLogCreate(req, traceConfig.action.adminCreateAlbum, { name: album.name }); } @@ -147,7 +147,7 @@ exports.setRecommendLevel = function (req, res) { res.json(album); //create trace log - traceLogCreate(req, traceConfig.action.AdminAlbumSetRecommendLevel, { + traceLogCreate(req, traceConfig.action.adminAlbumSetRecommendLevel, { album: album._id, recommended: req.params.rlevel }); diff --git a/modules/backup/server/controllers/backup.server.controller.js b/modules/backup/server/controllers/backup.server.controller.js index 6874b22f..1c6a22f1 100644 --- a/modules/backup/server/controllers/backup.server.controller.js +++ b/modules/backup/server/controllers/backup.server.controller.js @@ -49,7 +49,7 @@ exports.delete = function (req, res) { } //create trace log - traceLogCreate(req, traceConfig.action.OperDeleteBackupFiles, { + traceLogCreate(req, traceConfig.action.adminDeleteBackupFiles, { filename: req.query.names }); diff --git a/modules/collections/server/controllers/collections.server.controller.js b/modules/collections/server/controllers/collections.server.controller.js index 14f1a50d..c6d50518 100644 --- a/modules/collections/server/controllers/collections.server.controller.js +++ b/modules/collections/server/controllers/collections.server.controller.js @@ -86,7 +86,7 @@ exports.create = function (req, res) { res.json(user); //create trace log - traceLogCreate(req, traceConfig.action.OperCreateCollection, { + traceLogCreate(req, traceConfig.action.adminCreateCollection, { name: coll.name }); } @@ -194,7 +194,7 @@ exports.setRecommendLevel = function (req, res) { res.json(coll); //create trace log - traceLogCreate(req, traceConfig.action.AdminCollectionSetRecommendLevel, { + traceLogCreate(req, traceConfig.action.adminCollectionSetRecommendLevel, { coll: coll._id, recommended: req.params.rlevel }); diff --git a/modules/core/client/app/trans-string-en.js b/modules/core/client/app/trans-string-en.js index a3891b06..22c1e524 100644 --- a/modules/core/client/app/trans-string-en.js +++ b/modules/core/client/app/trans-string-en.js @@ -1714,6 +1714,18 @@ } }, + //admin operate user account history message + HISTORY: { + ADMIN_UPDATE_USER_ROLE: '{{by}} update account role to: {{role}}', + ADMIN_UPDATE_USER_STATUS: '{{by}} update account status to: {{status}}', + ADMIN_UPDATE_USER_SCORE: '{{by}} update account score: {{score}}', + ADMIN_UPDATE_USER_UPLOADED: '{{by}} update account uploaded: {{uploaded}}', + ADMIN_UPDATE_USER_DOWNLOADED: '{{by}} update account downloaded: {{downloaded}}', + ADMIN_UPDATE_USER_VIP_DATA: '{{by}} update account vip data: {{months}} months', + ADMIN_PRESENT_USER_INVITATIONS: '{{by}} present {{numbers}} official invitations, expires {{days}} days', + ADMIN_REMOVE_USER_HNR_WARNING: '{{by}} remove H&R warning, complete id: {{complete}}' + }, + //server returned string SERVER: { USER_IS_NOT_AUTHORIZED: 'User is not authorized', diff --git a/modules/core/client/app/trans-string-zh-tw.js b/modules/core/client/app/trans-string-zh-tw.js index f3847857..aee6b2b2 100644 --- a/modules/core/client/app/trans-string-zh-tw.js +++ b/modules/core/client/app/trans-string-zh-tw.js @@ -1714,6 +1714,18 @@ } }, + //admin operate user account history message + HISTORY: { + ADMIN_UPDATE_USER_ROLE: '{{by}} 改變帳戶角色為: {{role}}', + ADMIN_UPDATE_USER_STATUS: '{{by}} 改變帳戶狀態為: {{status}}', + ADMIN_UPDATE_USER_SCORE: '{{by}} 修改帳戶積分: {{score}}', + ADMIN_UPDATE_USER_UPLOADED: '{{by}} 修改帳戶上傳量: {{uploaded}}', + ADMIN_UPDATE_USER_DOWNLOADED: '{{by}} 修改帳戶下載量: {{downloaded}}', + ADMIN_UPDATE_USER_VIP_DATA: '{{by}} 修改帳戶 VIP 數據: {{months}} 個月', + ADMIN_PRESENT_USER_INVITATIONS: '{{by}} 贈送 {{numbers}} 個官方邀請函, 有效期 {{days}} 天', + ADMIN_REMOVE_USER_HNR_WARNING: '{{by}} 移除 H&R 警告, complete id: {{complete}}' + }, + //server returned string SERVER: { USER_IS_NOT_AUTHORIZED: '用戶身份驗證未通過', diff --git a/modules/core/client/app/trans-string-zh.js b/modules/core/client/app/trans-string-zh.js index 817f9fb3..33bdeddc 100644 --- a/modules/core/client/app/trans-string-zh.js +++ b/modules/core/client/app/trans-string-zh.js @@ -1714,6 +1714,18 @@ } }, + //admin operate user account history message + HISTORY: { + ADMIN_UPDATE_USER_ROLE: '{{by}} 改变帐户角色为: {{role}}', + ADMIN_UPDATE_USER_STATUS: '{{by}} 改变帐户状态为: {{status}}', + ADMIN_UPDATE_USER_SCORE: '{{by}} 修改帐户积分: {{score}}', + ADMIN_UPDATE_USER_UPLOADED: '{{by}} 修改帐户上传量: {{uploaded}}', + ADMIN_UPDATE_USER_DOWNLOADED: '{{by}} 修改帐户下载量: {{downloaded}}', + ADMIN_UPDATE_USER_VIP_DATA: '{{by}} 修改帐户 VIP 数据: {{months}} 个月', + ADMIN_PRESENT_USER_INVITATIONS: '{{by}} 赠送 {{numbers}} 个官方邀请函, 有效期 {{days}} 天', + ADMIN_REMOVE_USER_HNR_WARNING: '{{by}} 移除 H&R 警告, complete id: {{complete}}' + }, + //server returned string SERVER: { USER_IS_NOT_AUTHORIZED: '用户身份验证未通过', diff --git a/modules/core/server/models/common.server.model.js b/modules/core/server/models/common.server.model.js index c19f4d7f..cf0edcaf 100644 --- a/modules/core/server/models/common.server.model.js +++ b/modules/core/server/models/common.server.model.js @@ -86,11 +86,17 @@ var HistorySchema = new Schema({ default: '', trim: true }, + event_str: { + type: String, + default: '', + trim: true + }, params: { type: Object }, createdAt: { - type: Date + type: Date, + default: Date.now } }, {usePushEach: true}); diff --git a/modules/systems/server/controllers/systems.server.controller.js b/modules/systems/server/controllers/systems.server.controller.js index 4d19c904..f5a50234 100644 --- a/modules/systems/server/controllers/systems.server.controller.js +++ b/modules/systems/server/controllers/systems.server.controller.js @@ -398,7 +398,7 @@ exports.banAllUnfinishedUser = function (req, res) { }); //create trace log - traceLogCreate(req, traceConfig.action.AdminBanAllExaminationUnfinishedUsers, { + traceLogCreate(req, traceConfig.action.adminBanAllExaminationUnfinishedUsers, { user: user._id, num: num }); diff --git a/modules/torrents/server/controllers/completes.server.controller.js b/modules/torrents/server/controllers/completes.server.controller.js index 035c08f4..700b06bc 100644 --- a/modules/torrents/server/controllers/completes.server.controller.js +++ b/modules/torrents/server/controllers/completes.server.controller.js @@ -12,12 +12,14 @@ var path = require('path'), Torrent = mongoose.model('Torrent'), async = require('async'), validator = require('validator'), + history = require(path.resolve('./config/lib/history')), scoreUpdate = require(path.resolve('./config/lib/score')).update, traceLogCreate = require(path.resolve('./config/lib/tracelog')).create; var hnrConfig = config.meanTorrentConfig.hitAndRun; var traceConfig = config.meanTorrentConfig.trace; var scoreConfig = config.meanTorrentConfig.score; +var historyConfig = config.meanTorrentConfig.history; /** * removeWarning @@ -47,10 +49,15 @@ exports.removeWarning = function (req, res) { }).exec(); //create trace log - traceLogCreate(req, traceConfig.action.adminRemoveHnrWarning, { + traceLogCreate(req, traceConfig.action.adminRemoveUserHnrWarning, { user: comp.user._id, complete: comp._id }); + //write history + history.insert(user._id, historyConfig.action.adminRemoveUserHnrWarning, { + complete: comp._id, + by: req.user._id + }); } }); } else { diff --git a/modules/torrents/server/controllers/torrents.server.controller.js b/modules/torrents/server/controllers/torrents.server.controller.js index 078c8562..3e5eb8f6 100644 --- a/modules/torrents/server/controllers/torrents.server.controller.js +++ b/modules/torrents/server/controllers/torrents.server.controller.js @@ -1177,7 +1177,7 @@ exports.setSaleType = function (req, res) { } //create trace log - traceLogCreate(req, traceConfig.action.AdminTorrentSetSaleType, { + traceLogCreate(req, traceConfig.action.adminTorrentSetSaleType, { torrent: torrent._id, sale_status: req.params.saleType }); @@ -1213,7 +1213,7 @@ exports.setRecommendLevel = function (req, res) { scoreUpdate(req, torrent.user, scoreConfig.action.uploadTorrentBeRecommend); //create trace log - traceLogCreate(req, traceConfig.action.AdminTorrentSetRecommendLevel, { + traceLogCreate(req, traceConfig.action.adminTorrentSetRecommendLevel, { torrent: torrent._id, recommended: req.params.rlevel }); @@ -1286,7 +1286,7 @@ exports.setReviewedStatus = function (req, res) { } //create trace log - traceLogCreate(req, traceConfig.action.AdminTorrentSetReviewedStatus, { + traceLogCreate(req, traceConfig.action.adminTorrentSetReviewedStatus, { torrent: torrent._id, status: 'reviewed' }); @@ -1411,7 +1411,7 @@ exports.delete = function (req, res) { } //create trace log - traceLogCreate(req, traceConfig.action.AdminTorrentDelete, { + traceLogCreate(req, traceConfig.action.adminTorrentDelete, { torrent: torrent._id, reason: req.query.reason }); diff --git a/modules/users/client/views/admin/view-user.client.view.html b/modules/users/client/views/admin/view-user.client.view.html index c308fec5..badb0cab 100644 --- a/modules/users/client/views/admin/view-user.client.view.html +++ b/modules/users/client/views/admin/view-user.client.view.html @@ -17,10 +17,10 @@ ng-click="vm.presentInvitationsPopover.numbers = 1; vm.presentInvitationsPopover.days = 1;"> {{'BTN_PRESENT_INVITATIONS' | translate}} - - {{ 'STATUS_FIELD.BTN_EDIT' | translate}} - + + + + {{ 'STATUS_FIELD.BTN_REMOVE' | translate}} diff --git a/modules/users/server/controllers/admin.server.controller.js b/modules/users/server/controllers/admin.server.controller.js index ce329f6a..5b420d28 100644 --- a/modules/users/server/controllers/admin.server.controller.js +++ b/modules/users/server/controllers/admin.server.controller.js @@ -19,12 +19,14 @@ var path = require('path'), scoreUpdate = require(path.resolve('./config/lib/score')).update, errorHandler = require(path.resolve('./modules/core/server/controllers/errors.server.controller')), traceLogCreate = require(path.resolve('./config/lib/tracelog')).create, + history = require(path.resolve('./config/lib/history')), populateStrings = require(path.resolve('./config/lib/populateStrings')); const PEERSTATE_SEEDER = 'seeder'; const PEERSTATE_LEECHER = 'leecher'; var traceConfig = config.meanTorrentConfig.trace; +var historyConfig = config.meanTorrentConfig.history; var mtDebug = require(path.resolve('./config/lib/debug')); var appConfig = config.meanTorrentConfig.app; var serverMessage = require(path.resolve('./config/lib/server-message')); @@ -75,7 +77,7 @@ exports.update = function (req, res) { } //create trace log - traceLogCreate(req, traceConfig.action.AdminUserEdit, { + traceLogCreate(req, traceConfig.action.adminUserEdit, { user: user._id, firstName: req.body.firstName, lastName: req.body.lastName, @@ -100,7 +102,7 @@ exports.delete = function (req, res) { res.json(user); //create trace log - traceLogCreate(req, traceConfig.action.AdminUserDelete, { + traceLogCreate(req, traceConfig.action.adminUserDelete, { user: user._id }); }); @@ -248,9 +250,14 @@ exports.updateUserRole = function (req, res) { } //create trace log - traceLogCreate(req, traceConfig.action.AdminUpdateUserRole, { + traceLogCreate(req, traceConfig.action.adminUpdateUserRole, { user: user._id, - role: req.body.userRole + role: req.body.userRole[0] + }); + //write history + history.insert(user._id, historyConfig.action.adminUpdateUserRole, { + role: req.body.userRole[0], + by: req.user._id }); } }); @@ -281,10 +288,15 @@ exports.updateUserStatus = function (req, res) { res.json(user); //create trace log - traceLogCreate(req, traceConfig.action.AdminUpdateUserStatus, { + traceLogCreate(req, traceConfig.action.adminUpdateUserStatus, { user: user._id, status: req.body.userStatus }); + //write history + // history.insert(user._id, historyConfig.action.adminUpdateUserStatus, { + // status: req.body.userStatus, + // by: req.user._id + // }); } }); }; @@ -326,10 +338,15 @@ exports.updateUserScore = function (req, res) { //write score days/months log dataLog.scoreLog(user, sv); //create trace log - traceLogCreate(req, traceConfig.action.AdminUpdateUserScore, { + traceLogCreate(req, traceConfig.action.adminUpdateUserScore, { user: user._id, score: sv }); + //write history + history.insert(user._id, historyConfig.action.adminUpdateUserScore, { + score: sv, + by: req.user._id + }); }); }; @@ -355,10 +372,15 @@ exports.updateUserUploaded = function (req, res) { res.json(user); //create trace log - traceLogCreate(req, traceConfig.action.AdminUpdateUserUploaded, { + traceLogCreate(req, traceConfig.action.adminUpdateUserUploaded, { user: user._id, uploaded: req.body.userUploaded }); + //write history + history.insert(user._id, historyConfig.action.adminUpdateUserUploaded, { + uploaded: req.body.userUploaded, + by: req.user._id + }); }); }; @@ -384,10 +406,15 @@ exports.updateUserDownloaded = function (req, res) { res.json(user); //create trace log - traceLogCreate(req, traceConfig.action.AdminUpdateUserDownloaded, { + traceLogCreate(req, traceConfig.action.adminUpdateUserDownloaded, { user: user._id, downloaded: req.body.userDownloaded }); + //write history + history.insert(user._id, historyConfig.action.adminUpdateUserDownloaded, { + downloaded: req.body.userDownloaded, + by: req.user._id + }); }); }; @@ -448,11 +475,16 @@ exports.addVIPMonths = function (req, res) { } //create trace log - traceLogCreate(req, traceConfig.action.AdminUpdateUserVIPData, { + traceLogCreate(req, traceConfig.action.adminUpdateUserVIPData, { user: user._id, reset: false, months: months }); + //write history + history.insert(user._id, historyConfig.action.adminUpdateUserVIPData, { + months: months, + by: req.user._id + }); }); } else { return res.status(422).send({ @@ -537,10 +569,15 @@ exports.resetVIPData = function (req, res) { res.json(user); //create trace log - traceLogCreate(req, traceConfig.action.AdminUpdateUserVIPData, { + traceLogCreate(req, traceConfig.action.adminUpdateUserVIPData, { user: user._id, reset: true }); + //write history + history.insert(user._id, historyConfig.action.adminUpdateUserVIPData, { + months: 'reset', + by: req.user._id + }); }); }; @@ -574,10 +611,16 @@ exports.presentInvitations = function (req, res) { } else { res.json(user); //create trace log - traceLogCreate(req, traceConfig.action.adminPresentInvitations, { + traceLogCreate(req, traceConfig.action.adminPresentUserInvitations, { user: user._id, invitations: docs }); + //write history + history.insert(user._id, historyConfig.action.adminPresentUserInvitations, { + numbers: numbers, + days: days, + by: req.user._id + }); } }); };