diff --git a/config/lib/socket.io.js b/config/lib/socket.io.js
index 64bc1112..d4c28b87 100644
--- a/config/lib/socket.io.js
+++ b/config/lib/socket.io.js
@@ -102,9 +102,6 @@ module.exports = function (app, db) {
var logined = false;
var banned = false;
- //init user
- initUser(socket.request.user);
-
// check user already login
io.chatClients.forEach(function (s) {
if (s.request.user.username === socket.request.user.username) {
@@ -144,23 +141,6 @@ module.exports = function (app, db) {
});
});
- // init user isOper/isAdmin/isVip
- function initUser(user) {
- user.isVip = false;
-
- if (!user.vip_start_at || !user.vip_end_at) {
- user.isVip = false;
- } else if (moment(Date.now()) > moment(user.vip_end_at)) {
- user.isVip = false;
- } else {
- user.isVip = true;
- }
-
- user.isOper = (user.roles[0] === 'oper' || user.roles[0] === 'admin');
- user.isAdmin = (user.roles[0] === 'admin');
-
- }
-
// Add an event listener to the 'connection' event
io.on('connection', function (socket) {
config.files.server.sockets.forEach(function (socketConfiguration) {
diff --git a/modules/announce/server/controllers/announces.server.controller.js b/modules/announce/server/controllers/announces.server.controller.js
index 30c06ba8..b38f8e04 100644
--- a/modules/announce/server/controllers/announces.server.controller.js
+++ b/modules/announce/server/controllers/announces.server.controller.js
@@ -824,21 +824,6 @@ exports.announce = function (req, res) {
}
};
-/**
- * get user isVip status
- * @param u
- * @returns {boolean}
- */
-function isVip(u) {
- if (!u.vip_start_at || !u.vip_end_at) {
- return false;
- } else if (moment(Date.now()) > moment(u.vip_end_at)) {
- return false;
- } else {
- return true;
- }
-}
-
/**
* userByPasskey
* @param req
@@ -852,7 +837,6 @@ exports.userByPasskey = function (req, res, next, pk) {
.exec(function (err, u) {
if (u) {
req.passkeyuser = u;
- req.passkeyuser.isVip = isVip(u);
} else {
req.passkeyuser = undefined;
}
diff --git a/modules/forums/server/controllers/forums.server.controller.js b/modules/forums/server/controllers/forums.server.controller.js
index 10245f1c..fb3c4419 100644
--- a/modules/forums/server/controllers/forums.server.controller.js
+++ b/modules/forums/server/controllers/forums.server.controller.js
@@ -496,7 +496,7 @@ exports.toggleTopicTopStatus = function (req, res) {
exports.toggleTopicGlobalStatus = function (req, res) {
var topic = req.topic;
- if (!req.user.toJSON().isOper && !req.user.toJSON().isAdmin) {
+ if (!req.user.isOper && !req.user.isAdmin) {
return res.status(403).json({
message: 'ERROR: User is not authorized'
});
@@ -977,9 +977,9 @@ exports.topicById = function (req, res, next, id) {
* @returns {boolean}
*/
function canEdit(u, f) {
- if (u.toJSON().isOper) {
+ if (u.isOper) {
return true;
- } else if (u.toJSON().isAdmin) {
+ } else if (u.isAdmin) {
return true;
} else if (isModerator(f)) {
return true;
diff --git a/modules/torrents/client/views/movie-list.client.view.html b/modules/torrents/client/views/movie-list.client.view.html
index 72d396b0..bce0d967 100644
--- a/modules/torrents/client/views/movie-list.client.view.html
+++ b/modules/torrents/client/views/movie-list.client.view.html
@@ -241,6 +241,7 @@
+
|
diff --git a/modules/torrents/server/controllers/completes.server.controller.js b/modules/torrents/server/controllers/completes.server.controller.js
index 5a9e0447..90cec51c 100644
--- a/modules/torrents/server/controllers/completes.server.controller.js
+++ b/modules/torrents/server/controllers/completes.server.controller.js
@@ -24,7 +24,7 @@ var traceConfig = config.meanTorrentConfig.trace;
*/
exports.removeWarning = function (req, res) {
var comp = req.complate;
- var user = req.user ? req.user.toJSON() : {}; //fill isVip, isAdmin, isOper in toJSON()
+ var user = req.user;
if (user.isOper) {
comp.hnr_warning = false;
diff --git a/modules/users/server/models/user.server.model.js b/modules/users/server/models/user.server.model.js
index f7821ded..4fd9a5a2 100644
--- a/modules/users/server/models/user.server.model.js
+++ b/modules/users/server/models/user.server.model.js
@@ -119,6 +119,14 @@ var UserSchema = new Schema({
default: ['user'],
required: 'Please provide at least one role'
},
+ isOper: {
+ type: Boolean,
+ default: false
+ },
+ isAdmin: {
+ type: Boolean,
+ default: false
+ },
status: {
type: String,
default: 'normal'
@@ -131,6 +139,10 @@ var UserSchema = new Schema({
type: Date,
default: ''
},
+ isVip: {
+ type: Boolean,
+ default: false
+ },
score: {
type: Number,
default: 0
@@ -201,29 +213,6 @@ var UserSchema = new Schema({
}
});
-/**
- * overwrite toJSON
- */
-UserSchema.methods.toJSON = function (options) {
- var document = this.toObject(options);
- document.isVip = false;
-
- if (!document.vip_start_at || !document.vip_end_at) {
- document.isVip = false;
- } else if (moment(Date.now()) > moment(document.vip_end_at)) {
- document.isVip = false;
- } else {
- document.isVip = true;
- }
-
- if (document.roles) {
- document.isOper = (document.roles[0] === 'oper' || document.roles[0] === 'admin');
- document.isAdmin = (document.roles[0] === 'admin');
- }
-
- return document;
-};
-
/**
* Hook a pre save method to hash the password
*/
@@ -236,6 +225,8 @@ UserSchema.pre('save', function (next) {
}
countRatio(this);
+ updateVipFlag(this);
+ updateOperAdminFlag(this);
this.constructor.count(function (err, count) {
if (err) {
@@ -255,9 +246,16 @@ UserSchema.pre('save', function (next) {
*/
UserSchema.pre('update', function (next) {
countRatio(this);
+ updateVipFlag(this);
+ updateOperAdminFlag(this);
+
next();
});
+/**
+ * countRatio
+ * @param user
+ */
function countRatio(user) {
if (user.uploaded > 0 && user.downloaded === 0) {
user.ratio = -1;
@@ -268,6 +266,36 @@ function countRatio(user) {
}
}
+/**
+ * updateVipFlag
+ * @param user
+ */
+function updateVipFlag(user) {
+ user.isVip = false;
+
+ if (!user.vip_start_at || !user.vip_end_at) {
+ user.isVip = false;
+ } else if (moment(Date.now()) > moment(user.vip_end_at)) {
+ user.isVip = false;
+ } else {
+ user.isVip = true;
+ }
+}
+
+/**
+ * updateOperAdminFlag
+ * @param user
+ */
+function updateOperAdminFlag(user) {
+ user.isOper = false;
+ user.isAdmin = false;
+
+ if (user.roles) {
+ user.isOper = (user.roles[0] === 'oper' || user.roles[0] === 'admin');
+ user.isAdmin = (user.roles[0] === 'admin');
+ }
+}
+
/**
* Hook a pre validate method to test the local password
*/
@@ -442,9 +470,9 @@ UserSchema.statics.seed = seed;
mongoose.model('User', UserSchema);
/**
-* Seeds the User collection with document (User)
-* and provided options.
-*/
+ * Seeds the User collection with document (User)
+ * and provided options.
+ */
function seed(doc, options) {
var User = mongoose.model('User');