Я следую учебному пособию: https://github.com/eXtremeXR/APIAuthenticationWithNode/tree/Part_%2312
И во время локальной части регистрации произошла ошибка
Необработанный отказ от обещания устарели.
Но мне удалось решить эту проблему с помощью блоков try-catch . Но опять же из-за основной ошибки:
TypeError: Cannot read property 'alg' of undefined
Каждый мой запрос возвращает ошибку, даже если регистрация действительно успешна.
Ошибка указывает мне на этот блок:
signToken = user => {
return JWT.sign({
iss: 'CodeWorkr',
sub: user.id,
iat: new Date().getTime(), // current time
exp: new Date().setDate(new Date().getDate() + 1) // current time + 1 day ahead
}, JWT_SECRET);
}
Что является причиной этого и как я могу ее решить?
Вот полный код контроллера:
const JWT = require('jws');
const User = require('../models/user');
const { JWT_SECRET } = require('../configuration');
signToken = user => {
return JWT.sign({
iss: 'CodeWorkr',
sub: user.id,
iat: new Date().getTime(), // current time
exp: new Date().setDate(new Date().getDate() + 1) // current time + 1 day ahead
}, JWT_SECRET);
}
module.exports = {
signUp: async (req, res, next) => {
try {
const { email, password } = req.body;
// Check if there is a user with the same email
const foundUser = await User.findOne({ "local.email": email });
if (foundUser) {
return res.status(403).json({ error: 'Email is already in use'});
}
// Create a new user
const newUser = new User({
method: 'local',
local: {
email: email,
password: password
}
});
await newUser.save();
// Generate the token
const token = signToken(newUser);
// Respond with token
res.status(200).json({ token });
} catch (err) {
res.status(500).send({
message: "Error" + err
})
}
},
signIn: async (req, res, next) => {
// Generate token
const token = signToken(req.user);
res.status(200).json({ token });
},
googleOAuth: async (req, res, next) => {
// Generate token
const token = signToken(req.user);
res.status(200).json({ token });
},
facebookOAuth: async (req, res, next) => {
// Generate token
const token = signToken(req.user);
res.status(200).json({ token });
},
secret: async (req, res, next) => {
console.log('I managed to get here!');
res.json({ secret: "resource" });
}
}