From 37cd2887fe5063b09c61ef90f5b986785cfc8ffe Mon Sep 17 00:00:00 2001 From: OldHawk Date: Tue, 29 May 2018 18:05:10 +0800 Subject: [PATCH] feat(history): show user account history on manage page --- modules/core/client/app/trans-string-en.js | 20 +++++----- modules/core/client/app/trans-string-zh-tw.js | 20 +++++----- modules/core/client/app/trans-string-zh.js | 20 +++++----- modules/core/client/less/margin.less | 8 ++++ .../admin/user.client.controller.js | 39 ++++++++++++++++++- modules/users/client/less/user.less | 13 +++++++ .../client/services/users.client.service.js | 11 ++++++ .../views/admin/view-user.client.view.html | 15 +++++-- .../users/server/config/strategies/local.js | 2 +- .../server/config/users.server.config.js | 2 +- .../controllers/admin.server.controller.js | 38 ++++++++++++++---- .../users.authorization.server.controller.js | 2 +- .../server/policies/admin.server.policy.js | 3 +- .../server/routes/admin.server.routes.js | 2 + 14 files changed, 151 insertions(+), 44 deletions(-) diff --git a/modules/core/client/app/trans-string-en.js b/modules/core/client/app/trans-string-en.js index 22c1e524..217f24ec 100644 --- a/modules/core/client/app/trans-string-en.js +++ b/modules/core/client/app/trans-string-en.js @@ -1017,7 +1017,9 @@ CURR_LEECHED_IP: 'Latest leeched IP', BT_CLIENT: 'Leeched BT Client list', ADMIN_REMARKS: 'Admin Remarks', - BTN_SAVE_REMARKS: 'Save remarks' + BTN_SAVE_REMARKS: 'Save remarks', + ADMIN_HISTORY: 'Operate history', + ADMIN_VIEW_HISTORY: 'View history' }, TORRENT_TYPE_LABEL: { MOVIE: 'Movie', @@ -1716,14 +1718,14 @@ //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}}' + ADMIN_UPDATE_USER_ROLE: '`{{by.displayName}}` update account role to: `{{role}}`', + ADMIN_UPDATE_USER_STATUS: '`{{by.displayName}}` update account status to: `{{status}}`', + ADMIN_UPDATE_USER_SCORE: '`{{by.displayName}}` update account score: `{{score}}`', + ADMIN_UPDATE_USER_UPLOADED: '`{{by.displayName}}` update account uploaded: `{{uploaded | bytes:2}}`', + ADMIN_UPDATE_USER_DOWNLOADED: '`{{by.displayName}}` update account downloaded: `{{downloaded | bytes:2}}`', + ADMIN_UPDATE_USER_VIP_DATA: '`{{by.displayName}}` update account vip data: `{{months}}` months', + ADMIN_PRESENT_USER_INVITATIONS: '`{{by.displayName}}` present `{{numbers}}` official invitations, expires `{{days}}` days', + ADMIN_REMOVE_USER_HNR_WARNING: '`{{by.displayName}}` remove H&R warning, complete id: `{{complete}}`' }, //server returned string diff --git a/modules/core/client/app/trans-string-zh-tw.js b/modules/core/client/app/trans-string-zh-tw.js index aee6b2b2..9d2fec29 100644 --- a/modules/core/client/app/trans-string-zh-tw.js +++ b/modules/core/client/app/trans-string-zh-tw.js @@ -1017,7 +1017,9 @@ CURR_LEECHED_IP: '最近一次下載IP', BT_CLIENT: '下載過的BT客戶端', ADMIN_REMARKS: '管理員備註', - BTN_SAVE_REMARKS: '保存備註' + BTN_SAVE_REMARKS: '保存備註', + ADMIN_HISTORY: '管理員操作歷史', + ADMIN_VIEW_HISTORY: '查看歷史' }, TORRENT_TYPE_LABEL: { MOVIE: '電影', @@ -1716,14 +1718,14 @@ //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}}' + ADMIN_UPDATE_USER_ROLE: '`{{by.displayName}}` 改變帳戶角色為: `{{role}}`', + ADMIN_UPDATE_USER_STATUS: '`{{by.displayName}}` 改變帳戶狀態為: `{{status}}`', + ADMIN_UPDATE_USER_SCORE: '`{{by.displayName}}` 修改帳戶積分: `{{score}}`', + ADMIN_UPDATE_USER_UPLOADED: '`{{by.displayName}}` 修改帳戶上傳量: `{{uploaded | bytes:2}}`', + ADMIN_UPDATE_USER_DOWNLOADED: '`{{by.displayName}}` 修改帳戶下載量: `{{downloaded | bytes:2}}`', + ADMIN_UPDATE_USER_VIP_DATA: '`{{by.displayName}}` 修改帳戶 VIP 數據: `{{months}}` 個月', + ADMIN_PRESENT_USER_INVITATIONS: '`{{by.displayName}}` 贈送 `{{numbers}}` 個官方邀請函, 有效期 `{{days}}` 天', + ADMIN_REMOVE_USER_HNR_WARNING: '`{{by.displayName}}` 移除 H&R 警告, complete id: `{{complete}}`' }, //server returned string diff --git a/modules/core/client/app/trans-string-zh.js b/modules/core/client/app/trans-string-zh.js index 33bdeddc..87221bcf 100644 --- a/modules/core/client/app/trans-string-zh.js +++ b/modules/core/client/app/trans-string-zh.js @@ -1017,7 +1017,9 @@ CURR_LEECHED_IP: '最近一次下载IP', BT_CLIENT: '下载过的BT客户端', ADMIN_REMARKS: '管理员备注', - BTN_SAVE_REMARKS: '保存备注' + BTN_SAVE_REMARKS: '保存备注', + ADMIN_HISTORY: '管理员操作历史', + ADMIN_VIEW_HISTORY: '查看历史' }, TORRENT_TYPE_LABEL: { MOVIE: '电影', @@ -1716,14 +1718,14 @@ //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}}' + ADMIN_UPDATE_USER_ROLE: '`{{by.displayName}}` 改变帐户角色为: `{{role}}`', + ADMIN_UPDATE_USER_STATUS: '`{{by.displayName}}` 改变帐户状态为: `{{status}}`', + ADMIN_UPDATE_USER_SCORE: '`{{by.displayName}}` 修改帐户积分: `{{score}}`', + ADMIN_UPDATE_USER_UPLOADED: '`{{by.displayName}}` 修改帐户上传量: `{{uploaded | bytes:2}}`', + ADMIN_UPDATE_USER_DOWNLOADED: '`{{by.displayName}}` 修改帐户下载量: `{{downloaded | bytes:2}}`', + ADMIN_UPDATE_USER_VIP_DATA: '`{{by.displayName}}` 修改帐户 VIP 数据: `{{months}}` 个月', + ADMIN_PRESENT_USER_INVITATIONS: '`{{by.displayName}}` 赠送 `{{numbers}}` 个官方邀请函, 有效期 `{{days}}` 天', + ADMIN_REMOVE_USER_HNR_WARNING: '`{{by.displayName}}` 移除 H&R 警告, complete id: `{{complete}}`' }, //server returned string diff --git a/modules/core/client/less/margin.less b/modules/core/client/less/margin.less index 0cc2fb16..222f10de 100644 --- a/modules/core/client/less/margin.less +++ b/modules/core/client/less/margin.less @@ -118,6 +118,10 @@ padding-top: 10px; } +.padding-top-15 { + padding-top: 15px; +} + .padding-top-20 { padding-top: 20px; } @@ -146,6 +150,10 @@ padding-bottom: 10px; } +.padding-bottom-15 { + padding-bottom: 15px; +} + .padding-bottom-20 { padding-bottom: 20px; } diff --git a/modules/users/client/controllers/admin/user.client.controller.js b/modules/users/client/controllers/admin/user.client.controller.js index a4606995..9964f4e2 100644 --- a/modules/users/client/controllers/admin/user.client.controller.js +++ b/modules/users/client/controllers/admin/user.client.controller.js @@ -6,10 +6,12 @@ .controller('UserController', UserController); UserController.$inject = ['$scope', '$state', '$window', 'Authentication', 'userResolve', 'Notification', 'NotifycationService', 'MeanTorrentConfig', - 'AdminService', 'ScoreLevelService', 'DebugConsoleService', 'TorrentGetInfoServices', 'SideOverlay', 'MakerGroupService']; + 'AdminService', 'ScoreLevelService', 'DebugConsoleService', 'TorrentGetInfoServices', 'SideOverlay', 'MakerGroupService', '$filter', '$translate', + 'marked']; function UserController($scope, $state, $window, Authentication, user, Notification, NotifycationService, MeanTorrentConfig, - AdminService, ScoreLevelService, mtDebug, TorrentGetInfoServices, SideOverlay, MakerGroupService) { + AdminService, ScoreLevelService, mtDebug, TorrentGetInfoServices, SideOverlay, MakerGroupService, $filter, $translate, + marked) { var vm = this; vm.TGI = TorrentGetInfoServices; vm.authentication = Authentication; @@ -62,6 +64,15 @@ mtDebug.info(vm.user); + /** + * $watch 'vm.user' + */ + $scope.$watch('vm.user', function (newValue, oldValue) { + if (vm.user) { + vm.getUserHistory(); + } + }); + /** * remove * @param user @@ -466,5 +477,29 @@ }); }; + + /** + * getUserHistory + */ + vm.getUserHistory = function () { + AdminService.userHistory({ + userId: user._id + }).then(function (res) { + vm.historyList = res; + }); + }; + + /** + * getHistoryContent + * @param h + * @returns {string} + */ + vm.getHistoryContent = function (h) { + var time = $filter('date')(h.createdAt, 'yyyy-MM-dd HH:mm'); + var con = $translate.instant('HISTORY.' + h.event_str, h.params); + + var res = time + ' - ' + con; + return marked(res, {sanitize: false}); + }; } }()); diff --git a/modules/users/client/less/user.less b/modules/users/client/less/user.less index 164cbc3b..68cd0a3a 100644 --- a/modules/users/client/less/user.less +++ b/modules/users/client/less/user.less @@ -31,4 +31,17 @@ display: table-row !important; float: none !important; } +} + +.user-remarks { + textarea { + min-height: 150px; + line-height: 0.8; + resize: vertical; + } +} +.user-history { + height: 150px; + line-height: 0.8; + overflow-y: scroll; } \ No newline at end of file diff --git a/modules/users/client/services/users.client.service.js b/modules/users/client/services/users.client.service.js index 0f4e6b93..153aab8b 100644 --- a/modules/users/client/services/users.client.service.js +++ b/modules/users/client/services/users.client.service.js @@ -325,6 +325,14 @@ params: { userId: '@userId' } + }, + getUserHistory: { + method: 'GET', + isArray: true, + url: '/api/users/:userId/history', + params: { + userId: '@userId' + } } }); @@ -361,6 +369,9 @@ }, presentUserInvitations: function (params) { return this.presentInvitations(params).$promise; + }, + userHistory: function (params) { + return this.getUserHistory(params).$promise; } }); 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 badb0cab..d2a6fe45 100644 --- a/modules/users/client/views/admin/view-user.client.view.html +++ b/modules/users/client/views/admin/view-user.client.view.html @@ -18,8 +18,8 @@ {{'BTN_PRESENT_INVITATIONS' | translate}} - - + + {{ 'STATUS_FIELD.BTN_REMOVE' | translate}} @@ -285,10 +285,17 @@
  • +
    {{ 'STATUS_FIELD.ADMIN_HISTORY' | translate}}:
    +
    +
    +

    +
    +
    +
    {{ 'STATUS_FIELD.ADMIN_REMARKS' | translate}}:
    -
    - +
    +