Remove tourneyPath: doesn't make sense without tournament website
[vchess.git] / server / models / User.js
index 37df4e6..cc104ab 100644 (file)
@@ -2,10 +2,11 @@ const db = require("../utils/database");
 const genToken = require("../utils/tokenGenerator");
 const params = require("../config/parameters");
 const sendEmail = require('../utils/mailer');
+const { exec } = require("child_process");
 
 /*
  * Structure:
- *   _id: integer
+ *   id: integer
  *   name: varchar
  *   email: varchar
  *   loginToken: token on server only
@@ -17,6 +18,7 @@ const sendEmail = require('../utils/mailer');
  */
 
 const UserModel = {
+
   checkNameEmail: function(o) {
     return (
       (!o.name || !!(o.name.match(/^[\w-]+$/))) &&
@@ -37,11 +39,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);
@@ -107,7 +109,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);
@@ -139,7 +141,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);
     });
   },
@@ -170,14 +172,16 @@ const UserModel = {
           }
         });
         if (toRemove.length > 0) {
+          const remArg = toRemove.join(",");
           db.run(
             "DELETE FROM Users " +
-            "WHERE id IN (" + toRemove.join(",") + ")"
+            "WHERE id IN (" + remArg + ")"
           );
         }
       });
     });
-  },
-}
+  }
+
+};
 
 module.exports = UserModel;