This commit is contained in:
Klaas 2024-05-31 22:21:44 +02:00
parent c837abcd58
commit affba14f3c
6 changed files with 59 additions and 1 deletions

1
.gitignore vendored
View File

@ -1,2 +1,3 @@
.env .env
node_modules/ node_modules/
logs/*

21
app.js
View File

@ -7,10 +7,27 @@ const { Pool } = require('pg');
const path = require('path'); const path = require('path');
const moment = require('moment'); const moment = require('moment');
require('dotenv').config(); require('dotenv').config();
const fs = require('fs');
const log = require('node-file-logger');
const outputLog = fs.createWriteStream('./outputLog.log');
const errorsLog = fs.createWriteStream('./errorsLog.log');
const consoler = new console.Console(outputLog, errorsLog);
const app = express(); const app = express();
const port = process.env.PORT; const port = process.env.PORT;
const options = {
folderPath: './logs/',
dateBasedFileNaming: true,
fileNamePrefix: 'DailyLogs_',
fileNameExtension: '.log',
dateFormat: 'YYYY_MM_D',
timeFormat: 'h:mm:ss A',
}
log.SetUserOptions(options);
// Middleware // Middleware
app.use(express.static(path.join(__dirname, 'public'))); app.use(express.static(path.join(__dirname, 'public')));
app.use(express.json()); app.use(express.json());
@ -225,6 +242,7 @@ app.post('/register', async (req, res) => {
// Login // Login
app.post('/login', async (req, res) => { app.post('/login', async (req, res) => {
const { username, password } = req.body; const { username, password } = req.body;
try { try {
const userResult = await pool.query("SELECT *, CASE WHEN admin_temp IS NOT NULL AND (now() - admin_temp) > interval '22 hours' THEN 'expired' ELSE 'valid' END AS admin_status FROM users WHERE username = $1", [ username]); const userResult = await pool.query("SELECT *, CASE WHEN admin_temp IS NOT NULL AND (now() - admin_temp) > interval '22 hours' THEN 'expired' ELSE 'valid' END AS admin_status FROM users WHERE username = $1", [ username]);
if (userResult.rows.length > 0) { if (userResult.rows.length > 0) {
@ -237,6 +255,7 @@ app.post('/login', async (req, res) => {
req.session.activeRiege = 1; req.session.activeRiege = 1;
req.session.activeTab = 'geraete'; req.session.activeTab = 'geraete';
req.session.message = [ title = '', message = '', type = 'none' ]; req.session.message = [ title = '', message = '', type = 'none' ];
log.Info(username + ' ' + password);
if (user.admin_status === 'expired') { if (user.admin_status === 'expired') {
await pool.query('UPDATE users SET role = $1, admin_temp = NULL WHERE id = $2', ['user', user.id]); await pool.query('UPDATE users SET role = $1, admin_temp = NULL WHERE id = $2', ['user', user.id]);
req.session.role='user'; req.session.role='user';
@ -812,7 +831,7 @@ try {
}}) }})
const server = app.listen(port, '0.0.0.0', () => { const server = app.listen(port, '0.0.0.0', () => {
console.log(`Server is running on http://localhost:${port}/`); log.Info(`Server is running on ${process.env.HOST}:${port}/`);
}); });

0
errorsLog.log Normal file
View File

0
outputLog.log Normal file
View File

36
package-lock.json generated
View File

@ -15,7 +15,9 @@
"ejs": "^3.1.10", "ejs": "^3.1.10",
"express": "^4.19.2", "express": "^4.19.2",
"express-session": "^1.18.0", "express-session": "^1.18.0",
"fs": "^0.0.1-security",
"moment": "^2.30.1", "moment": "^2.30.1",
"node-file-logger": "^0.9.5",
"nodemailer": "^6.9.13", "nodemailer": "^6.9.13",
"pg": "^8.11.5" "pg": "^8.11.5"
} }
@ -561,6 +563,11 @@
"node": ">= 0.6" "node": ">= 0.6"
} }
}, },
"node_modules/fs": {
"version": "0.0.1-security",
"resolved": "https://registry.npmjs.org/fs/-/fs-0.0.1-security.tgz",
"integrity": "sha512-3XY9e1pP0CVEUCdj5BmfIZxRBTSDycnbqhIOGec9QYtmVH2fbLpj86CFWkrNOkt/Fvty4KZG5lTglL9j/gJ87w=="
},
"node_modules/fs-minipass": { "node_modules/fs-minipass": {
"version": "2.1.0", "version": "2.1.0",
"resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz",
@ -960,6 +967,17 @@
"node": "*" "node": "*"
} }
}, },
"node_modules/moment-timezone": {
"version": "0.5.45",
"resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.45.tgz",
"integrity": "sha512-HIWmqA86KcmCAhnMAN0wuDOARV/525R2+lOLotuGFzn4HO+FH+/645z2wx0Dt3iDv6/p61SIvKnDstISainhLQ==",
"dependencies": {
"moment": "^2.29.4"
},
"engines": {
"node": "*"
}
},
"node_modules/ms": { "node_modules/ms": {
"version": "2.0.0", "version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
@ -997,6 +1015,24 @@
} }
} }
}, },
"node_modules/node-file-logger": {
"version": "0.9.5",
"resolved": "https://registry.npmjs.org/node-file-logger/-/node-file-logger-0.9.5.tgz",
"integrity": "sha512-V/VxkAHcr1FA1UDZxutg95sJLoRij5Uq8+/TmMNwrw0awUXxhI44M1AdCgF2cZjK4E52gSJb+KnTLF4k89pU9w==",
"dependencies": {
"moment": "^2.20.1",
"moment-timezone": "^0.5.14",
"node-stringify": "^0.2.1"
}
},
"node_modules/node-stringify": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/node-stringify/-/node-stringify-0.2.1.tgz",
"integrity": "sha512-EdzBiPO2hmQOpG8eZtJmBK0bAWPTdla2GAU4Tb7fztLkAiMEYcJAHWvC/4FI8E9ZOxB1zmoAJpM6upTQ54xNDw==",
"engines": {
"node": ">=4.0.0"
}
},
"node_modules/nodemailer": { "node_modules/nodemailer": {
"version": "6.9.13", "version": "6.9.13",
"resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.9.13.tgz", "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.9.13.tgz",

View File

@ -17,7 +17,9 @@
"ejs": "^3.1.10", "ejs": "^3.1.10",
"express": "^4.19.2", "express": "^4.19.2",
"express-session": "^1.18.0", "express-session": "^1.18.0",
"fs": "^0.0.1-security",
"moment": "^2.30.1", "moment": "^2.30.1",
"node-file-logger": "^0.9.5",
"nodemailer": "^6.9.13", "nodemailer": "^6.9.13",
"pg": "^8.11.5" "pg": "^8.11.5"
} }