Skip to content

Commit

Permalink
Add files via upload
Browse files Browse the repository at this point in the history
  • Loading branch information
rahul-dev7 committed May 5, 2022
1 parent 54933e7 commit 76ea5af
Show file tree
Hide file tree
Showing 9 changed files with 139 additions and 32 deletions.
11 changes: 3 additions & 8 deletions controllers/todoControllers.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ exports.createTodo = async (req, res,next) => {

exports.getTodos = async(req, res,next) => {
try {
console.log(req.headers, 'header');
let todos = await todoService.getTodos();
return Common.sendSuccessResponse(res, 200, "Success", todos);
}
Expand Down Expand Up @@ -40,16 +41,10 @@ exports.getUpdate = async(req, res,next) => {
});

const updateTodo = await todoService.updateTodo(updateDataObj, todo._id)
if(updateTodo['modifiedCount'] > 0) {
return Common.sendSuccessResponse(res, 200, "todo is updated successfully", todos);
}
else {
return Common.sendErrorResponse(res, 500, "todo is not updated successfully", '');
}

return Common.sendSuccessResponse(res, 200, "todo is updated successfully", updateTodo);
}
catch(err) {
return Common.sendErrorResponse(res, 500, "todo is not updated successfully", '');
return Common.sendErrorResponse(res, 500, "todo is not updated successfully", err);
}
}

Expand Down
74 changes: 68 additions & 6 deletions controllers/userControllers.js
Original file line number Diff line number Diff line change
@@ -1,14 +1,76 @@
const bcrypt = require('bcrypt');
const Common = require('../helpers/common');
const userService = require('../services/userService');

const jwtToken = require('../helpers/jwtToken');
let refreshTokensList = [];
exports.register = async(req, res, next) => {
try {
req.body.password = await bcrypt(req.body.password , 10);
console.log( req.body.password);
userService.saveUser(req.body);
let user = await userService.getUserByEmail(req.body.email);
if(user) {
return Common.sendErrorResponse(res, 200, "user is already exist", '');
}
let password = bcrypt.hashSync(req.body.password, 10);
req.body.password = password;
let result = await userService.saveUser(req.body);
return Common.sendErrorResponse(res, 201, "user is register successfully", '');
}
catch(err) {
return Common.sendErrorResponse(res, 500, "user is not register successfully", '');
return Common.sendErrorResponse(res, 500, "user is not register successfully", err);
}
}


exports.login = async(req, res, next) => {
try {
const email = req.body.email;
let user = await userService.getUserByEmail(req.body.email);
if(!user) {
return Common.sendErrorResponse(res, 404, "user is not found", '');
}

if(await bcrypt.compare(req.body.password, user.password)) {
const accessToken = await jwtToken.generateAccessToken({username: req.body.email});
const refreshToken = accessToken;
refreshTokensList.push(refreshToken);
return Common.sendTokenResponse(res, 200, 'success', accessToken, refreshToken);
}
else {
return Common.sendErrorResponse(res, 401, 'Email and Password is incorrect1', '');
}
} catch(err) {
return Common.sendErrorResponse(res, 500, "Internal Server Error", err);
}
}

exports.refreshToken = async(req, res, next) => {
try {
if(!refreshTokensList.includes(req.body.token)) {
return Common.sendErrorResponse(res, 400, 'Refresh Token Invalid', '');
}

refreshTokensList = refreshTokensList.filter( (c) => c != req.body.token)
const accessToken = await jwtToken.generateRefreshToken({username: req.body.email});
const refreshToken = accessToken;
refreshTokensList.push(refreshToken);
return Common.sendTokenResponse(res, 200, 'success', accessToken, refreshToken);
}
}
catch(error) {
return Common.sendErrorResponse(res, 500, "Internal Server Error", error);
}

}

exports.logout = async(req, res, next) => {
try {
if(!refreshTokensList.includes(req.body.token)) {
return Common.sendErrorResponse(res, 400, 'Refresh Token Invalid', '');
}

refreshTokensList = refreshTokensList.filter( (c) => c != req.body.token);
return Common.sendSuccessResponse(res, 200, 'success', '');
}
catch(err) {
return Common.sendErrorResponse(res, 500, "Internal Server Error", error);
}
}

