Я создаю функцию, которая проверяет пароль пользователя с помощью файла тени паролей linux. Проблема в том, что основная функция (sync) возвращается не определена до завершения внутренней функции async, и из-за этого она всегда возвращает undefined.async function in sync function dont return value
Как изменить основную функцию на асинхронный режим, чтобы она дождалась завершения функции async?
Прошу совета. Thnaks заранее
Адриан
function checkPass(a, b) {
"use strict";
var fs = require('fs');
var sha512crypt = require('sha512crypt-node');
//
var shadow = '/tmp/shadow';
var userNameCheck = a;
var passwordCheck = b;
//
var response;
fs.readFile(shadow, function (err, logData) {
if (err) throw err;
// logData is a Buffer, convert to string.
var shadowFile = logData.toString();
var shadowList = shadowFile.split('\n');
for (var line in shadowList) {
var userEntree = shadowList[line].split(":");
if (userEntree[0] === userNameCheck) {
var username = userEntree[0];
var fullShadow = userEntree[1];
//
var fullShadowSplit = userEntree[1].split('$');
//
var passwordAlgorithm = fullShadowSplit[1];
var saltShadow = fullShadowSplit[2];
var passwordShadow = fullShadowSplit[3];
//
var hash = sha512crypt.sha512crypt(passwordCheck, saltShadow)
//console.log(hash + '===' + fullShadow);
if (hash === fullShadow) {
console.log('LOG: oldPassCorrect');
//return 'oldPassCorrect';
response = 'oldPassCorrect';
return response;
break;
} else {
console.log('LOG: oldPassIncorrect');
//return 'oldPassCorrect';
response = 'oldPassIncorrect';
return response;
break;
}
}
}
});
}
console.log("Function response: " + checkPass('share', 'qwerty'));
Возможные дубликат: http://stackoverflow.com/q/14220321/1702990 – Sinkingpoint
К сожалению, это не тот же вопрос. –
Возможный дубликат [возвращает значения с помощью функции async в nodejs] (http://stackoverflow.com/questions/12554350/return-values-with-async-function-in-nodejs) –