Skip to content

Commit e697b8d

Browse files
committed
Authentication Done
1 parent 46c85ef commit e697b8d

File tree

8 files changed

+78
-7
lines changed

8 files changed

+78
-7
lines changed

app.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,12 @@ const app = express();
88
//parse the form data sent with post request
99
const bodyParser = require('body-parser');
1010
app.use(bodyParser.urlencoded({ extended: false }));
11+
1112
app.use(bodyParser.json()); // It parses only json object(when any request post json data)
1213

14+
const cookieParser = require('cookie-parser');
15+
app.use(cookieParser());
16+
1317
// connect to the mysql DB
1418
const sequelize = require('./util/database');
1519
const User = require('./models/user'); // ? What is use of this

controllers/user_controller.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@ module.exports.signIn = async function (req, res) {
4949
}
5050

5151
else if (user && user.password == password) {
52+
const token = generateAccessToken(user.id, user.email);
53+
res.cookie("jwt_token", token);
5254
res.status(200).send(`<script> window.location.href='/user_dashboard'; </script>`);
5355

5456
}
@@ -63,4 +65,6 @@ module.exports.signIn = async function (req, res) {
6365

6466
module.exports.userDashboard = function (req, res) {
6567
res.sendFile(path.join(__dirname, '../public/views/user_dashboard.html'));
66-
};
68+
};
69+
70+

middleware/auth.js

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
const jwt = require("jsonwebtoken");
2+
const User = require("../models/user");
3+
4+
const authenticate = (req, res, next) => {
5+
try {
6+
const token = req.cookies.jwt_token;
7+
//suppose if token not exist in browser cookies or someone delete it
8+
if (!token) {
9+
res.redirect('/');
10+
}
11+
12+
// in this user a object is return with email and the userId
13+
const user = jwt.verify(token, process.env.SECRET_KEY); //It give the binded data after matching with secret_key
14+
15+
//suppose someone edit or alter my token in browser cokkies or cookies is not match with my secret key or vrify unsuccessful.
16+
if (!user) {
17+
res.redirect('/');
18+
}
19+
20+
User.findByPk(user.userId).then((user) => {
21+
//suposse that if user is not in our db or not exist
22+
if (!user) {
23+
res.redirect('/');
24+
}
25+
req.user = user; //make a user property in req
26+
next(); // it goes to next action, controller
27+
});
28+
} catch (err) {
29+
console.log(err);
30+
return res.status(401).json({ success: false });
31+
}
32+
};
33+
34+
module.exports = authenticate;

package-lock.json

Lines changed: 21 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
"dependencies": {
1616
"axios": "^1.5.0",
1717
"body-parser": "^1.20.2",
18+
"cookie-parser": "^1.4.6",
1819
"dotenv": "^16.3.1",
1920
"express": "^4.18.2",
2021
"jsonwebtoken": "^9.0.2",

public/js/user_dashboard.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -350,7 +350,8 @@ logoutBtn.addEventListener("click", logout);
350350

351351
async function logout() {
352352
try {
353-
// localStorage.clear();
353+
//delete the browser cookies
354+
document.cookie = "jwt_token=; max-age=-60"; // ? Any diff. way and why we write like this ??
354355
window.location.href = "/";
355356
} catch (err) {
356357
console.log(err);

router/expense.js

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,17 @@
11
const express = require('express');
22
const router = express.Router();
33

4+
//here userAuthentication is a middleware function
5+
const userAuthentication = require("../middleware/auth");
6+
47
const expenseController = require('../controllers/expense_controller');
58

6-
router.post('/addExpense', expenseController.addExpense);
9+
router.post('/addExpense', userAuthentication, expenseController.addExpense);
710

8-
router.get('/getAllExpenses', expenseController.getAllExpenses);
11+
router.get('/getAllExpenses', userAuthentication, expenseController.getAllExpenses);
912

10-
router.get('/deleteExpense/:id', expenseController.deleteExpense);
13+
router.get('/deleteExpense/:id', userAuthentication, expenseController.deleteExpense);
1114

12-
router.post('/updateExpense/:id', expenseController.updateExpense);
15+
router.post('/updateExpense/:id', userAuthentication, expenseController.updateExpense);
1316

1417
module.exports = router;

router/user.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
const express = require('express');
22
const router = express.Router();
33

4+
//here userAuthentication is a middleware function
5+
const userAuthentication = require("../middleware/auth");
6+
47
const homeController = require('../controllers/home_controller');
58

69
const userController = require('../controllers/user_controller');
@@ -11,6 +14,6 @@ router.post('/signUp', userController.signUp);
1114

1215
router.post('/signIn', userController.signIn);
1316

14-
router.get('/user_dashboard', userController.userDashboard);
17+
router.get('/user_dashboard', userAuthentication, userController.userDashboard);
1518

1619
module.exports = router;

0 commit comments

Comments
 (0)