feat: enable jwt authentication

This commit is contained in:
Sathishkumar Krishnan
2021-12-23 18:29:11 +05:30
parent 9eaf40310e
commit 7b1eadc381
5 changed files with 89 additions and 4 deletions

View File

@@ -1,5 +1,69 @@
const bcrypt = require("bcrypt");
const jwt = require("jsonwebtoken");
const User = require("./../models/User");
const {
JWT_SECRET,
JWT_REFRESH_EXPIRY_TIME,
JWT_ACCESS_EXPIRY_TIME,
} = require("../../config/env");
const createAccessToken = (id) => {
return jwt.sign({ id }, JWT_SECRET, {
expiresIn: JWT_ACCESS_EXPIRY_TIME,
});
};
const createRefreshToken = (id) => {
return jwt.sign({ id }, JWT_SECRET, {
expiresIn: JWT_REFRESH_EXPIRY_TIME,
});
};
module.exports = {
getUser: async (req, res) => {
res.send("Not Found");
registerUser: async (req, res, next) => {
const { email, fullName, password } = req.body;
try {
const salt = await bcrypt.genSalt();
const newUser = {
email: email,
fullName: fullName,
password: await bcrypt.hash(password, salt),
};
const user = await User.create(newUser);
console.log({ msg: "new user created", user });
res.send({ success: true, message: "User successfully created!" });
} catch (err) {
console.log(err);
next(err);
}
},
loginUser: async (req, res, next) => {
const { email, password } = req.body;
try {
const user = await User.login(email, password);
const accessToken = createAccessToken(user._id);
const refreshToken = createRefreshToken(user._id);
user.refreshToken = refreshToken;
await user.save();
res.send({
success: true,
data: {
email: user.email,
fullName: user.fullName,
accessToken,
refreshToken,
},
});
} catch (err) {
console.error(err);
next(err);
}
},
};

View File

@@ -1,6 +1,7 @@
const router = require("express").Router();
const controller = require("./user.controller");
router.get("/:id", controller.getUser);
router.post("/register", controller.registerUser);
router.post("/login", controller.loginUser);
module.exports = router;