code refactor, fixed token lifetime

This commit is contained in:
slawk0
2024-08-22 19:10:17 +02:00
parent 490114ca1f
commit 5f7ca46c5b
3 changed files with 34 additions and 41 deletions

View File

@@ -7,20 +7,9 @@ const app = express();
const server = createServer(app);
const io = new Server(server);
function chat(req, res) {
io.on('connection', (socket) => {
console.log('a user connected');
socket.on('disconnect', () => {
console.log('user disconnected');
});
socket.on('connection', (socket) => {
console.log('message: ', + msg);
})
});
function socket(username) {
}
module.exports = {
chat
socket
};

View File

@@ -24,6 +24,7 @@
<input id="input" autocomplete="off" />
<button>Send</button>
</form>
<script src="/socket.io/socket.io.js"></script>
<script src="/static/js/chat.js"></script>

View File

@@ -6,6 +6,7 @@ const cookieParser = require('cookie-parser');
const path = require('path');
const { insertUser, isUserExists, client } = require('./backend/db.js');
//const { socket } = require('./backend/socket.js');
const bcrypt = require('bcrypt');
const saltRounds = 10;
@@ -81,36 +82,35 @@ app.get('/auth/user', (req, res) => {
// serving the chat page if logged in
app.get('/', (req, res) => {
const token = req.cookies.token;
if (token) {
jwt.verify(token, jwtSecret, (err, user) => {
if (err) {
return res.status(403).send('Unauthorized');
} else {
const username = user.username;
res.sendFile(path.join(__dirname, '/frontend/routes/chat.html'));
// socket io connection
io.on('connection', (socket) => {
console.log(username + ' connected');
// disconnect event
socket.on('disconnect', () => {
console.log(username + 'have disconnected');
});
// chat message event
socket.on('chat message', (msg) => {
const message = username + ': ' + msg;
console.log(message);
io.emit('chat message', message);
});
});
}
});
} else {
if(!token) {
res.redirect('/login');
return;
}
// verify token
jwt.verify(token, jwtSecret, (err, user) => {
if (err) {
return res.status(403).send('Unauthorized');
}
const username = user.username;
res.sendFile(path.join(__dirname, '/frontend/routes/chat.html'));
// socket io connection
io.on('connection', (socket) => {
console.log(username + ' connected');
// disconnect event
socket.on('disconnect', () => {
console.log(username + ' have disconnected');
});
// chat message event
socket.on('chat message', (msg) => {
const message = username + ': ' + msg;
console.log(message);
io.emit('chat message', message);
});
});
});
});
// run server
@@ -160,7 +160,10 @@ async function loginUser(req, res) {
const token = jwt.sign({ username }, jwtSecret, {
expiresIn: '30d' // token expires in 30 days
});
res.cookie('token', token, {httpOnly: true});
res.cookie('token', token, {
httpOnly: true,
maxAge: 30 * 24 * 60 * 60 * 1000 //30 days
});
req.session.loggedin = true;
req.session.username = username;
res.send(`