16 changes: 14 additions & 2 deletions helpers/common.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
const { response } = require("express");

exports.sendSuccessResponse = (res, code, message, data="") => {
exports.sendSuccessResponse = (res, code, message, data) => {
let response = {};

response['message'] = message != '' ? message : "";
response['data'] = data != '' ? data : "";
let statusCode = code != '' ? code : 200;
Expand All @@ -21,3 +21,15 @@ exports.sendErrorResponse = (res, code, message, error) => {
return res.status(statusCode).json(response);
}


exports.sendTokenResponse = (res, code, message, token, refreshToken) => {
let response = {};

response['message'] = message != '' ? message : "";
response['token'] = token != '' ? token : "";
response['refreshToken'] = refreshToken != '' ? refreshToken : "";
let statusCode = code != '' ? code : 200;

return res.status(statusCode).json(response);
}

14 changes: 14 additions & 0 deletions helpers/jwtToken.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
const jwt = require("jsonwebtoken");
const Common = require('../helpers/common')
exports.generateAccessToken = (user) => {
return jwt.sign(user, process.env.ACCESS_TOKEN_SECRET, {expiresIn: "15m"});
}

exports.generateRefreshToken = (user) => {
return jwt.sign(user, process.env.REFRESH_TOKEN_SECRET, {expiresIn: "20m"})
}


exports.verifyToken = (token) => {
return jwt.verify(token, process.env.ACCESS_TOKEN_SECRET);
}
4 changes: 3 additions & 1 deletion routes/authRoutes.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,7 @@ const router = express.Router();
const userControllers = require('../controllers/userControllers');

router.post('/register', userControllers.register);

router.post('/login', userControllers.login);
router.post('/refreshToken', userControllers.refreshToken);
router.delete('/logout', userControllers.logout);
module.exports = router;
17 changes: 7 additions & 10 deletions routes/todoRoutes.js
Original file line number Diff line number Diff line change
@@ -1,15 +1,12 @@
const express = require('express');
const router = express.Router();
const checkToken = require('../validation/validateToken')

const todoController = require('../controllers/todoControllers.js');
router.get('/', todoController.getTodos );
router.post('/create-todo', todoController.createTodo);
router.put('/:id', todoController.getUpdate);
router.delete('/:id/delete', todoController.getDelete);
// router.post('/create-todo', (req, res, next) => {
// console.log('hello');
// } );

// router.put('/:id', (req, res, next) => {
// console.log('id');
// });
router.get('/', checkToken.validateToken, todoController.getTodos );
router.post('/create-todo', checkToken.validateToken, todoController.createTodo);
router.put('/:id', checkToken.validateToken, todoController.getUpdate);
router.delete('/:id/delete', checkToken.validateToken, todoController.getDelete);

module.exports = router;
8 changes: 4 additions & 4 deletions services/todoService.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
const { compareSync } = require('bcrypt');
const Todo = require('../model/todo');

getTodos = () => {
Expand All @@ -19,13 +20,12 @@ getTodoById = (id) => {
}

updateTodo = (data, id) => {
console.log(id.toString());
let newTodo = new Todo(data);

return Todo.updateOne(
{ _id: id },
return Todo.findByIdAndUpdate(id.toString(),
{ $set: data },
{ upsert: true }
);
{ upsert: true });
}


Expand Down
8 changes: 7 additions & 1 deletion services/userService.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,10 @@ const User = require('../model/user');
exports.saveUser = (data) => {
let newUser = new User(data);
return newUser.save();
}
}

exports.getUserByEmail = (email) => {
return User.findOne({email: email}).exec();
}


19 changes: 19 additions & 0 deletions validation/validateToken.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
const Common = require('../helpers/common');
const JwtToken = require('../helpers/jwtToken')

exports.validateToken = async(req, res, next) => {
try {
const resquestToken = req.headers["token"];
if (!resquestToken) {
return Common.sendErrorResponse(res, 400, "Token not present", '');
}

let result = await JwtToken.verifyToken(resquestToken);
if(result.username) {
next();
}
} catch(err) {
return Common.sendErrorResponse(res, 500, "Internal Server Error" , err);
}

}

0 comments on commit 76ea5af

Please sign in to comment.