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
* sessionToken: token in cookies for authentication
* notify: boolean (send email notifications for corr games)
* created: datetime
- * newsRead: datetime
+ * bio: text
*/
const UserModel = {
+
checkNameEmail: function(o) {
return (
(!o.name || !!(o.name.match(/^[\w-]+$/))) &&
},
// 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);
});
},
+ getBio: function(id, cb) {
+ db.serialize(function() {
+ const query =
+ "SELECT bio " +
+ "FROM Users " +
+ "WHERE id = " + id;
+ db.get(query, cb);
+ });
+ },
+
/////////
// MODIFY
});
},
- 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);
});
},
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);
},
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);
});
},
}
});
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;