X-Git-Url: https://git.auder.net/assets/current/git-logo.png?a=blobdiff_plain;f=server%2Fmodels%2FUser.js;h=ee4b056658e105a8691b4ec3364a60523ea838f7;hb=83494c7fbd83fafa28c5a434a1c83f56c17e3d04;hp=60584275713dbdefe177a5064bdb7749c3de402d;hpb=ed9c9c3741ec8b03cf899eae529216a2520bba0d;p=vchess.git diff --git a/server/models/User.js b/server/models/User.js index 60584275..ee4b0566 100644 --- a/server/models/User.js +++ b/server/models/User.js @@ -1,7 +1,7 @@ var db = require("../utils/database"); -var maild = require("../utils/mailer.js"); var genToken = require("../utils/tokenGenerator"); var params = require("../config/parameters"); +var sendEmail = require('../utils/mailer'); /* * Structure: @@ -12,6 +12,7 @@ var params = require("../config/parameters"); * loginTime: datetime (validity) * sessionToken: token in cookies for authentication * notify: boolean (send email notifications for corr games) + * created: datetime */ const UserModel = @@ -40,8 +41,8 @@ const UserModel = db.serialize(function() { const insertQuery = "INSERT INTO Users " + - "(name, email, notify) VALUES " + - "('" + name + "', '" + email + "', " + notify + ")"; + "(name, email, notify, created) VALUES " + + "('" + name + "', '" + email + "', " + notify + "," + Date.now() + ")"; db.run(insertQuery, err => { if (!!err) return callback(err); @@ -128,11 +129,40 @@ const UserModel = ///////////////// // NOTIFICATIONS - tryNotify: function(oppId, gid, vname, message) + tryNotify: function(oppId, message) { - // TODO: send email to oppId (request...) with title - // "vchess.club - vname" and content "message" - } + UserModel.getOne("id", oppId, (err,opp) => { + if (!err || !opp.notify) + return; //error is ignored here (TODO: should be logged) + const subject = "vchess.club - notification"; + const body = "Hello " + opp.name + "!\n" + message; + sendEmail(params.mail.noreply, opp.email, subject, body, err => { + res.json(err || {}); + }); + }); + }, + + //////////// + // CLEANING + + cleanUsersDb: function() + { + const tsNow = Date.now(); + // 86400000 = 24 hours in milliseconds + const day = 86400000; + db.serialize(function() { + const query = + "SELECT id, sessionToken, created " + + "FROM Users"; + db.all(query, (err, users) => { + users.forEach(u => { + // Remove unlogged users for >1 day + if (!u.sessionToken && tsNow - u.created > day) + db.run("DELETE FROM Users WHERE id = " + u.id); + }); + }); + }); + }, } module.exports = UserModel;