implemented JWT
This commit is contained in:
38
index.js
38
index.js
@@ -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');
|
||||
|
||||
@@ -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",
|
||||
|
||||
Reference in New Issue
Block a user