This commit is contained in:
2020-11-20 18:13:08 +01:00
parent 8830303fb4
commit c1eb7d87c5
2 changed files with 37 additions and 2 deletions

View File

@@ -15,6 +15,8 @@ const {
checkEmailTaken, checkEmailTaken,
validateUserToken, validateUserToken,
hashPass, hashPass,
generateRefreshToken,
validateRefreshToken,
} = require("../services/services.js"); } = require("../services/services.js");
const { resetPassword } = require("../services/mailServices.js"); const { resetPassword } = require("../services/mailServices.js");
@@ -30,12 +32,23 @@ router.post("/login", async (req, res) => {
await checkPassword(req.body.password, user.password); await checkPassword(req.body.password, user.password);
const safeUser = await prepareSafeUser(user); const safeUser = await prepareSafeUser(user);
var token = generateAuthToken(safeUser); var token = generateAuthToken(safeUser);
res.header("x-auth-token", token).status(202).send(safeUser); var refreshToken = generateRefreshToken(user._id);
res.header("x-auth-token", token).header("ref", refreshToken).status(202).send(safeUser);
} catch (error) { } catch (error) {
handleError(error, res); handleError(error, res);
} }
}); });
//REFRESH_TOKEN
router.post("refreshtoken", async (req, res) => {
try {
const refreshToken = req.headers["ref"];
validateRefreshToken(refreshToken);
} catch (error) {
handleError(error, res);
}
})
// REFRESH // REFRESH
router.post("/refresh", async (req, res) => { router.post("/refresh", async (req, res) => {
try { try {

View File

@@ -54,11 +54,20 @@ function generateAuthToken(user) {
restaurants: user.restaurants, restaurants: user.restaurants,
}, },
jwtSecret, jwtSecret,
{ expiresIn: "1h" } { expiresIn: "15m" }
); );
return token; return token;
} }
function generateRefreshToken(userId) {
const token = jwt.sign({
id: userId
}, jwtSecret, {
expiresIn: "1h"
});
return token;
}
function generatePasswordResetToken(email) { function generatePasswordResetToken(email) {
const token = jwt.sign( const token = jwt.sign(
{ {
@@ -98,6 +107,17 @@ function validateUserToken(token) {
} }
} }
function validateRefreshToken(token) {
if (!token) throw newError("Brak dostępu", 401);
try {
const verified = jwt.verify(token, jwtSecret, { ignoreExpiration: false });
if (!verified) throw newError("Brak dostępu", 401);
return verified;
} catch (error) {
throw newError("Brak dostępu", 401);
}
}
async function validateDishId(id) { async function validateDishId(id) {
if (!mongoose.Types.ObjectId.isValid(id)) { if (!mongoose.Types.ObjectId.isValid(id)) {
throw newError("Niewłaściwy ID", 400); throw newError("Niewłaściwy ID", 400);
@@ -174,3 +194,5 @@ exports.verifyRestaurantAccess = verifyRestaurantAccess;
exports.yearFromNowDate = yearFromNowDate; exports.yearFromNowDate = yearFromNowDate;
exports.hashPass = hashPass; exports.hashPass = hashPass;
exports.saveImage = saveImage; exports.saveImage = saveImage;
exports.generateRefreshToken = generateRefreshToken;
exports.validateRefreshToken = validateRefreshToken;