по какой-то причине повар ie не отображается в браузере, и по этой причине никто из пользователей не вошел в систему. Пожалуйста, посмотрите на код ...
1) auth. контроллер. js
// отправка файлов cookie (Cook ie - это в основном jwt, который я создаю)
let sendToken = (user, statusCode, res) => {
let token = signToken(user._id)
let cookieOptions = {
expires: new Date(
Date.now() + process.env.JWT_COOKIE_EXPIRES_IN * 21 * 60 * 60 * 1000),
httpOnly: true
}
if(process.env.NODE_ENV === 'production') cookieOptions.secure = true
res.cookie('jwt', token, cookieOptions)
user.password = undefined
res.status(statusCode).json({
status: 'success',
token,
data: { user }
})
}
// это промежуточное ПО isLoggedIn отслеживает файлы cookie. Я использую pug, поэтому я помещаю пользовательский объект в ответ, чтобы я мог получить к нему доступ в шаблоне
exports.isLoggedIn = async(req, res, next) => {
if(req.cookies.jwt) {
try {
// verify token
let decoded = await promisify(jwt.verify)(
req.cookies.jwt, process.env.JWT_SECRET)
// check if user still exists
let user = await User.findById(decoded.id)
if (!user) return next()
// check if user changed pswd after token was issued
if (user.changedPasswordAfter(decoded.iat)) {
return next()
}
res.locals.user = user
return next()
} catch (e) {
return next()
}
}
next()
}
3) это шаблон pug для заголовка. проблема в том, что код не входит в блок if. таким образом, пользовательский объект не доступен для шаблона ...
header.header
nav.nav.nav--tours
a.nav__el(href='/') All tours
.header__logo
img(src='/img/logo-white.png' alt='Natours logo')
nav.nav.nav--user
if user
a.nav__el.nav__el--logout Log out
a.nav__el(href='/me')
img.nav__user-img(src=`/img/users/${user.photo}` alt=`Photo of ${user.name}`)
span= user.name.split(' ')[0]
else
a.nav__el(href='/login') Log in
a.nav__el.nav__el--cta(href='#') Sign up