add external validatepassword function
This commit is contained in:
@@ -91,11 +91,28 @@ app.all("/*", function (req, res, next) {
|
|||||||
} else return next();
|
} else return next();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const validatePassword = (email, password) => {
|
||||||
|
return new Promise(function (resolve, reject) {
|
||||||
|
connection.query(`SELECT * from user WHERE email = ${mysql.escape(email)} AND deactivated = 0`, function (err, rows) {
|
||||||
|
if (err) {
|
||||||
|
return reject("error querying the database - Please contact sys admin");
|
||||||
|
}
|
||||||
|
if (!rows.length) {
|
||||||
|
return resolve(false);
|
||||||
|
}
|
||||||
|
if (!bcrypt.compareSync(password, rows[0].password)) {
|
||||||
|
return resolve(false);
|
||||||
|
}
|
||||||
|
return resolve(rows[0]);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
passport.use('local-login', new LocalStrategy({
|
passport.use('local-login', new LocalStrategy({
|
||||||
usernameField: "email",
|
usernameField: "email",
|
||||||
passwordField: "password",
|
passwordField: "password",
|
||||||
passReqToCallback: true
|
passReqToCallback: true
|
||||||
}, function (req, email, password, done) {
|
}, async function (req, email, password, done) {
|
||||||
if (DEBUG) {
|
if (DEBUG) {
|
||||||
if (email === "test" && password === "test") {
|
if (email === "test" && password === "test") {
|
||||||
return done(null, {
|
return done(null, {
|
||||||
@@ -107,19 +124,18 @@ passport.use('local-login', new LocalStrategy({
|
|||||||
});
|
});
|
||||||
} else return done(null, false);
|
} else return done(null, false);
|
||||||
}
|
}
|
||||||
email = mysql.escape(email);
|
try {
|
||||||
connection.query(`SELECT * from user WHERE email = ${email} AND deactivated = 0`, function (err, rows) {
|
let user = await validatePassword(email, password);
|
||||||
if (err) {
|
if (user) {
|
||||||
return res.status(static.INTERNAL_SERVER_ERROR).send("error querying the database - Please contact sys admin");
|
return done(null, user);
|
||||||
}
|
}
|
||||||
if (!rows.length) {
|
else {
|
||||||
return done(null, false);
|
return done(null, false);
|
||||||
}
|
}
|
||||||
if (!bcrypt.compareSync(password, rows[0].password)) {
|
} catch (e) {
|
||||||
|
console.log(e);
|
||||||
return done(null, false);
|
return done(null, false);
|
||||||
}
|
}
|
||||||
return done(null, rows[0]);
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
));
|
));
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user