aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornanalelfe <nargiza.nosirova@mail.utoronto.ca>2016-07-26 01:49:05 +0000
committernanalelfe <nargiza.nosirova@mail.utoronto.ca>2016-07-26 01:49:05 +0000
commit203071f005057ebb186ddd3e0ada8629420ed409 (patch)
tree7ac20e7fda8f9f3ca5d00ceee140e9701d44dcf7
parent0d8073039faa903ee0f12e68064c89b5f27cdf14 (diff)
Added add_user: extra check if username is taken by an admin (and nice versa). Fixed Answered, Inbox and comments fields in user_profile
-rw-r--r--node_simple.js49
-rw-r--r--routes/user.js81
-rw-r--r--views/user_profile_alt.hbs3
3 files changed, 91 insertions, 42 deletions
diff --git a/node_simple.js b/node_simple.js
index 596cef6..228e861 100644
--- a/node_simple.js
+++ b/node_simple.js
@@ -552,10 +552,20 @@ exports.find_user_name = function (user_name, callback) {
.then(function (db) {
var logins = db.collection('logins');
+ var admins = db.collection('admins');
logins.find( { user_name: user_name } ).toArray(function (err, result) {
if (err) throw err;
- else if (result.length == 0) { // nothing was found so this user is new
- callback(false);
+ else if (result.length == 0) { // nothing was found in users
+ // check if user_name is taken by admin
+ admins.find({username : user_name}).toArray(function(err, data) {
+ if (err) throw err;
+ else if (data.length == 0) {
+ callback(false);
+ }
+ else {
+ callback(true);
+ }
+ });
}
else {
callback(true);
@@ -1240,25 +1250,32 @@ exports.addAdmin = function (admin_data, callback) {
console.log('addAdmin, admin_data: ' + admin_data.fname);
console.log("inside addAdmin");
-
+ var logins = db.collection('logins');
// Check if the admin username already exists. Also check for user username. If it does, then we don't add the admin_data and return a message.
exports.adminExists( admin_data.username , function (error, exists, data, message) {
console.log("adminExists: " + message);
if (!exists && !error) {
- mongoFactory.getConnection(uri).then(function (db) {
-
- var admins = db.collection('admins');
-
- admins.insertOne( admin_data, function (err) {
- if (err) {
- callback(false, true, message);
- }
- else {
- callback(true, false, "Admin added.");
- }
-
- });
+ logins.find({username: username}).toArray(function (err, result) {
+ if (err){
+ callback(true, false, null, "Error: could not retreive logins collection in addAdmin().");
+ } else if (result.length) {
+ callback(false, false, 'User with given username already exists.');
+ } else {
+ mongoFactory.getConnection(uri).then(function (db) {
+
+ var admins = db.collection('admins');
+
+ admins.insertOne(admin_data, function (err) {
+ if (err) {
+ callback(false, true, message);
+ }
+ else {
+ callback(true, false, "Admin added.");
+ }
+ });
+ });
+ }
}).catch(function (err) {
callbackUser(false, true, "Unable to connect.");
})
diff --git a/routes/user.js b/routes/user.js
index e3340e0..47988df 100644
--- a/routes/user.js
+++ b/routes/user.js
@@ -25,6 +25,7 @@ router.get('/user_profile', loggedIn, isUser, function(req, res, next) {
var comments = [];
var inbox = [];
+ var error = null;
function getComments() {
return new Promise(function(resolve, reject) {
dbFile.retrieve_userComments_history(req.user.user_name, function (success, object) {
@@ -47,9 +48,11 @@ router.get('/user_profile', loggedIn, isUser, function(req, res, next) {
resolve(1);
} else if (object.length){
+ req.user.comments = object.length;
comments = object;
resolve(1);
} else {
+ req.user.comments = object.length;
resolve(1);
}
@@ -62,6 +65,7 @@ router.get('/user_profile', loggedIn, isUser, function(req, res, next) {
dbFile.checkMailbox(req.user.user_name, function(success, error, data, message){
if (success) {
inbox = data;
+ req.user.messages = inbox.length;
// needed to display in layout
var i = 0;
inbox.forEach(function(element) {
@@ -88,9 +92,28 @@ router.get('/user_profile', loggedIn, isUser, function(req, res, next) {
});
});
}
- getComments().then(getMail).then(function (data) {
+
+ function solutionsCount() {
+ return new Promise(function (resolve, reject) {
+ dbFile.retrieve_userSolutions_history(req.user.username, function (bool, results) {
+ if (!bool) {
+ error = 'Error: could not retrieve Answered count';
+ req.user.answered = 0;
+ resolve(1);
+ }
+ else {
+ req.user.answered = results.length;
+ console.log("RESULTS: ");
+ console.log(results);
+ resolve(1);
+ }
+ });
+ });
+ }
+
+ getComments().then(getMail).then(solutionsCount).then(function (data) {
console.log('got here fere');
- res.render('user_profile_alt', {comments : comments, inbox: inbox, csrfToken: req.csrfToken()});
+ res.render('user_profile_alt', {comments : comments, inbox: inbox, error: error, csrfToken: req.csrfToken()});
});
//res.render('user_profile_alt', {comments : comments, inbox: inbox, csrfToken: req.csrfToken()});
@@ -171,35 +194,43 @@ router.post('/signin', loggedOut, function(req, res, next) {
});
router.post('/user_profile/send_message', loggedIn, function(req, res, next) {
- var date = new Date();
- var current_date = date.toString().slice(0, 24);
- var subject = req.body.subject;
- if (!subject) {
- subject = '(none)';
+ if (req.user.user_name === req.body.receiver_username) {
+ req.session.messages = {error : 'You cannot send a message to yourself.'};
+ res.redirect('/user/user_profile/');
}
- var mail_data = {
- sender: req.user.user_name,
- receiver: req.body.receiver_username,
- subject: subject,
- message: req.body.message,
- date: current_date
- };
- //console.log(mail_data);
- dbFile.sendMail(mail_data, function(success, error, message) {
- if ((!success && !error) || (error)) {
- req.session.messages = {error : message};
- res.redirect('/user/user_profile/');
+ else {
+ var date = new Date();
+ var current_date = date.toString().slice(0, 24);
+ var subject = req.body.subject;
+ if (!subject) {
+ subject = '(none)';
+ }
+ var mail_data = {
+ sender: req.user.user_name,
+ receiver: req.body.receiver_username,
+ subject: subject,
+ message: req.body.message,
+ date: current_date
+ };
+ //console.log(mail_data);
+ dbFile.sendMail(mail_data, function(success, error, message) {
+ if ((!success && !error) || (error)) {
+ req.session.messages = {error : message};
+ res.redirect('/user/user_profile/');
- } else {
- req.session.messages = {success: message};
- res.redirect('/user/user_profile/');
- $('#profile-send-message').show();
+ } else {
+ req.session.messages = {success: message};
+ res.redirect('/user/user_profile/');
+ //$('#profile-send-message').show();
- }
- });
+
+ }
+ });
+
+ }
});
diff --git a/views/user_profile_alt.hbs b/views/user_profile_alt.hbs
index 7297b63..4d8fd8b 100644
--- a/views/user_profile_alt.hbs
+++ b/views/user_profile_alt.hbs
@@ -68,8 +68,9 @@
</tr>
<tr>
<tr>
- <td>Messages:</td>
+ <td>Inbox:</td>
<td>{{ user.messages }}</td>
+
</tr>
<tr>
<td>Comments:</td>