Я использую hapi-auth-basic version 5.0.0 для аутентификации на моем сервере hapi v17.2.2. Выдает ошибку, когда внутри функции проверки есть асинхронный код. Что делать?
Я использовал hapi-cli для создания проекта hapi. В нем есть папка с названием policy, которая содержит функции проверки, используемые для аутентификации.
Я немного изменил его для моего удобства следующим образом
const Boom = require('boom');
const User = Models.User
module.exports = async (request, email, password, h) => {
if (!email || !password) {
return {
isValid: false,
credentials: null
}
}
User.findOne({
email,
role: 'admin'
}).exec((err, currentUser) => {
if (!currentUser || err) {
return Boom.badRequest('You must be admin user');
}
request.adminUser = currentUser;
return {
isValid: true,
credentials: currentUser
}
});
};
Я хочу аутентифицировать пользователя, если указан адрес электронной почты и роль пользователя - admin
Но я получаю следующую ошибку
Debug: internal, implementation, error
TypeError: Cannot destructure property `isValid` of 'undefined' or 'null'.
at Object.authenticate (/home/sruthi/IoTRL/hapi-api/node_modules/hapi-auth-basic/lib/index.js:64:56)
at <anonymous>
Когда я вернулся, {isValid: true, credentials: {email}}
вот так
module.exports = async (request, email, password, h) => {
if (!email || !password) {
return {
isValid: false,
credentials: null
}
}
return {
isValid: true,
credentials: {email}
}
};
без асинхронного кода, получающего пользователя из базы данных, он работал нормально.