From ee74e79d5ce83a934aaebec0f67cd72934242cfd Mon Sep 17 00:00:00 2001 From: OldHawk Date: Wed, 6 Jun 2018 16:39:01 +0800 Subject: [PATCH] feat(dataCenter): admin can view any users dataCenter --- modules/core/client/app/trans-string-en.js | 1 + modules/core/client/app/trans-string-zh-tw.js | 1 + modules/core/client/app/trans-string-zh.js | 1 + .../client/config/data-logs.client.routes.js | 12 ++-- .../data-logs.client.controller.js | 10 +-- .../client/views/data.client.view.html | 14 ++-- .../data-logs.server.controller.js | 64 +++++++++++++------ .../views/admin/view-user.client.view.html | 4 ++ 8 files changed, 70 insertions(+), 37 deletions(-) diff --git a/modules/core/client/app/trans-string-en.js b/modules/core/client/app/trans-string-en.js index c1faa802..f760b475 100644 --- a/modules/core/client/app/trans-string-en.js +++ b/modules/core/client/app/trans-string-en.js @@ -984,6 +984,7 @@ BTN_UNFOLLOW: 'Unfollow', BTN_MANAGE: 'Manage', BTN_SEND_MESSAGE: 'Send message', + BTN_VIEW_USER_DATA_CENTER: 'Data Center', BTN_EDIT: 'Edit', BTN_REMOVE: 'Remove', PICTURE: 'Profile picture', diff --git a/modules/core/client/app/trans-string-zh-tw.js b/modules/core/client/app/trans-string-zh-tw.js index dc69cc64..e7a94295 100644 --- a/modules/core/client/app/trans-string-zh-tw.js +++ b/modules/core/client/app/trans-string-zh-tw.js @@ -984,6 +984,7 @@ BTN_UNFOLLOW: '取消關注', BTN_MANAGE: '管理', BTN_SEND_MESSAGE: '發消息', + BTN_VIEW_USER_DATA_CENTER: '數據中心', BTN_EDIT: '編輯', BTN_REMOVE: '刪除', PICTURE: '頭像', diff --git a/modules/core/client/app/trans-string-zh.js b/modules/core/client/app/trans-string-zh.js index 054a9b66..9fd9bdc0 100644 --- a/modules/core/client/app/trans-string-zh.js +++ b/modules/core/client/app/trans-string-zh.js @@ -984,6 +984,7 @@ BTN_UNFOLLOW: '取消关注', BTN_MANAGE: '管理', BTN_SEND_MESSAGE: '发消息', + BTN_VIEW_USER_DATA_CENTER: '数据中心', BTN_EDIT: '编辑', BTN_REMOVE: '删除', PICTURE: '头像', diff --git a/modules/data-logs/client/config/data-logs.client.routes.js b/modules/data-logs/client/config/data-logs.client.routes.js index 72ffb98c..f99e166a 100644 --- a/modules/data-logs/client/config/data-logs.client.routes.js +++ b/modules/data-logs/client/config/data-logs.client.routes.js @@ -20,42 +20,42 @@ } }) .state('dataCenter.score', { - url: '/score', + url: '/score?:uid', templateUrl: '/modules/data-logs/client/views/data-score.client.view.html', data: { pageTitle: 'PAGETITLE.DATA_CENTER' } }) .state('dataCenter.uploaded', { - url: '/uploaded', + url: '/uploaded?:uid', templateUrl: '/modules/data-logs/client/views/data-uploaded.client.view.html', data: { pageTitle: 'PAGETITLE.DATA_CENTER' } }) .state('dataCenter.downloaded', { - url: '/downloaded', + url: '/downloaded?:uid', templateUrl: '/modules/data-logs/client/views/data-downloaded.client.view.html', data: { pageTitle: 'PAGETITLE.DATA_CENTER' } }) .state('dataCenter.scoreHistory', { - url: '/scoreHistory', + url: '/scoreHistory?:uid', templateUrl: '/modules/data-logs/client/views/data-score-history.client.view.html', data: { pageTitle: 'PAGETITLE.DATA_CENTER' } }) .state('dataCenter.uploadedHistory', { - url: '/uploadedHistory', + url: '/uploadedHistory?:uid', templateUrl: '/modules/data-logs/client/views/data-uploaded-history.client.view.html', data: { pageTitle: 'PAGETITLE.DATA_CENTER' } }) .state('dataCenter.downloadedHistory', { - url: '/downloadedHistory', + url: '/downloadedHistory?:uid', templateUrl: '/modules/data-logs/client/views/data-downloaded-history.client.view.html', data: { pageTitle: 'PAGETITLE.DATA_CENTER' diff --git a/modules/data-logs/client/controllers/data-logs.client.controller.js b/modules/data-logs/client/controllers/data-logs.client.controller.js index ab294a2e..44b8448d 100644 --- a/modules/data-logs/client/controllers/data-logs.client.controller.js +++ b/modules/data-logs/client/controllers/data-logs.client.controller.js @@ -10,6 +10,8 @@ function DataCenterController($scope, $state, $translate, $timeout, Authentication, $window, MeanTorrentConfig, NotifycationService, UserDaysLogsService, UserMonthsLogsService, $rootScope, moment, mtDebug, $filter, UserScoreLogsService, UserAnnounceLogsService) { + $scope.$state = $state; + var vm = this; vm.user = Authentication.user; vm.itemsPerPageConfig = MeanTorrentConfig.meanTorrentConfig.itemsPerPage; @@ -28,7 +30,7 @@ */ vm.getUserDaysLogs = function () { UserDaysLogsService.query({ - userId: vm.user._id + userId: $state.params.uid ? $state.params.uid : vm.user._id }, function (items) { vm.userDaysLogsData = getUserDaysLogsData(items); mtDebug.info(vm.userDaysLogsData); @@ -121,7 +123,7 @@ */ vm.getUserMonthsLogs = function () { UserMonthsLogsService.query({ - userId: vm.user._id + userId: $state.params.uid ? $state.params.uid : vm.user._id }, function (items) { vm.userMonthsLogsData = getUserMonthsLogsData(items); mtDebug.info(vm.userMonthsLogsData); @@ -214,7 +216,7 @@ */ vm.getUserScoreHistory = function () { UserScoreLogsService.query({ - userId: vm.user._id + userId: $state.params.uid ? $state.params.uid : vm.user._id }, function (items) { vm.userLogsData = items; vm.buildPager(); @@ -228,7 +230,7 @@ */ vm.getUserAnnounceHistory = function (status) { UserAnnounceLogsService.query({ - userId: vm.user._id + userId: $state.params.uid ? $state.params.uid : vm.user._id }, function (items) { if (status === 'seeding') { vm.userLogsData = items.filter(function (it) { diff --git a/modules/data-logs/client/views/data.client.view.html b/modules/data-logs/client/views/data.client.view.html index 04941e04..e16a010e 100644 --- a/modules/data-logs/client/views/data.client.view.html +++ b/modules/data-logs/client/views/data.client.view.html @@ -1,20 +1,20 @@ -
+
diff --git a/modules/data-logs/server/controllers/data-logs.server.controller.js b/modules/data-logs/server/controllers/data-logs.server.controller.js index 23faf75f..4b61e89c 100644 --- a/modules/data-logs/server/controllers/data-logs.server.controller.js +++ b/modules/data-logs/server/controllers/data-logs.server.controller.js @@ -21,34 +21,52 @@ var announceConfig = config.meanTorrentConfig.announce; * List of UserDaysLog */ exports.getUserDaysLogs = function (req, res) { - UserDaysLog.find({ - user: objectId(req.params.userId) - }).exec(function (err, logs) { - res.json(logs); - }); + if (objectId(req.params.userId).equals(req.user._id) || req.user.isOper) { + UserDaysLog.find({ + user: objectId(req.params.userId) + }).exec(function (err, logs) { + res.json(logs); + }); + } else { + return res.status(403).json({ + message: 'SERVER.USER_IS_NOT_AUTHORIZED' + }); + } }; /** * List of UserMonthsLog */ exports.getUserMonthsLogs = function (req, res) { - UserMonthsLog.find({ - user: objectId(req.params.userId) - }).exec(function (err, logs) { - res.json(logs); - }); + if (objectId(req.params.userId).equals(req.user._id) || req.user.isOper) { + UserMonthsLog.find({ + user: objectId(req.params.userId) + }).exec(function (err, logs) { + res.json(logs); + }); + } else { + return res.status(403).json({ + message: 'SERVER.USER_IS_NOT_AUTHORIZED' + }); + } }; /** * List of getUserScoreLogs */ exports.getUserScoreLogs = function (req, res) { - ScoreLog.find({ - user: objectId(req.params.userId) - }).sort('-createdAt') - .exec(function (err, logs) { - res.json(logs); + if (objectId(req.params.userId).equals(req.user._id) || req.user.isOper) { + ScoreLog.find({ + user: objectId(req.params.userId) + }).sort('-createdAt') + .exec(function (err, logs) { + res.json(logs); + }); + } else { + return res.status(403).json({ + message: 'SERVER.USER_IS_NOT_AUTHORIZED' }); + } }; /** @@ -57,10 +75,16 @@ exports.getUserScoreLogs = function (req, res) { * @param res */ exports.getUserAnnounceLogs = function (req, res) { - AnnounceLog.find({ - user: objectId(req.params.userId) - }).sort('-createdAt') - .exec(function (err, logs) { - res.json(logs); + if (objectId(req.params.userId).equals(req.user._id) || req.user.isOper) { + AnnounceLog.find({ + user: objectId(req.params.userId) + }).sort('-createdAt') + .exec(function (err, logs) { + res.json(logs); + }); + } else { + return res.status(403).json({ + message: 'SERVER.USER_IS_NOT_AUTHORIZED' }); + } }; 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 d2a6fe45..05664757 100644 --- a/modules/users/client/views/admin/view-user.client.view.html +++ b/modules/users/client/views/admin/view-user.client.view.html @@ -7,6 +7,10 @@ {{ 'STATUS_FIELD.BTN_SEND_MESSAGE' | translate}} + + {{ 'STATUS_FIELD.BTN_VIEW_USER_DATA_CENTER' | translate}} +