implemented JWT

This commit is contained in:
slawk0
2024-08-22 17:56:32 +02:00
parent ad15c6c478
commit 490114ca1f
2 changed files with 47 additions and 24 deletions

View File

@@ -2,23 +2,24 @@ const express = require('express');
const session = require('express-session');
const port = 3000;
const app = express();
const cookieParser = require('cookie-parser');
const path = require('path');
const { insertUser, isUserExists, client } = require('./backend/db.js');
const bcrypt = require('bcrypt');
const saltRounds = 10;
const { Server } = require('socket.io');
const { createServer } = require('node:http');
const server = createServer(app);
const io = new Server(server);
const jwt = require('jsonwebtoken');
const {decode} = require("jsonwebtoken");
const jwtSecret = process.env.JWT_SECRET;
require('dotenv').config();
app.use(cookieParser());
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.use(express.static(path.join(__dirname, 'public')));
@@ -46,27 +47,46 @@ app.post('/auth/signup', async (req, res) => {
// serving the login page
app.get('/login', (req, res) => {
const token = req.cookies.token;
if (token) {
res.json({ Error: 'Already logged in' });
} else {
res.sendFile(path.join(__dirname, '/frontend/routes/login.html'));
}
});
// serving the signup page
app.get('/signup', (req, res) => {
const token = req.cookies.token;
if(token){
res.json({Error: 'Already logged in'});
} else
res.sendFile(path.join(__dirname, '/frontend/routes/signup.html'));
});
app.get('/auth/user', (req, res) => {
if (req.session.loggedin) {
res.json({ username: req.session.username });
const token = req.cookies.token;
if(token) {
jwt.verify(token, jwtSecret, (err, user) => {
if(err) {
return res.status(403).send('Unauthorized');
} else {
res.status(401).json({ message: 'Unauthorized' });
const username = user.username;
res.json({username});
}
});
}
});
// serving the chat page if logged in
app.get('/', (req, res) => {
const username = req.session.username;
if (req.session.loggedin) {
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) => {
@@ -85,6 +105,8 @@ app.get('/', (req, res) => {
});
});
}
});
} else {
res.redirect('/login');

View File

@@ -9,6 +9,7 @@
"private": true,
"dependencies": {
"bcrypt": "^5.1.1",
"cookie-parser": "^1.4.6",
"dotenv": "^16.4.5",
"express": "^4.19.2",
"express-session": "^1.18.0",