-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
54933e7
commit 76ea5af
Showing
9 changed files
with
139 additions
and
32 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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); | ||
} | ||
} | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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); | ||
} | ||
|
||
} |