Как получить результат validateFunc в предварительно автоматически созданном API Rest Hapi
Я новичок в Hapi.js. Я использую модуль "hapi-auth-jwt2" для аутентификации токена и проверки роли. Я установил область и отправил эту область из обратного вызова validateFunc . Это будет очень хорошо работать для проверки подлинности на основе ролей. Но я хочу получить результат, который я возвращаю из validateFunc, но не знаю, где я могу это получить.
validateFunc: function (token, request, callback) {
Async.auto({
session: function (done) {
Session.findByCredentials(token.sessionId, token.sessionKey, done);
},
user: ['session', function (results, done) {
if (!results.session) {
return done();
}
User.findById(results.session.user, done);
}],
}, (err, results) => {
if (err) {
return callback(err);
}
if (!results.session) {
return callback(null, false);
}
results.scope = token.scope;
callback(null, Boolean(results.user), results);
});
}
});
};
`
Он проверяет область или роль в домене, т. Е.:
routeOptions: {
scope:{
createScope:"admin"
},
create: {
pre : function(payload, Log){
console.log("preee runnnig........");
console.log(payload);
}
}
Я получаю полезную нагрузку Json, которую я отправляю со стороны клиента, но я хочу, чтобы результаты, которые я отправляю, были получены из обратного вызова validateFunc, потому что я хочу использовать эти данные здесь до отправки запроса.Я работаю над неявно созданным API через модуль Rest Hapi.
Так, как я могу получить эти предварительные хуки данных от validateFunc . Буду признателен за любую оказанную помощь.
Спасибо
1 ответ
На самом деле это функция, над которой мы работаем, и, надеюсь, скоро будет реализована.
На данный момент вы можете опустить сгенерированную конечную точку создания и заменить ее собственной, чтобы получить доступ к объекту запроса.
Результирующий код будет выглядеть примерно так:
'use strict';
const RestHapi = require('rest-hapi');
module.exports = function (server, mongoose, logger) {
server.route({
method: 'POST',
path: '/pathName',
config: {
handler: function(request, reply) {
/* modify request.payload here and access auth info through request.auth.credentials */
const Model = mongoose.model('modelName');
return RestHapi.create(Model, request.payload, logger)
.then(function (result) {
return reply(result);
})
.catch(function (error) {
return reply(error);
});
},
tags: ['api'],
plugins: {
'hapi-swagger': {}
}
}
});
};