Skip to content

Commit 76ea5af

Browse files
authored
Add files via upload
1 parent 54933e7 commit 76ea5af

File tree

9 files changed

+139
-32
lines changed

9 files changed

+139
-32
lines changed

controllers/todoControllers.js

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ exports.createTodo = async (req, res,next) => {
1212

1313
exports.getTodos = async(req, res,next) => {
1414
try {
15+
console.log(req.headers, 'header');
1516
let todos = await todoService.getTodos();
1617
return Common.sendSuccessResponse(res, 200, "Success", todos);
1718
}
@@ -40,16 +41,10 @@ exports.getUpdate = async(req, res,next) => {
4041
});
4142

4243
const updateTodo = await todoService.updateTodo(updateDataObj, todo._id)
43-
if(updateTodo['modifiedCount'] > 0) {
44-
return Common.sendSuccessResponse(res, 200, "todo is updated successfully", todos);
45-
}
46-
else {
47-
return Common.sendErrorResponse(res, 500, "todo is not updated successfully", '');
48-
}
49-
44+
return Common.sendSuccessResponse(res, 200, "todo is updated successfully", updateTodo);
5045
}
5146
catch(err) {
52-
return Common.sendErrorResponse(res, 500, "todo is not updated successfully", '');
47+
return Common.sendErrorResponse(res, 500, "todo is not updated successfully", err);
5348
}
5449
}
5550

controllers/userControllers.js

Lines changed: 68 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,76 @@
11
const bcrypt = require('bcrypt');
22
const Common = require('../helpers/common');
33
const userService = require('../services/userService');
4-
4+
const jwtToken = require('../helpers/jwtToken');
5+
let refreshTokensList = [];
56
exports.register = async(req, res, next) => {
67
try {
7-
req.body.password = await bcrypt(req.body.password , 10);
8-
console.log( req.body.password);
9-
userService.saveUser(req.body);
8+
let user = await userService.getUserByEmail(req.body.email);
9+
if(user) {
10+
return Common.sendErrorResponse(res, 200, "user is already exist", '');
11+
}
12+
let password = bcrypt.hashSync(req.body.password, 10);
13+
req.body.password = password;
14+
let result = await userService.saveUser(req.body);
15+
return Common.sendErrorResponse(res, 201, "user is register successfully", '');
1016
}
1117
catch(err) {
12-
return Common.sendErrorResponse(res, 500, "user is not register successfully", '');
18+
return Common.sendErrorResponse(res, 500, "user is not register successfully", err);
19+
}
20+
}
21+
22+
23+
exports.login = async(req, res, next) => {
24+
try {
25+
const email = req.body.email;
26+
let user = await userService.getUserByEmail(req.body.email);
27+
if(!user) {
28+
return Common.sendErrorResponse(res, 404, "user is not found", '');
29+
}
30+
31+
if(await bcrypt.compare(req.body.password, user.password)) {
32+
const accessToken = await jwtToken.generateAccessToken({username: req.body.email});
33+
const refreshToken = accessToken;
34+
refreshTokensList.push(refreshToken);
35+
return Common.sendTokenResponse(res, 200, 'success', accessToken, refreshToken);
36+
}
37+
else {
38+
return Common.sendErrorResponse(res, 401, 'Email and Password is incorrect1', '');
39+
}
40+
} catch(err) {
41+
return Common.sendErrorResponse(res, 500, "Internal Server Error", err);
42+
}
43+
}
44+
45+
exports.refreshToken = async(req, res, next) => {
46+
try {
47+
if(!refreshTokensList.includes(req.body.token)) {
48+
return Common.sendErrorResponse(res, 400, 'Refresh Token Invalid', '');
49+
}
50+
51+
refreshTokensList = refreshTokensList.filter( (c) => c != req.body.token)
52+
const accessToken = await jwtToken.generateRefreshToken({username: req.body.email});
53+
const refreshToken = accessToken;
54+
refreshTokensList.push(refreshToken);
55+
return Common.sendTokenResponse(res, 200, 'success', accessToken, refreshToken);
1356
}
14-
}
57+
catch(error) {
58+
return Common.sendErrorResponse(res, 500, "Internal Server Error", error);
59+
}
60+
61+
}
62+
63+
exports.logout = async(req, res, next) => {
64+
try {
65+
if(!refreshTokensList.includes(req.body.token)) {
66+
return Common.sendErrorResponse(res, 400, 'Refresh Token Invalid', '');
67+
}
68+
69+
refreshTokensList = refreshTokensList.filter( (c) => c != req.body.token);
70+
return Common.sendSuccessResponse(res, 200, 'success', '');
71+
}
72+
catch(err) {
73+
return Common.sendErrorResponse(res, 500, "Internal Server Error", error);
74+
}
75+
}
76+

