Refactor logging implementation and enhance authentication logging
This commit is contained in:
@@ -4,13 +4,13 @@ const logger = createLogger({
|
|||||||
level: 'info',
|
level: 'info',
|
||||||
format: format.combine(
|
format: format.combine(
|
||||||
format.timestamp(),
|
format.timestamp(),
|
||||||
format.json()
|
format.printf(info => `${info.timestamp} ${info.level}: ${info.message}`)
|
||||||
),
|
),
|
||||||
transports: [
|
transports: [
|
||||||
new transports.Console(),
|
new transports.Console(),
|
||||||
new transports.File({ filename: 'app.log' })
|
new transports.File({ filename: '/data/app.log' })
|
||||||
]
|
]
|
||||||
});
|
});
|
||||||
|
|
||||||
module.exports = logger;
|
module.exports = logger;
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,12 @@
|
|||||||
const basicAuth = require('basic-auth');
|
const basicAuth = require('basic-auth');
|
||||||
|
const logger = require('../logger');
|
||||||
|
|
||||||
const auth = (req, res, next) => {
|
const auth = (req, res, next) => {
|
||||||
if (req.session && req.session.user) {
|
if (req.session && req.session.user) {
|
||||||
return next();
|
return next();
|
||||||
} else {
|
} else {
|
||||||
res.status(401).send('Authentication required.');
|
res.status(401).send('Authentication required.');
|
||||||
|
logger.error('Unauthorized access attempted from IP:', req.ip);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -2,31 +2,36 @@ import { checkSession, login, logout } from './auth.js';
|
|||||||
import { saveTask } from './tasks.js';
|
import { saveTask } from './tasks.js';
|
||||||
import { saveTags, loadTags } from './tags.js';
|
import { saveTags, loadTags } from './tags.js';
|
||||||
|
|
||||||
navigator.serviceWorker.register('/service-worker.js')
|
if ('serviceWorker' in navigator) {
|
||||||
.then(registration => {
|
window.addEventListener('load', () => {
|
||||||
console.log('ServiceWorker registration successful with scope: ', registration.scope);
|
navigator.serviceWorker.register('/service-worker.js')
|
||||||
|
.then(registration => {
|
||||||
|
console.log('ServiceWorker registration successful with scope: ', registration.scope);
|
||||||
|
|
||||||
registration.onupdatefound = () => {
|
registration.onupdatefound = () => {
|
||||||
const installingWorker = registration.installing;
|
const installingWorker = registration.installing;
|
||||||
installingWorker.onstatechange = () => {
|
installingWorker.onstatechange = () => {
|
||||||
if (installingWorker.state === 'installed') {
|
if (installingWorker.state === 'installed') {
|
||||||
if (navigator.serviceWorker.controller) {
|
if (navigator.serviceWorker.controller) {
|
||||||
// New update available
|
// New update available
|
||||||
console.log('New content is available; please refresh.');
|
console.log('New content is available; please refresh.');
|
||||||
if (confirm('New version available. Do you want to update?')) {
|
if (confirm('New version available. Do you want to update?')) {
|
||||||
window.location.reload();
|
window.location.reload();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// Content is cached for offline use
|
||||||
|
console.log('Content is cached for offline use.');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else {
|
};
|
||||||
// Content is cached for offline use
|
};
|
||||||
console.log('Content is cached for offline use.');
|
})
|
||||||
}
|
.catch(error => {
|
||||||
}
|
console.log('ServiceWorker registration failed: ', error);
|
||||||
};
|
});
|
||||||
};
|
});
|
||||||
})
|
}
|
||||||
.catch(error => {
|
|
||||||
console.log('ServiceWorker registration failed: ', error);
|
|
||||||
});
|
|
||||||
|
|
||||||
document.addEventListener('DOMContentLoaded', function() {
|
document.addEventListener('DOMContentLoaded', function() {
|
||||||
const loginForm = document.getElementById('loginForm');
|
const loginForm = document.getElementById('loginForm');
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
const express = require('express');
|
const express = require('express');
|
||||||
const basicAuth = require('basic-auth');
|
const basicAuth = require('basic-auth');
|
||||||
|
const logger = require('../logger');
|
||||||
const router = express.Router();
|
const router = express.Router();
|
||||||
|
|
||||||
router.post('/login', (req, res) => {
|
router.post('/login', (req, res) => {
|
||||||
@@ -10,6 +11,7 @@ router.post('/login', (req, res) => {
|
|||||||
if (user && user.name === username && user.pass === password) {
|
if (user && user.name === username && user.pass === password) {
|
||||||
req.session.user = user.name;
|
req.session.user = user.name;
|
||||||
res.status(200).send('Login successful');
|
res.status(200).send('Login successful');
|
||||||
|
logger.info(`User ${user.name} logged in`);
|
||||||
} else {
|
} else {
|
||||||
res.status(401).send('Authentication required');
|
res.status(401).send('Authentication required');
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ const debug = require('debug')('app');
|
|||||||
const tasksRouter = require('./routes/tasks');
|
const tasksRouter = require('./routes/tasks');
|
||||||
const authRouter = require('./routes/auth');
|
const authRouter = require('./routes/auth');
|
||||||
const authMiddleware = require('./middleware/auth');
|
const authMiddleware = require('./middleware/auth');
|
||||||
|
const logger = require('./logger');
|
||||||
|
|
||||||
const app = express();
|
const app = express();
|
||||||
const port = 3044;
|
const port = 3044;
|
||||||
@@ -37,5 +38,6 @@ app.use('/', authRouter);
|
|||||||
app.use('/', authMiddleware, tasksRouter);
|
app.use('/', authMiddleware, tasksRouter);
|
||||||
|
|
||||||
app.listen(port, () => {
|
app.listen(port, () => {
|
||||||
debug(`Server running at http://localhost:${port}`);
|
logger.info(`Server running at http://localhost:${port}`);
|
||||||
|
//debug(`Server running at http://localhost:${port}`);
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user