const jwt = require('jsonwebtoken');
const JWT_SECRET = 'B!llHe$$';
const User = require("../schema/User")
const cookieAuth = (cookieName) => {
return async (req, res, next) => {
try {
const cookieAuthtoken = req.cookies[cookieName];
if (cookieAuthtoken) {
const tokenUser = jwt.verify(cookieAuthtoken, JWT_SECRET)
const dbUser = await User.findById(tokenUser.id)
const { _id, firstName, lastName, email, ageverified, agreement, city, state, zip, verified, credits, cart, role, status } = dbUser
if (status == 'Deactive') {
res.cookie('authtoken', '', { expires: new Date(0) });
next()
} else {
const user = {
id: _id, firstName, lastName, email, ageverified, agreement, city, state, zip, verified, credits, cart, role
}
const authtoken = jwt.sign(user, JWT_SECRET);
const expirationDate = new Date(Date.now() + (15 * 60 * 1000)); // 15 minutes in milliseconds
res.cookie('authtoken', authtoken, { expires: expirationDate });
req.user = user
next()
}
}
else {
next()
}
}
catch (err) {
next()
console.log(err)
}
}
}
module.exports = cookieAuth