Added lastActivityTime to accounts;

This commit is contained in:
2019-06-07 02:27:04 +10:00
parent e949b8f21f
commit 7c7aa26a1c
8 changed files with 37 additions and 7 deletions
+8 -1
View File
@@ -9,6 +9,7 @@ let sendmail = require('sendmail')({silent: true});
//utilities //utilities
let { log, validateEmail } = require('../common/utilities.js'); let { log, validateEmail } = require('../common/utilities.js');
let { throttle, isThrottled } = require('../common/throttle.js'); let { throttle, isThrottled } = require('../common/throttle.js');
let { logActivity } = require('./utilities.js');
const signupRequest = (connection) => (req, res) => { const signupRequest = (connection) => (req, res) => {
//formidable handles forms //formidable handles forms
@@ -205,6 +206,8 @@ const loginRequest = (connection) => (req, res) => {
msg: log('Logged in', fields.email, rand) msg: log('Logged in', fields.email, rand)
}); });
res.end(); res.end();
logActivity(connection, results[0].id);
}); });
}); });
}); });
@@ -216,6 +219,7 @@ const logoutRequest = (connection) => (req, res) => {
connection.query(query, [req.body.id, req.body.token], (err) => { connection.query(query, [req.body.id, req.body.token], (err) => {
if (err) throw err; if (err) throw err;
log('Logged out', req.body.id, req.body.token); log('Logged out', req.body.id, req.body.token);
logActivity(connection, req.body.id);
}); });
res.end(); //NOTE: don't send a response res.end(); //NOTE: don't send a response
@@ -275,6 +279,8 @@ const passwordChangeRequest = (connection) => (req, res) => {
msg: log('Password changed!', fields.id) msg: log('Password changed!', fields.id)
}); });
res.end(); res.end();
logActivity(connection, fields.id);
}); });
}); });
}); });
@@ -410,7 +416,8 @@ const passwordResetRequest = (connection) => (req, res) => {
res.status(200).json({ msg: log('Password updated!', fields.email) }); res.status(200).json({ msg: log('Password updated!', fields.email) });
res.end(); res.end();
return;
logActivity(connection, results[0].id);
}); });
}); });
}); });
+3 -1
View File
@@ -8,7 +8,7 @@ let CronJob = require('cron').CronJob;
let { logDiagnostics } = require('./diagnostics.js'); let { logDiagnostics } = require('./diagnostics.js');
let { log } = require('../common/utilities.js'); let { log } = require('../common/utilities.js');
let { getStatistics, isAttacking } = require('./utilities.js'); let { getStatistics, isAttacking, logActivity } = require('./utilities.js');
const attackRequest = (connection) => (req, res) => { const attackRequest = (connection) => (req, res) => {
//verify the attacker's credentials (only the attacker can launch an attack) //verify the attacker's credentials (only the attacker can launch an attack)
@@ -70,6 +70,8 @@ const attackRequest = (connection) => (req, res) => {
msg: log('Attacking', req.body.attacker, req.body.defender) msg: log('Attacking', req.body.attacker, req.body.defender)
}); });
res.end(); res.end();
logActivity(connection, req.body.id);
}); });
}); });
}); });
+5 -1
View File
@@ -4,7 +4,7 @@ require('dotenv').config();
//utilities //utilities
let { log } = require('../common/utilities.js'); let { log } = require('../common/utilities.js');
let { getStatistics, getOwned, isAttacking, isSpying } = require('./utilities.js'); let { getStatistics, getOwned, isAttacking, isSpying, logActivity } = require('./utilities.js');
const equipmentRequest = (connection) => (req, res) => { const equipmentRequest = (connection) => (req, res) => {
//validate the credentials //validate the credentials
@@ -179,6 +179,8 @@ const purchaseRequest = (connection) => (req, res) => {
res.end(); res.end();
log('Purchase made', req.body.id, req.body.token, req.body.type, req.body.name); log('Purchase made', req.body.id, req.body.token, req.body.type, req.body.name);
logActivity(connection, req.body.id);
}); });
}); });
}); });
@@ -277,6 +279,8 @@ const sellRequest = (connection) => (req, res) => {
if (err) throw err; if (err) throw err;
log('Cleaned database', 'equipment sale'); log('Cleaned database', 'equipment sale');
logActivity(connection, req.body.id);
}); });
}); });
}); });
+5 -1
View File
@@ -4,7 +4,7 @@ require('dotenv').config();
//libraries //libraries
let CronJob = require('cron').CronJob; let CronJob = require('cron').CronJob;
let { isAttacking, isSpying } = require('./utilities.js'); let { isAttacking, isSpying, logActivity } = require('./utilities.js');
//utilities //utilities
let { logDiagnostics } = require('./diagnostics.js'); let { logDiagnostics } = require('./diagnostics.js');
@@ -44,6 +44,7 @@ function profileCreateRequestInner(connection, req, res, body) {
if (err) throw err; if (err) throw err;
log('Profile created', body.username, body.id, body.token); log('Profile created', body.username, body.id, body.token);
logActivity(connection, body.id);
return profileRequestInner(connection, req, res, body); return profileRequestInner(connection, req, res, body);
}); });
@@ -154,6 +155,7 @@ const recruitRequest = (connection) => (req, res) => {
log('Recruit successful', results[0].username, req.body.id, req.body.token); log('Recruit successful', results[0].username, req.body.id, req.body.token);
logDiagnostics(connection, 'recruit', 1); logDiagnostics(connection, 'recruit', 1);
logActivity(connection, req.body.id);
}); });
}); });
}); });
@@ -259,6 +261,7 @@ const trainRequest = (connection) => (req, res) => {
}); });
res.end(); res.end();
log('Train executed', results[0].username, req.body.role, req.body.id, req.body.token); log('Train executed', results[0].username, req.body.role, req.body.id, req.body.token);
logActivity(connection, req.body.id);
}); });
}); });
}); });
@@ -371,6 +374,7 @@ const untrainRequest = (connection) => (req, res) => {
}); });
res.end(); res.end();
log('Untrain executed', results[0].username, roleName, req.body.id, req.body.token); log('Untrain executed', results[0].username, roleName, req.body.id, req.body.token);
logActivity(connection, req.body.id);
}); });
}); });
}); });
+3 -1
View File
@@ -8,7 +8,7 @@ let CronJob = require('cron').CronJob;
let { logDiagnostics } = require('./diagnostics.js'); let { logDiagnostics } = require('./diagnostics.js');
let { log } = require('../common/utilities.js'); let { log } = require('../common/utilities.js');
let { getStatistics, isSpying, isAttacking } = require('./utilities.js'); //TODO: rename getStatistics to getEquipmentStatistics let { getStatistics, isSpying, isAttacking, logActivity } = require('./utilities.js'); //TODO: rename getStatistics to getEquipmentStatistics
const spyRequest = (connection) => (req, res) => { const spyRequest = (connection) => (req, res) => {
//verify the attacker's credentials (only the attacker can launch an attack) //verify the attacker's credentials (only the attacker can launch an attack)
@@ -70,6 +70,8 @@ const spyRequest = (connection) => (req, res) => {
msg: log('Spying', req.body.attacker, req.body.defender) //TODO: am I using this msg parameter anywhere? msg: log('Spying', req.body.attacker, req.body.defender) //TODO: am I using this msg parameter anywhere?
}); });
res.end(); res.end();
logActivity(connection, req.body.id);
}); });
}); });
}); });
+9 -1
View File
@@ -86,9 +86,17 @@ const isSpying = (connection, user, cb) => {
}); });
}; };
const logActivity = (connection, id) => {
let query = 'UPDATE accounts SET lastActivityTime = CURRENT_TIMESTAMP() WHERE id = ?;';
connection.query(query, [id], (err) => {
if (err) throw err;
});
};
module.exports = { module.exports = {
getStatistics: getStatistics, getStatistics: getStatistics,
getOwned: getOwned, getOwned: getOwned,
isAttacking: isAttacking, isAttacking: isAttacking,
isSpying: isSpying isSpying: isSpying,
logActivity: logActivity
}; };
+3 -1
View File
@@ -36,7 +36,9 @@ CREATE TABLE IF NOT EXISTS accounts (
email VARCHAR(320) UNIQUE, email VARCHAR(320) UNIQUE,
username VARCHAR(100) UNIQUE, username VARCHAR(100) UNIQUE,
salt VARCHAR(50), salt VARCHAR(50),
hash VARCHAR(100) hash VARCHAR(100),
lastActivityTime TIMESTAMP DEFAULT '2019-01-01 00:00:00'
); );
CREATE TABLE IF NOT EXISTS sessions ( CREATE TABLE IF NOT EXISTS sessions (
+1
View File
@@ -1,2 +1,3 @@
#NOTE: ALWAYS, ALWAYS, ALWAYS write a script in revert.sql that undoes these changes #NOTE: ALWAYS, ALWAYS, ALWAYS write a script in revert.sql that undoes these changes
ALTER TABLE accounts ADD COLUMN lastActivityTime TIMESTAMP DEFAULT '2019-01-01 00:00:00';