helpers/common.js

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
const { response } = require("express");
22

3-
exports.sendSuccessResponse = (res, code, message, data="") => {
3+
exports.sendSuccessResponse = (res, code, message, data) => {
44
let response = {};
5-
5+
66
response['message'] = message != '' ? message : "";
77
response['data'] = data != '' ? data : "";
88
let statusCode = code != '' ? code : 200;
@@ -21,3 +21,15 @@ exports.sendErrorResponse = (res, code, message, error) => {
2121
return res.status(statusCode).json(response);
2222
}
2323

24+
25+
exports.sendTokenResponse = (res, code, message, token, refreshToken) => {
26+
let response = {};
27+
28+
response['message'] = message != '' ? message : "";
29+
response['token'] = token != '' ? token : "";
30+
response['refreshToken'] = refreshToken != '' ? refreshToken : "";
31+
let statusCode = code != '' ? code : 200;
32+
33+
return res.status(statusCode).json(response);
34+
}
35+

helpers/jwtToken.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
const jwt = require("jsonwebtoken");
2+
const Common = require('../helpers/common')
3+
exports.generateAccessToken = (user) => {
4+
return jwt.sign(user, process.env.ACCESS_TOKEN_SECRET, {expiresIn: "15m"});
5+
}
6+
7+
exports.generateRefreshToken = (user) => {
8+
return jwt.sign(user, process.env.REFRESH_TOKEN_SECRET, {expiresIn: "20m"})
9+
}
10+
11+
12+
exports.verifyToken = (token) => {
13+
return jwt.verify(token, process.env.ACCESS_TOKEN_SECRET);
14+
}

routes/authRoutes.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,7 @@ const router = express.Router();
55
const userControllers = require('../controllers/userControllers');
66

77
router.post('/register', userControllers.register);
8-
8+
router.post('/login', userControllers.login);
9+
router.post('/refreshToken', userControllers.refreshToken);
10+
router.delete('/logout', userControllers.logout);
911
module.exports = router;

routes/todoRoutes.js

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,12 @@
11
const express = require('express');
22
const router = express.Router();
3+
const checkToken = require('../validation/validateToken')
4+
35
const todoController = require('../controllers/todoControllers.js');
4-
router.get('/', todoController.getTodos );
5-
router.post('/create-todo', todoController.createTodo);
6-
router.put('/:id', todoController.getUpdate);
7-
router.delete('/:id/delete', todoController.getDelete);
8-
// router.post('/create-todo', (req, res, next) => {
9-
// console.log('hello');
10-
// } );
116

12-
// router.put('/:id', (req, res, next) => {
13-
// console.log('id');
14-
// });
7+
router.get('/', checkToken.validateToken, todoController.getTodos );
8+
router.post('/create-todo', checkToken.validateToken, todoController.createTodo);
9+
router.put('/:id', checkToken.validateToken, todoController.getUpdate);
10+
router.delete('/:id/delete', checkToken.validateToken, todoController.getDelete);
11+
1512
module.exports = router;

services/todoService.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
const { compareSync } = require('bcrypt');
12
const Todo = require('../model/todo');
23

34
getTodos = () => {
@@ -19,13 +20,12 @@ getTodoById = (id) => {
1920
}
2021

2122
updateTodo = (data, id) => {
23+
console.log(id.toString());
2224
let newTodo = new Todo(data);
2325

24-
return Todo.updateOne(
25-
{ _id: id },
26+
return Todo.findByIdAndUpdate(id.toString(),
2627
{ $set: data },
27-
{ upsert: true }
28-
);
28+
{ upsert: true });
2929
}
3030

3131

services/userService.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,10 @@ const User = require('../model/user');
33
exports.saveUser = (data) => {
44
let newUser = new User(data);
55
return newUser.save();
6-
}
6+
}
7+
8+
exports.getUserByEmail = (email) => {
9+
return User.findOne({email: email}).exec();
10+
}
11+
12+

validation/validateToken.js

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
const Common = require('../helpers/common');
2+
const JwtToken = require('../helpers/jwtToken')
3+
4+
exports.validateToken = async(req, res, next) => {
5+
try {
6+
const resquestToken = req.headers["token"];
7+
if (!resquestToken) {
8+
return Common.sendErrorResponse(res, 400, "Token not present", '');
9+
}
10+
11+
let result = await JwtToken.verifyToken(resquestToken);
12+
if(result.username) {
13+
next();
14+
}
15+
} catch(err) {
16+
return Common.sendErrorResponse(res, 500, "Internal Server Error" , err);
17+
}
18+
19+
}

0 commit comments

Comments
 (0)