Fix corr notification bug
[vchess.git] / server / models / User.js
index edb3c06..d91045b 100644 (file)
@@ -13,7 +13,7 @@ const sendEmail = require('../utils/mailer');
  *   sessionToken: token in cookies for authentication
  *   notify: boolean (send email notifications for corr games)
  *   created: datetime
- *   newsRead: datetime
+ *   bio: text
  */
 
 const UserModel = {
@@ -37,11 +37,11 @@ const UserModel = {
   },
 
   // Find one user by id, name, email, or token
-  getOne: function(by, value, cb) {
+  getOne: function(by, value, fields, cb) {
     const delimiter = (typeof value === "string" ? "'" : "");
     db.serialize(function() {
       const query =
-        "SELECT * " +
+        "SELECT " + fields + " " +
         "FROM Users " +
         "WHERE " + by + " = " + delimiter + value + delimiter;
       db.get(query, cb);
@@ -58,6 +58,16 @@ const UserModel = {
     });
   },
 
+  getBio: function(id, cb) {
+    db.serialize(function() {
+      const query =
+        "SELECT bio " +
+        "FROM Users " +
+        "WHERE id = " + id;
+      db.get(query, cb);
+    });
+  },
+
   /////////
   // MODIFY
 
@@ -71,13 +81,13 @@ const UserModel = {
     });
   },
 
-  setNewsRead: function(id) {
+  setBio: function(id, bio) {
     db.serialize(function() {
       const query =
         "UPDATE Users " +
-        "SET newsRead = " + Date.now() + " " +
+        "SET bio = ? " +
         "WHERE id = " + id;
-      db.run(query);
+      db.run(query, bio);
     });
   },
 
@@ -97,7 +107,7 @@ const UserModel = {
         query =
           "UPDATE Users " +
           // Also empty the login token to invalidate future attempts
-          "SET loginToken = NULL" +
+          "SET loginToken = NULL, loginTime = NULL " +
           setSessionToken + " " +
           "WHERE id = " + id;
         db.run(query);
@@ -129,7 +139,7 @@ const UserModel = {
   },
 
   tryNotify: function(id, message) {
-    UserModel.getOne("id", id, (err,user) => {
+    UserModel.getOne("id", id, "name, email, notify", (err, user) => {
       if (!err && user.notify) UserModel.notify(user, message);
     });
   },